createfile打开设备符号链接返回异常码2,系统找不到指定的文件
createfile打开设备符号链接返回错误码2,系统找不到指定的文件。
创建设备代码
RtlInitUnicodeString(&devName,L"\\Device\\KeyFilterDevice");
status = IoCreateDevice(
DriverObject,
sizeof(DEVICE_EXTENSION),
&devName,
kbdDevice->DeviceType,
kbdDevice->Characteristics,
FALSE,
&fdo);
创建符号链接代码
RtlInitUnicodeString(&symLinkName,L"\\??\\KeyFilterSymLinkName");
status = IoCreateSymbolicLink(&symLinkName,&devName);
应用程序通过createfile打开设备:
Hdevice = CreateFile(L"\\\\.\\KeyFilterSymLinkName",
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_WRITE|FILE_SHARE_READ,
NULL, // no security
OPEN_EXISTING,
0,
NULL );
返回返回错误码2,系统找不到指定的文件。
用winobj查看 \\Device下有设备名,GLOBAL??下有设备符号连接名,而且驱动是运行状态。不知道问题出在哪,真是头疼,求指教啊,在线等。。。。。
------解决方案--------------------
看看AddDevice中是否清除了DO_DEVICE_INITIALIZING标志
创建设备代码
RtlInitUnicodeString(&devName,L"\\Device\\KeyFilterDevice");
status = IoCreateDevice(
DriverObject,
sizeof(DEVICE_EXTENSION),
&devName,
kbdDevice->DeviceType,
kbdDevice->Characteristics,
FALSE,
&fdo);
创建符号链接代码
RtlInitUnicodeString(&symLinkName,L"\\??\\KeyFilterSymLinkName");
status = IoCreateSymbolicLink(&symLinkName,&devName);
应用程序通过createfile打开设备:
Hdevice = CreateFile(L"\\\\.\\KeyFilterSymLinkName",
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_WRITE|FILE_SHARE_READ,
NULL, // no security
OPEN_EXISTING,
0,
NULL );
返回返回错误码2,系统找不到指定的文件。
用winobj查看 \\Device下有设备名,GLOBAL??下有设备符号连接名,而且驱动是运行状态。不知道问题出在哪,真是头疼,求指教啊,在线等。。。。。
------解决方案--------------------
看看AddDevice中是否清除了DO_DEVICE_INITIALIZING标志