2014-02-11 45 views
5

我正在处理一个简单的设备驱动程序,我想与使用IRP的用户模式的驱动程序进行通信。使用CreateFile打开设备名称

我无法打开设备驱动程序。使用DeviceTree我能够看到设备名称,例如\ Device \ MyDevice。

但是当我尝试打开它就像这样:

hand := CreateFile('\Device\MyDevice', GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); 

我总是INVALID_HANDLE_VALUE并且GetLastError是(系统找不到指定的路径)

我做错了吗?我知道驱动程序的工作原理,因为我可以看到它在DebugView中运行并打印了一些东西。那么有什么提示?

enter image description here

+0

我想设备的路径是错误的。你怎么检查它? –

+0

不应该有双反斜杠('\\ Device \ MyDevice')? – TLama

+0

@TLama我得到的网络路径没有找到那种方式 – opc0de

回答

7

下面是Tim Robinson, MVP (Windows SDK)一个很好的解释:

形式 \Device\xxx

名称是内部NT对象管理器的名称,其是 无法进入Win32的。如果 创建了\??\目录中\Device\MyDevice的符号链接,则只能访问设备。对象 在\??\内核目录中通过Win32中的\\.\显示。使用Winobj的 DDK(或从www.sysinternals.com下载)进行检查。

+0

我现在明白了,非常感谢! – opc0de