1

私はこの声明が言っているのを見つけました:

[ DllImport( "winspool.drv",CharSet=CharSet.Unicode,ExactSpelling=false, CallingConvention=CallingConvention.StdCall )]
public static extern long OpenPrinter (string pPrinterName,ref IntPtr phPrinter, int pDefault);

DLLImport コマンドであるため winspool.dll をインポートしなかった理由と、winspool.dll と winspool.drv の違いを知りたい

4

1 に答える 1

2

ファイルは、drv拡張子が異なる単なるダイナミック リンク ライブラリ (DLL) です。また、公開する操作に関して、OS によってさまざまな期待が課せられます。

ドライバーは、ソフトウェアとハ​​ードウェアの間のインターフェイス層を提供することを特に意図していますが、DLL はクラス + メソッドの単なる汎用モジュールです。

ドライバーを書いていないので、それ以上の説明はできません。

ただし、あなたに関する限り、ロードできるのは単なる DLL であり、そのエクスポートされたメソッドを呼び出すことができます。あなたが署名を知っているなら、それはそうです。

アップデート

もう少し調査すると、Winspool.drv が実際には Windows によってプロセスとしてシェル化されている可能性があります。

モジュールではなくモジュールからインポートが宣言された理由については、コードが書かれたときに私がそばにいなかったので、最終的には断固として答えることができません! ただし、最終的には、それらは必ずしも同じものであるとは限らないため、必ずしも同じエクスポートなどがあるとは限りません..drv.dll

于 2012-10-17T16:08:47.260 に答える