4

これは中途半端なプログラミングの質問です。まず、PCI-Express カードと 32/64 ビット ドライバを用意しました。ターゲット オペレーティング システムは、Windows 64 ビット システムである必要があります。Vista64 では、すべてのドライバーが認定された 64 ビット ドライバーでなければならないことを読みました。これは 64 ビット オペレーティング システムでの一般的な制限ですか? これは "XP 64" または任意の Linux システムにも適用されますか?

簡単にするために、Vista64 で PCIe カードに 64 ビット ドライバを使用し、カードの機能を使用するための 64 ビット DLL がたくさんあるとします。反対側には、PCIe デバイスを使用する必要がある大規模なレガシー 32 ビット exe プログラムがあります。プログラムを 64 ビットに変換するのは、本当に大変な作業です。

では、その 32 ビット プログラムと 64 ビット ドライバーを組み合わせるにはどうすればよいでしょうか? 32/64 ビット バイナリと DLL を混在させることはまったく不可能であると読みましたが、これは私には信じがたいことです。32ビットアプリ内からVista64でドキュメントを印刷できると確信しており、Windowsはこれを何らかの形で64ビットプリンタードライバーにラップします。

4

3 に答える 3

3

64 ビット認証は Vista でのみ必要です。Windows 以外のプラットフォームの認証機関はありません。また、XP や Windows Server が認証をチェックするとは思えません (確かではありませんが、使用しているサービス パックによって異なる場合があります)。

Windows API 経由でドライバーを使用している場合、問題はありません。Windows は、カーネルで 32<->64 ビットの変換を行います。独自のプロセス内でドライバーをロードしようとしている場合、おそらくそれは不可能です。Dirk が言うように、独自のプロセス内で実行し、COM サーバーを介して通信する必要があります。より高い特権の実行レベルでドライバーを実行する必要があり、ユーザー モードからドライバーを呼び出したい場合、どのような手順を踏まなければならないかわかりません。

うまくいけば、64 ビット DLL が 32 ビット API を提供するか、Windows が標準ドライバー インターフェイスを提供します (ディスプレイやネットワーク カードなどの一般的な I/O デバイスの場合)。

于 2009-03-02T16:41:26.337 に答える