1

質問は基本的にこのスレッドのフォローアップです: 32 ビット プログラムで 64 ビット ドライバーを使用する。ウィンドウズ

64 ビット DLL のセットで使用される 64 ビット ドライバーを使用しているときに学んだように、32 ビット プロセスで DLL を呼び出すことはできません。これを回避するために、いくつかの面白いインターポーズ通信を使用します。

グラフィックス カードのような「標準デバイス」を使用している場合に、64 ビットから 32 ビットへの自動変換がどのように行われるかは不明です。Windows 64 ビット OS の 32 ビット アプリケーションは、プリンター ドライバーを使用したり、いくつかの Windows DLL を使用して GDI で何かを描画したりできるはずです。Microsoft は、グラフィックス カードまたはプリンタ用に 32 ビットから 64 ビット ハードウェア ドライバに変換する必要がありました。WoW64 がレジストリとファイル システムへのアクセスを行うことは知っていますが、標準ドライバーにも変換されますか?

具体的な質問は、ハードウェア用の 64 ビット WDM ドライバーがある場合、Windows が 64<->32 の変換を行うことで、これを 32 ビット アプリケーションで簡単に使用できるかということです。

4

1 に答える 1

2

「標準デバイス」は、Windows 自体が責任を負うため、「標準」と見なされます。64 ビット Windows の場合、64 ビットと 32 ビットの両方の DLL があることを意味します。32 ビット DLL は特殊であり、64 ビット カーネル (そのカーネル内のドライバーを含む) と通信できます。一般に、32 ビット DLL は 64 ビット DLL と対話しません。これは、後者の DLL をロードできる 64 ビット プロセスがないためです。

于 2009-03-25T13:20:32.117 に答える