阅读:1916回复:2
请问错在何处?
请问这段代码有何错误?
Win32端程序: #include ... #define DIOC_MY_IO CTL_CODE (FILE_DEVICE_UNKNOWN,1,METHOD_NEITHER,FILE_ANY_ACCESS) void main(){ HANDLE hDevice; hDevice=CreateFile("f:\\vxd\\Sample.vxd",0,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);//这里能够成功打开! if(hDevice==INVALID_HANDLE_VALUE){ cout<<"Open VXD error!"<<GetLastError()<<endl; exit(1); } DeviceIoControl(hDevice,DIOC_MY_IO,NULL,0,NULL,0,NULL,NULL); CloseHandle(hDevice); } VXD端程序: DWORD AdpcmDevice::OnW32DeviceIoControl(PIOCTLPARAMS p) { PMAPDEVREQUEST pReq; switch(p->dioc_IOCtlCode) { case DIOC_OPEN: break; case DIOC_CLOSEHANDLE: break; case DIOC_MY_IO: dout<<"open is success!"<<endl; shell_message(,,,,,,); } return DEVIOCTL_NOERROR; } 问题是DeviceIoControl(hDevice,DIOC_MY_IO,NULL,0,NULL,0,NULL,NULL)返回值为0,总不成功,所以DebugView看不到VXD中的输出信息!那么DeviceIoControl()用时应该注意那些问题呢? |
|
沙发#
发布于:2001-05-13 19:19
用汇编可能可行,但是再nt/2K下不行。必须做驱动。
|
|
板凳#
发布于:2001-05-13 20:54
本站上有一库,可以实现在9x/2k下直接读写端口
|
|
|