我正在开发一个简单的设备驱动程序,我希望使用IRP从用户模式与驱动程序通信。
我无法打开设备驱动程序。使用DeviceTree我能够看到设备名称,例如\ Device \ MyDevice。
但是当我试图像这样打开它时:
hand := CreateFile('\Device\MyDevice', GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
我总是得到INVALID_HANDLE_VALUE
而GetLastError是(系统找不到指定的路径)
我做错了什么?我知道驱动程序有效,因为我可以看到它在DebugView中运行和打印。那么任何提示?
答案 0 :(得分:9)
这是Tim Robinson, MVP (Windows SDK)的一个很好的解释:
表单
\Device\xxx
的名称是内部NT对象管理器名称 Win32无法访问。您将只能访问您的设备 从\Device\MyDevice
目录创建指向\??\
的符号链接。对象 在\??\
内核目录中,在Win32中显示\\.\
。使用Winobj DDK(或从www.sysinternals.com下载)进行检查。