使用CreateFile打开设备名称

我正在研究一个简单的设备驱动程序,我想用用户模式使用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下载)来检查。