IoGetDeviceInterfaces returns NT_SUCCESS and an empty list

Hi,

there is another thread here with the same issue, couldn’t work it out. My code:

DEFINE_GUID(GUID_MEDIA_DEVINTERFACE, 0x4d36e96c, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);
...
	UNICODE_STRING     uniName_read;
	NTSTATUS ntStatus = STATUS_INVALID_PARAMETER;
	PZZWSTR symbolicLinkList = NULL;
	PFILE_OBJECT pRealAudioFileObject = NULL;
	PDEVICE_OBJECT pRealAudioDeviceObject = NULL;

	ntStatus = IoGetDeviceInterfaces(
		&GUID_MEDIA_DEVINTERFACE,
		NULL,
		DEVICE_INTERFACE_INCLUDE_NONACTIVE,
		&symbolicLinkList
	);

	size_t len = RtlStringCchLength(symbolicLinkList, 99999);

	if (!NT_SUCCESS(ntStatus) || !symbolicLinkList || 0 == len)
		return ntStatus;

Windbg shows just an ‘’ for symbolicLinkList. The GUID is correct for SysVAD driver (my target), triple checked, and the sysvad driver is installed on the machine. What is going on here ?

Thank you

The GUID you’ve supplied is the INSTALL class for media-class devices. It is not a device interface. Have you actually modified your SysVad to register that GUID as a device interface and then enable it?

1 Like

Also note that RtlStringCchLength will return the length of the first string, it isn’t multi-sz aware.