当前位置: 代码迷 >> 驱动开发 >> DeviceIoControl有关问题
  详细解决方案

DeviceIoControl有关问题

热度:42   发布时间:2016-04-28 11:08:51.0
DeviceIoControl问题
驱动:
RtlInitUnicodeString(&FilDevName,L "\\Device\\TdiFilter ");
RtlInitUnicodeString(&FilDevLink,L "\\DosDevices\\TdiFilter ");
//Create   Device
status   =   IoCreateDevice(pDriObj,0,NULL,FILE_DEVICE_UNKNOWN,0,TRUE,&g_DevObj);
//Create   SymbolicLink
status   =   IoCreateSymbolicLink(&FilDevLink,&FilDevName);
应用程序:
hFile   =   CreateFile( "\\\\.\\TdiFilter ",GENERIC_READ   |   GENERIC_WRITE,FILE_SHARE_READ   |   FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,NULL);
怎么hFIle总是INVALID_HANDLE_VALUE

------解决方案--------------------
唉 . 老大 ,你的代码有问题 .
IoCreateDevice(pDriObj,0,NULL,FILE_DEVICE_UNKNOWN,0,TRUE,&g_DevObj); 
其中第三个参数是你要创建的这个设备对象的名字 .你却用了"NULL" 应该用上面你声明的FilDevName作为参数.
这样, 接下来调用IoCreateSymbolicLink后 就可以将你的设备名和你的符号链接名连接在一起了. 接下来,你就可以使用
CreateFile("\\\\.\\TdiFilter",....... 来打开设备了.