驱动小牛
|
阅读:1530回复:1
请教ZwCreateFile的问题,谢谢了(USB转串口的)
我现在做的是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) |
驱动小牛
|
沙发#
发布于:2008-03-17 09:49
谁帮帮忙,看看。
|