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 VM上,\ Device \ 00000020是音频驱动程序的“物理设备对象名称属性。另外,我已经三遍检查了GUID_MEDIA_DEVINTERFACE确实是Media接口类GUID。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)