プロセスの相互運用性

エミュレーション レイヤーを使用して、64 ビット Windows で Win32 ベースのアプリケーションを実行できます。 ARM 上のWindows 10には、x86-on-ARM64 エミュレーション レイヤーが含まれています。 詳細については、「 32 ビット アプリケーションの実行」を参照してください。

64 ビット Windows では、64 ビット プロセスで 32 ビットダイナミック リンク ライブラリ (DLL) を読み込むことができません。 さらに、32 ビット プロセスでは 64 ビット DLL を読み込めません。 ただし、64 ビット Windows では、64 ビットプロセスと 32 ビット プロセスの間 (同じコンピューター上とコンピューター間の両方) のリモート プロシージャ コール (RPC) がサポートされています。 64 ビット Windows では、アウトプロセス 32 ビット COM サーバーは 64 ビット クライアントと通信でき、アウトプロセスの 64 ビット COM サーバーは 32 ビット クライアントと通信できます。 したがって、COM 対応ではない 32 ビット DLL がある場合は、アウトプロセス COM サーバーでラップし、COM を使用して 64 ビット プロセスとの間の呼び出しをマーシャリングできます。

インプロセス サーバーは現在、 InprocServer レジストリ エントリを使用して登録されています。 64 ビット Windows では、64 ビットおよび 32 ビットのインプロセス サーバーで InprocServer32 エントリを使用する必要があります。

32 ビットから 64 ビットの境界を越えて使用されることのない、その性質上、コンピューターにローカルなハンドルを移植するには、INT_PTRまたはDWORD_PTR型ではなく、HANDLE_PTR型を使用します。 これには、 DWORD 値などのハンドルを渡す RPC インターフェイスの移植が含まれます。 64 ビット HANDLE_PTR は、ワイヤ上で 64 ビット (切り捨てられません) であるため、マッピングは必要ありません。 (32 ビット HANDLE_PTR は、ワイヤ上の 32 ビットです)。

詳細については、「 64 ビット互換インターフェイスの設計」を参照してください。