我正在研究一个简单的设备驱动程序,我想用用户模式使用IRP与驱动程序通信。
我无法打开设备驱动程序。 使用DeviceTree,我可以看到设备名称,例如\ Device \ MyDevice。
但是当我试图打开它像这样:
hand := CreateFile('\Device\MyDevice', GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
我总是得到INVALID_HANDLE_VALUE
和GetLastError是(系统找不到指定的path)
我做错了什么? 我知道驱动程序工作,因为我可以看到它在DebugView中运行和打印的东西。 那么有什么build议?
Tim Robinson,MVP(Windows SDK)提供了一个很好的解释:
形式
\Device\xxx
的名称是Win32无法访问的内部NT对象管理器名称。 如果它从\??\
目录创建了一个到\Device\MyDevice
的符号链接,您将只能访问您的设备。 在\\.\
Win32中,\??\
kernel目录中的对象通过\\.\
显示。 在DDK中使用Winobj(或从www.sysinternals.com下载)来检查。