Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ windows后台处理程序究竟如何决定它的数据类型';它将发送到打印处理器吗?_C++_C_Windows_Printing_Wdk - Fatal编程技术网

C++ windows后台处理程序究竟如何决定它的数据类型';它将发送到打印处理器吗?

C++ windows后台处理程序究竟如何决定它的数据类型';它将发送到打印处理器吗?,c++,c,windows,printing,wdk,C++,C,Windows,Printing,Wdk,例如,如果您想在EMF中进行后台打印,通常情况下,勾选“高级打印功能”是有效的。但是,我注意到,在某些打印机驱动程序上,这不起作用(这并非意外,v3驱动程序并不强制支持它)。事实上,我在一个驱动程序上注意到,依赖于设备的设置(即DEVMODE结构的额外端块)决定了spool文件是否出现在EMF中。那么,后台打印程序如何确定要传递的数据类型呢 我查看了打印驱动程序DDI的函数和结构,没有找到任何与此相关的内容。在DrvDeviceCapabilities中有一个DC_EMF_COMPLIANT标志

例如,如果您想在EMF中进行后台打印,通常情况下,勾选“高级打印功能”是有效的。但是,我注意到,在某些打印机驱动程序上,这不起作用(这并非意外,v3驱动程序并不强制支持它)。事实上,我在一个驱动程序上注意到,依赖于设备的设置(即DEVMODE结构的额外端块)决定了spool文件是否出现在EMF中。那么,后台打印程序如何确定要传递的数据类型呢


我查看了打印驱动程序DDI的函数和结构,没有找到任何与此相关的内容。在
DrvDeviceCapabilities
中有一个
DC_EMF_COMPLIANT
标志,但该标志仅适用于Windows 95。后台处理程序在以后的系统上是如何实现的?

经过大量搜索,我发现驱动程序有足够的(但可能不是必要的)条件强制后台处理程序使用RAW。如果调用
DrvEscape
查询对
METAFILE\u驱动程序的支持,并且驱动程序返回0,那么后台处理程序将直接后台处理为原始。我发现的驱动程序就是这样做的。

经过多次搜索,我发现驱动程序有足够(但可能不是必要)的条件强制后台处理程序使用RAW。如果调用
DrvEscape
查询对
METAFILE\u驱动程序的支持,并且驱动程序返回0,那么后台处理程序将直接后台处理为原始。我发现的司机就是这样做的。

看起来这个问题已经被抛在脑后了:(这里有一个类似的问题:但答案只是说设置假脱机属性,这不可能是正确的,因为我观察到它依赖于设备独立设置。*设备依赖我的意思是说,不是独立看起来这个问题已经被抛到一边了:(这里有类似的问题:但答案只是说设置假脱机属性,这不可能是正确的,因为我观察到它依赖于设备独立的设置。*我的意思是依赖于设备,而不是独立的