我有兴趣为任意打印机调用DrvEnablePDEV
,以便检查设备信息。要做到这一点,我需要(除了很多其他事情之外的)HDEV
,documentation中描述为
GDI提供的设备句柄。此句柄必须用作某些GDI回调的输入,例如EngGetDriverName。
我有可能以某种方式获得引擎使用的这个句柄吗?或者我可以用它代替其他手柄吗? (虽然我猜这最多会有风险)
答案 0 :(得分:0)
事实证明,这是伪造打印驱动程序的DLL的好方法。注册表中的键HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Environments
下的值指向二进制名称。通过将我自己的驱动程序复制到打印驱动程序v3目录并模拟注册表中的名称,我可以获得函数及其所有参数,因为它们通过并对应于正确的驱动程序。那么我可以在打印驱动程序上调用CreateDC
或其他东西来访问驱动程序的入口点。
重新启动后台打印程序服务是注册表更改生效所必需的。
感谢Harry Johnston关于连接驱动程序DLL的想法,这让我走上了良好的轨道。