cance
驱动牛犊
驱动牛犊
  • 注册日期2002-03-15
  • 最后登录2002-06-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1555回复:8

彭礼孝的hello world程序怎么回事?

楼主#
更多 发布于:2002-05-10 10:22
小弟想把彭礼孝的“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”

请高手指点一下这个我这个程序错的哪里



谢谢!

最新喜欢:

qgrqgr
cance
驱动牛犊
驱动牛犊
  • 注册日期2002-03-15
  • 最后登录2002-06-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-05-10 10:23
另外小弟想把这个程序该成在w32程序里面的一个窗口里
显示“hello world”
该怎么改?
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2002-05-10 10:54
case DIOC_OPEN:break;

case DIOC_CLOSEHANDLE:break;
返回0,否则deviceiocontrol不会给你的VxD的。
VxD不能直接在win32的窗口写东西。等你深入学习了VxD后,就知道怎么在win32的窗口显示了。
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-05-10 11:42
彭礼孝是谁?
cance
驱动牛犊
驱动牛犊
  • 注册日期2002-03-15
  • 最后登录2002-06-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-05-10 11:48
我在vxd的代码段里有
case DIOC_OEPN:break;
case DIOC_CLOSEHANDLE:break;
的啊
我也知道vxd不能直接在win32程序里写
要用dioc_outbuf输出
可是这个怎么改呢?
我试着改了一次
没有成功
哪位大侠能不能看看我上面贴的代码对不对
cance
驱动牛犊
驱动牛犊
  • 注册日期2002-03-15
  • 最后登录2002-06-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-05-10 11:52
彭礼孝是“虚拟设备驱动程序开发起步与进阶”
的作者
这本书是人邮的
做入门的书我觉得还好
step by step
比较符合我这样的新手
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2002-05-10 12:13
我的意思是说,像这样:
case DIOC_OEPN:
case DIOC_CLOSEHANDLE:
   return 0;
   break;
...

cance
驱动牛犊
驱动牛犊
  • 注册日期2002-03-15
  • 最后登录2002-06-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-05-10 12:35
还是不行
在debug里面看不到任何信息
faint
怎么办啊
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
8楼#
发布于:2002-05-10 14:35
case DIOC_MY_IO:
   dout<<\"hello world!\"<<endl;
   return -1;
在App,检查DeviceIOControl的返回值是不是-1。如果是的话,你的VxD至少这部分应该是没有问题的。别忘了改回成return 0!!!
游客

返回顶部