プロセスの相互運用性
エミュレーション レイヤーを使用して、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 ビット互換インターフェイスの設計」を参照してください。