0

有没有一种好方法可以检查 KMDF 框架中当前驱动程序堆栈之外的设备是否存在?也许通过物理设备对象名称之类的东西。我想知道是否\Device\MyDeviceXXX存在不相关的驱动程序。此外,该设备是纯软件设备,不涉及硬件。

4

1 回答 1

0

取决于您在哪个 IRQL 上运行。在 PASSIVE_LEVEL 上,您可以尝试打开文件,例如:

UNICODE_STRING usname;
IO_STATUS_BLOCK iostatus;
OBJECT_ATTRIBUTES oa;
HANDLE hfile=NULL;

RtlInitUnicodeString(&usname, L"\\Device\\NDMP2"); // specify your device name here!!!
InitializeObjectAttributes(&oa, &usname, OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE, NULL, NULL);
NTSTATUS status = ZwOpenFile(&hfile, GENERIC_READ, &oa, &iostatus, 0, 0);
if (status == 0 && hfile)
{
    // opened OK - device exists
    ZwClose(hfile);
}
else
{
    // no such device and/or error 
}
于 2020-08-13T18:48:46.797 回答