IoGetDeviceInterfaces успешно возвращает пустой список имен

DEFINE_GUID(GUID_MEDIA_DEVINTERFACE, 0x4d36e96c, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);

//---    

PAGED_CODE();
    WDF_IO_TARGET_OPEN_PARAMS  openParams;
    UNICODE_STRING     uniName_read;
    NTSTATUS ntStatus = STATUS_INVALID_PARAMETER;
    PFILE_OBJECT* pRealAudioFileObject = NULL;
    PDEVICE_OBJECT* pRealAudioDeviceObject = NULL;
    PZZWSTR symbolicLinkList = NULL;
    UNICODE_STRING uniAudioDeviceName;

        RtlInitUnicodeString(&uniName_read, L"\\Device\\00000020");
        
        ntStatus = IoGetDeviceObjectPointer(                     // this one fails should it matter (0xc0000034 - STATUS_OBJECT_NAME_NOT_FOUND)
            &uniName_read,
            FILE_READ_DATA,
            pRealAudioFileObject,
            pRealAudioDeviceObject);
        
        ntStatus = IoGetDeviceInterfaces(
            &GUID_MEDIA_DEVINTERFACE,
            NT_SUCCESS(ntStatus)  ? *pRealAudioDeviceObject : NULL,
            DEVICE_INTERFACE_INCLUDE_NONACTIVE,
            &symbolicLinkList
        );

        if (!NT_SUCCESS(ntStatus))
            goto error;

symbolicLinkList возвращается пустой... почему?

Я использую виртуальную машину Virtualbox Win10, а \Device\00000020 - это свойство имени объекта физического устройства для аудиодрайвера. Также я трижды проверил, что GUID_MEDIA_DEVINTERFACE на самом деле это GUID класса медиа-интерфейса.

0 ответов

Другие вопросы по тегам