tianjun
驱动牛犊
驱动牛犊
  • 注册日期2002-04-23
  • 最后登录2002-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1140回复:5

调试彭礼孝的hello world时已经生成了VXD 但在DEBUG MONITOR中看不到输出

楼主#
更多 发布于:2002-04-24 14:17
本人初学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

最新喜欢:

ameiamei
长乐未央
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-04-24 15:03
你在单步调试时发现CreateFile返回的句柄正确吗?
你需要把*.vxd文件拷到你的应用程序目录下。
Tom_lyd
lixunhuan
驱动牛犊
驱动牛犊
  • 注册日期2002-03-08
  • 最后登录2002-04-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-04-24 16:20
Tom_lyd
控制台和vxd是在同一目录下没错.
请问在vc和vtoolsd中是否有设置不正确的地方
请费心一阅
不胜感激之至
力循环
tianjun
驱动牛犊
驱动牛犊
  • 注册日期2002-04-23
  • 最后登录2002-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-04-25 15:46
怎么没人肯屈尊看看呢,真是人心不古 :D
长乐未央
tianjun
驱动牛犊
驱动牛犊
  • 注册日期2002-04-23
  • 最后登录2002-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-04-25 15:52
对vxd 我可真是要失去信心啦,这么一个简单的程序都无法调通,往后……真不敢想象。路漫漫其修远兮,我可该怎样去求索,哪位大侠请指点迷津,我要找一盏指路的明灯
长乐未央
mailzdw2002
驱动牛犊
驱动牛犊
  • 注册日期2002-05-09
  • 最后登录2003-12-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-05-09 15:40
你可以把CreateFile中的\"\\\\\\\\.\\\\**.vxd\"改为\"**.vxd\"试试。
我在例2碰到此问题的,改过后就好了。
游客

返回顶部