After successfully registering a custom device interface in an MSVAD based device driver, I tried using SetupDiEnumDeviceInterfaces() in a user mode application to verify that I understood the concept. In the user mode test program I wrote: ==================================== // Get handle to relevant device information set HDEVINFO info = SetupDiGetClassDevs( pGuid, NULL, NULL, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE); if (info == INVALID_HANDLE_VALUE) { printf("No HDEVINFO available for this GUID\n"); return NULL; } // Get interface data for the requested instance SP_INTERFACE_DEVICE_DATA ifdata; ifdata.cbSize = sizeof(ifdata); if (!SetupDiEnumDeviceInterfaces( info, // HDEVINFO DeviceInfoSet NULL, // PSP_DEVINFO_DATA DeviceInfoData pGuid, // CONST GUID * InterfaceClassGuid instance, // DWORD MemberIndex &ifdata)) // PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData { ULONG lastError = GetLastError(); printf("No SP_INTERFACE_DEVICE_DATA for this GUID instance\n"); printf("GetLastError() returns: %d\n", lastError); SetupDiDestroyDeviceInfoList(info); return NULL; } ==================================== The pGuid contains the same exact GUID that was passed as the 2nd parameter to IoRegisterDeviceInterface() in the device driver's StartDevice(). I verified that this GUID exists in the registry under: HKLM\SYSTEM\CurrentControlSet\Control\DeviceClasses But nevertheless, while SetupDiGetClassDevs() succeeds, SetupDiEnumDeviceInterfaces() fails with GetLastError() code of 259 (ERROR_NO_MORE_ITEMS). Why? What could possibly be the problem in such trivial call? What is the "trick" that I am missing in properly using this function? BTW, I also tried using a different GUID - the ClassGUID in the .inf file, in case I misunderstood the meaning of the 3rd parameter to SetupDiEnumDeviceInterfaces() but that one failed too. I am stumped. How does one troubleshoot a problem like that? Thanks, Don ****************** WDMAUDIODEV addresses: Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx Subscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe Unsubscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe Moderator: mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx URL to WDMAUDIODEV page: http://www.wdmaudiodev.com/