阅读:2482回复:7
打印机驱动
win2k ddk中说,在同一次打印事务中,DrvStartDoc应该只会被调用一次,可是我去发现在我得driver中,该函数会被多次调用,但是DrvEndDoc却只调用了一次?还有,我在UI中设置了一个选项,然后希望通过devmode中的dmReserved1传递到Render中,可以我在render中去那不到该值,不知道如何修改或者其他的解决方法
|
|
|
沙发#
发布于:2002-11-14 09:30
DrvStartDoc调用的次数随应用程序不定,所以在这里面保存状态信息的话要小心校验,最好不要有状态转换之类的代码。
对于DDK没有说可以使用的保留位,如果在例子代码中也没见到被使用,就不要用,因为有可能会被清零 |
|
板凳#
发布于:2002-11-14 09:33
如果要从ui传递什么值到render,那就用注册表了
|
|
地板#
发布于:2002-11-14 12:58
我已经用reserved1实现了,不过你的方法不错
|
|
|
地下室#
发布于:2003-03-13 03:26
2000ddk下的 oemdll\\oemuni\\devmode.cpp中有一段出错了
应是 BOOL MakeOEMDevmodeValid(POEMDEV pOEMDevmode) { if(NULL == pOEMDevmode) { return FALSE; } // ASSUMPTION: pOEMDevmode is large enough to contain OEMDEV structure. // Make sure that dmOEMExtra indicates the current OEMDEV structure. pOEMDevmode->dmOEMExtra.dwSize = sizeof(OEMDEV); pOEMDevmode->dmOEMExtra.dwSignature = OEM_SIGNATURE; pOEMDevmode->dmOEMExtra.dwVersion = OEM_VERSION; // Set driver data. ///////就是指这一句 if(pOEMDevmode->dwDriverData > 100) { pOEMDevmode->dwDriverData = 0; } return TRUE; } |
|
5楼#
发布于:2003-03-19 11:00
startdoc是由ap决定调的,像world之类的东西会掉n多次,要自己加标志位验证 :)
|
|
6楼#
发布于:2003-03-19 12:38
也许你的driver不是按照ddk标准开发的
|
|
7楼#
发布于:2003-03-20 11:10
只要ap调startdoc,driver就会进drvstartdoc,不是你能控制的
|
|