阅读:1140回复:5
调试彭礼孝的hello world时已经生成了VXD 但在DEBUG MONITOR中看不到输出
本人初学vxd在调试彭礼孝的hello world时已经生成了VXD,与VXD通讯的控制台程序也已经编译通过,但是执行控制台程序时总出现 OPEN VXD ERROR,不知道什么原因,请各位大侠不吝赐教。在DEBUG MONITOR中也看不到输出。急死我啦。debug monitor中出现的提示为error(11 )an expected error occoured 另打开vxd时提示为
select file statrt driver to start the drivrer 源代码如下 哪位大侠费点时间给看看小弟先谢啦 WIN32的控制台程序HELLO.CPP #include<iostream.h> #include<windows.h> #include<winioctl.h> #define DIOC_MY_IO CTL_CODE(FILE_DEVICE_UNKNOWN,1,METHOD_NEITHER,FILE_ANY_ACCESS) void main() { HANDLE hDevice; hDevice=CreateFile(\"\\\\\\\\.\\\\w32io.vxd\",0,0,0,OPEN_EXISTING,FILE_FLAG_DELETE_ON_CLOSE,0); if(hDevice==INVALID_HANDLE_VALUE) { cout<<\"open vxd error\"<<endl; exit(1); } DeviceIoControl(hDevice,DIOC_MY_IO,NULL,0,NULL,0,NULL,NULL); CloseHandle(hDevice); } vxd的源代码 // W32IO.cpp - main module for VxD W32IO #define DEVICE_MAIN #include \"w32io.h\" Declare_Virtual_Device(W32IO) #undef DEVICE_MAIN W32ioVM::W32ioVM(VMHANDLE hVM) : VVirtualMachine(hVM) {} W32ioThread::W32ioThread(THREADHANDLE hThread) : VThread(hThread) {} DWORD W32ioDevice::OnW32DeviceIoControl(PIOCTLPARAMS p) { switch (p->dioc_IOCtlCode) { case DIOC_OPEN:break; case DIOC_CLOSEHANDLE:break; case DIOC_MY_IO:dout<<\"hello world\"<<endl; } return 0; } vxd的头文件 // W32IO.h - include file for VxD W32IO #include <vtoolscp.h> #define DEVICE_CLASS W32ioDevice #define W32IO_DeviceID UNDEFINED_DEVICE_ID #define W32IO_Init_Order UNDEFINED_INIT_ORDER #define W32IO_Major 1 #define W32IO_Minor 0 #define DIOC_MY_IO CTL_CODE(FILE_DEVICE_UNKNOWN,1,METHOD_NEITHER,FILE_ANY_ACCESS) class W32ioDevice : public VDevice { public: virtual DWORD OnW32DeviceIoControl(PIOCTLPARAMS p); }; class W32ioVM : public VVirtualMachine { public: W32ioVM(VMHANDLE hVM); }; class W32ioThread : public VThread { public: W32ioThread(THREADHANDLE hThread); }; 制造文件 # W32IO.mak - makefile for VxD W32IO DEVICENAME = W32IO FRAMEWORK = CPP DEBUG = 1 OBJECTS = w32io.OBJ !include $(VTOOLSD)\\include\\vtoolsd.mak !include $(VTOOLSD)\\include\\vxdtarg.mak w32io.OBJ: w32io.cpp w32io.h |
|
最新喜欢:amei
|
沙发#
发布于:2002-04-24 15:03
你在单步调试时发现CreateFile返回的句柄正确吗?
你需要把*.vxd文件拷到你的应用程序目录下。 |
|
|
板凳#
发布于:2002-04-24 16:20
Tom_lyd
控制台和vxd是在同一目录下没错. 请问在vc和vtoolsd中是否有设置不正确的地方 请费心一阅 不胜感激之至 |
|
|
地板#
发布于:2002-04-25 15:46
怎么没人肯屈尊看看呢,真是人心不古 :D
|
|
|
地下室#
发布于:2002-04-25 15:52
对vxd 我可真是要失去信心啦,这么一个简单的程序都无法调通,往后……真不敢想象。路漫漫其修远兮,我可该怎样去求索,哪位大侠请指点迷津,我要找一盏指路的明灯
|
|
|
5楼#
发布于:2002-05-09 15:40
你可以把CreateFile中的\"\\\\\\\\.\\\\**.vxd\"改为\"**.vxd\"试试。
我在例2碰到此问题的,改过后就好了。 |
|