Могу ли я проверить наличие другого устройства с помощью драйвера wdf? - PullRequest
0 голосов
/ 07 августа 2020

Есть ли хороший способ проверить наличие устройства вне текущего стека драйверов в структуре KMDF? Возможно, через что-то вроде имени объекта физического устройства. Я хочу знать, существует ли \Device\MyDeviceXXX от несвязанного драйвера. Кроме того, это устройство является программным, без аппаратного обеспечения.

1 Ответ

0 голосов
/ 13 августа 2020

Зависит от того, на каком 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 
}
...