zhoujiamurong
驱动小牛
驱动小牛
  • 注册日期2006-03-20
  • 最后登录2009-05-06
  • 粉丝4
  • 关注0
  • 积分1081分
  • 威望360点
  • 贡献值0点
  • 好评度215点
  • 原创分0分
  • 专家分0分
阅读:1530回复:1

请教ZwCreateFile的问题,谢谢了(USB转串口的)

楼主#
更多 发布于:2008-03-14 16:58
我现在做的是USB 的复合设备,想在上面弄两个串口出来,两个串口虚拟出来了,可以插拔,超级终端也识别了。

现在在想和硬件通讯,思路是这样的:在串口驱动的Create例程中,我开了一个系统线程(PsCreateSystemThread),准备ZwCreateFile,如果成功后关闭,然后ZwCreateFile 对应的Pipe,建立PIPE,不知道思路有没有问题?(如果有其他的好的思路也可以教教俺)

现在的状况是其中的一个虚拟出来的串口名字(deviceName)已经读出来了(使用IoGetDeviceInterfaces)
\??\USB#Vid_****&Pid_****&Mi_01#6&1e4e2402&0&1#{86e0d1e0-8089-11d0-9ce4-08003e301f73}

但是最后在ZwCreateFile一直失败,最后的代码如下:
  OBJECT_ATTRIBUTES objAttribute;
    IO_STATUS_BLOCK ioStatus;
    UNICODE_STRING deviceName;
InitializeObjectAttributes(&objAttribute,
        &deviceName,
        OBJ_CASE_INSENSITIVE,
        NULL,
        NULL);
    
    status = ZwCreateFile(pHandle,
        mode,
        &objAttribute,
        &ioStatus, // IoStatusBlock
        0, // AllocationSize
        FILE_ATTRIBUTE_DEVICE, // FileAttributes [FILE_ATTRIBUTE_DEVICE(0xC000000D)]
        0, // exclusive
        FILE_OPEN, // open exist
        0,//FILE_SYNCHRONOUS_IO_NONALERT,
        NULL,
        0);
    DebugPrint(("ZwCreateFile return:0x%x, ioStatus=%d\n", status, ioStatus.Status));

一直打印ZwCreateFile return:0xc0000001, ioStatus=0,为什么总是失败呢?

看错误定义是
#define STATUS_UNSUCCESSFUL              ((NTSTATUS)0xC0000001L)
zhoujiamurong
驱动小牛
驱动小牛
  • 注册日期2006-03-20
  • 最后登录2009-05-06
  • 粉丝4
  • 关注0
  • 积分1081分
  • 威望360点
  • 贡献值0点
  • 好评度215点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-03-17 09:49
谁帮帮忙,看看。
游客

返回顶部