/// <summary> /// The get device interfaces. /// </summary> /// <param name="deviceInformationSetHandle"> /// The device information set handle. /// </param> /// <param name="deviceInfoData"> /// The device Info Data. /// </param> /// <param name="guid"> /// The guid. /// </param> /// <returns> /// The <see> /// <cref>IEnumerable</cref> /// </see> /// . /// </returns> public IEnumerable <DeviceInterface> GetDeviceInterfaces(IntPtr deviceInformationSetHandle, DeviceInfoData deviceInfoData, Guid guid) { var memberIndex = 0U; bool success; if (IsHandleInvalid(deviceInformationSetHandle)) { yield break; } do { var deviceInterfaceData = _deviceInterfaceDataFactory.Create(); success = UnsafeNativeMethods.SetupDiEnumDeviceInterfaces(deviceInformationSetHandle, deviceInfoData, ref guid, memberIndex++, deviceInterfaceData); if (success) { yield return(_deviceInterfaceFactory.Create(deviceInformationSetHandle, deviceInterfaceData)); } }while (success); }