阅读:1555回复:8
彭礼孝的hello world程序怎么回事?
小弟想把彭礼孝的“hello world”程序改成了
在window窗口下点击一个按键, 然后在debug view里显示“hello world” 按键对应的程序如下: void CTestDlg::OnOK() { // TODO: Add extra validation here HANDLE hDevice; hDevice=CreateFile(\"\\\\\\\\.\\\\w32io.vxd\",0,0,0,OPEN_EXISTING,FILE_FLAG_DELEETE_ ON_CLOSE,0); if(hDevice==INVALID_HANDLE_VALUE) { m_nEdit=\"error\"; UpdateData(false); } else { DeviceIoControl(hDevice,DIOC_MY_IO,NULL,0,NULL,0,NULL,NULL); m_nEdit=\"good!\"; UpdateData(false); } CloseHandle(hDevice); // CDialog::OnOK(); } vxd的cpp程序如下: 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; } windows窗口里显示为:good, 可是在debugview里面无法显示“hello world” 请高手指点一下这个我这个程序错的哪里 谢谢! |
|
最新喜欢:qgr |
沙发#
发布于:2002-05-10 10:23
另外小弟想把这个程序该成在w32程序里面的一个窗口里
显示“hello world” 该怎么改? |
|
板凳#
发布于:2002-05-10 10:54
case DIOC_OPEN:break;
case DIOC_CLOSEHANDLE:break; 返回0,否则deviceiocontrol不会给你的VxD的。 VxD不能直接在win32的窗口写东西。等你深入学习了VxD后,就知道怎么在win32的窗口显示了。 |
|
地板#
发布于:2002-05-10 11:42
彭礼孝是谁?
|
|
地下室#
发布于:2002-05-10 11:48
我在vxd的代码段里有
case DIOC_OEPN:break; case DIOC_CLOSEHANDLE:break; 的啊 我也知道vxd不能直接在win32程序里写 要用dioc_outbuf输出 可是这个怎么改呢? 我试着改了一次 没有成功 哪位大侠能不能看看我上面贴的代码对不对 |
|
5楼#
发布于:2002-05-10 11:52
彭礼孝是“虚拟设备驱动程序开发起步与进阶”
的作者 这本书是人邮的 做入门的书我觉得还好 step by step 比较符合我这样的新手 |
|
6楼#
发布于:2002-05-10 12:13
我的意思是说,像这样:
case DIOC_OEPN: case DIOC_CLOSEHANDLE: return 0; break; ... |
|
7楼#
发布于:2002-05-10 12:35
还是不行
在debug里面看不到任何信息 faint 怎么办啊 |
|
8楼#
发布于:2002-05-10 14:35
case DIOC_MY_IO:
dout<<\"hello world!\"<<endl; return -1; 在App,检查DeviceIOControl的返回值是不是-1。如果是的话,你的VxD至少这部分应该是没有问题的。别忘了改回成return 0!!! |
|