阅读:1143回复:5
一个很菜的问题
请问在VXD文件中的输出语句
dout<<\"hello \"<<endl; 到底输出到哪里了?怎么看? |
|
|
沙发#
发布于:2002-03-05 17:38
估计是你的程序有问题,要么就是drivermonitor设置的channel有问题,
你还是把代码贴出来,大家帮你看一下,确信程序没问题以后再检查你的设置 |
|
|
板凳#
发布于:2002-03-05 21:22
那我就不好意思了 :D
//text.h中 #define DIOC_MY_IO CTL_CODE (FILE_DEVICE_UNKNOWN,1,METHOD_NEITHER,FILE_ANY_ACCESS) class TextDevice : public VDevice { public: virtual DWORD TEXTDeviceIoControl(PIOCTLPARAMS p); }; //text.cpp中 DWORD TextDevice::TEXTDeviceIoControl(PIOCTLPARAMS p) { switch (p->dioc_IOCtlCode) { case DIOC_OPEN:break; case DIOC_CLOSEHANDLE: break; case DIOC_MY_IO:dout<<\"hello world\"<<endl; } //dout<<\"hello world\"<<endl; return 0; } 在VC中main函数为: #include <winioctl.h> #include\"stdio.h\" #define DIOC_MY_IO CTL_CODE(FILE_DEVICE_UNKNOWN,1,METHOD_NEITHER,FILE_ANY_ACCESS) void main() { HANDLE hDevice; hDevice=CreateFile(\"D:\\\\vtoolsd\\\\bin\\\\text.vxd\",0,0,0,OPEN_EXISTING,FILE_FLAG_DELETE_ON_CLOSE,0); if( hDevice==INVALID_HANDLE_VALUE) { printf(\"open VXD errors\\n\"); exit (1); } DeviceIoControl(hDevice,DIOC_MY_IO,NULL,0,NULL,0,NULL,NULL); CloseHandle(hDevice); } :D :D :D :D :D :D |
|
|
地板#
发布于:2002-03-06 11:26
你把
virtual DWORD TEXTDeviceIoControl(PIOCTLPARAMS p); 改成 virtual DWORD OnW32DeviceIoControl(PIOCTLPARAMS p); 试一下 |
|
|
地下室#
发布于:2002-03-06 12:53
还是不行,用debugview没显示,开了debug monitor也没用。 :(
|
|
|
5楼#
发布于:2002-03-06 14:01
你还是用softice看一下程序是否执行到iocontorl了把
而且直接用softice看调试输出很方便 “softice的调试,如果是只想设个断点,或者看个变量这种初级动作,把symbol loader激活,读入你的程序,load了以后,ctl+d激活softice,用file命令调入你的源程序,在你希望的那一行设个断点就行了。要是条件触发或者是其他的用法,说起来挺麻烦的,最权威的是softice的联机文档,或者在QQ上聊。 ” |
|
|