1

COM 32 ビット アウト プロセス サーバーを 64 ビット プロセスでの GDI 描画に使用できますか?

4

1 に答える 1

1

はい、できます。GDI オブジェクト ハンドルとウィンドウ ハンドルの場合、下位 32 ビットのみが 64 ビット モードで使用されることが保証されているため、これらを 32 ビットと 64 ビットの間で安全に渡す必要があります。もちろん、COM サーバーはアウト オブ プロセスである必要があります。

このページから引用

64 ビット Windows では、アウトプロセス 32 ビット COM サーバーは 64 ビット クライアントと通信でき、アウトプロセス 64 ビット COM サーバーは 32 ビット クライアントと通信できます。したがって、COM に対応していない 32 ビット DLL がある場合は、それをアウトプロセス COM サーバーでラップし、COM を使用して 64 ビット プロセスとの間の呼び出しをマーシャリングできます。

同じくこちらのページから

Windows の 64 ビット バージョンは、相互運用性のために 32 ビット ハンドルを使用します。32 ビット アプリケーションと 64 ビット アプリケーションの間でハンドルを共有する場合は、下位 32 ビットのみが重要であるため、(64 ビットから 32 ビットにハンドルを渡す場合) ハンドルを切り捨てるか、ハンドルを符号拡張 ( 32 ビットから 64 ビットに渡す場合)。共有できるハンドルには、ウィンドウ (HWND) などのユーザー オブジェクトへのハンドル、ペンやブラシ (HBRUSH および HPEN) などの GDI オブジェクトへのハンドル、およびミューテックス、セマフォ、ファイル ハンドルなどの名前付きオブジェクトへのハンドルが含まれます。

于 2013-03-25T10:01:00.400 に答える