Пример #1
0
        /// <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);
        }