如何获取传递给DrvEnablePDEV的属于GDI引擎的“逻辑设备句柄”HDEV?

时间:2017-05-02 03:39:24

标签: winapi gdi printers wdk

我有兴趣为任意打印机调用DrvEnablePDEV,以便检查设备信息。要做到这一点,我需要(除了很多其他事情之外的)HDEVdocumentation中描述为

  

GDI提供的设备句柄。此句柄必须用作某些GDI回调的输入,例如EngGetDriverName。

我有可能以某种方式获得引擎使用的这个句柄吗?或者我可以用它代替其他手柄吗? (虽然我猜这最多会有风险)

1 个答案:

答案 0 :(得分:0)

事实证明,这是伪造打印驱动程序的DLL的好方法。注册表中的键HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Environments下的值指向二进制名称。通过将我自己的驱动程序复制到打印驱动程序v3目录并模拟注册表中的名称,我可以获得函数及其所有参数,因为它们通过并对应于正确的驱动程序。那么我可以在打印驱动程序上调用CreateDC或其他东西来访问驱动程序的入口点。

重新启动后台打印程序服务是注册表更改生效所必需的。

感谢Harry Johnston关于连接驱动程序DLL的想法,这让我走上了良好的轨道。