1

我发现这句话说:

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

我想知道为什么它没有导入winspool.dll,因为它是一个DLLImport 命令,winspool.dll 和winspool.drv 有什么区别

4

1 回答 1

2

文件drv只是具有不同扩展名的动态链接库 (DLL)。操作系统也会对它公开的操作有不同的期望。

驱动程序专门用于在软件和硬件之间提供一些接口层,而 DLL 只是类+方法的通用模块。

如果没有编写驱动程序,我将无法提供比这更多的说明。

然而,就您而言,它只是一个您可以加载的 DLL,然后您可以调用其导出的方法。如果你知道签名,那就是。

更新

从更多的研究来看 - Winspool.drv 实际上可能被 Windows 封装为一个进程。

至于为什么.drv模块而不是.dll模块声明导入,我最终无法明确回答,因为编写代码时我不在!但最终,它们不一定是相同的东西,因此不一定有相同的出口等。

于 2012-10-17T16:08:47.260 回答