コード例 #1
0
 public static unsafe extern bool SetupDiGetDriverInfoDetail(
     SafeDeviceInfoSetHandle deviceInfoSet,
     [Friendly(FriendlyFlags.In | FriendlyFlags.Optional)] SP_DEVINFO_DATA *deviceInfoData,
     [Friendly(FriendlyFlags.In | FriendlyFlags.Optional)] SP_DRVINFO_DATA *driverInfoData,
     [Friendly(FriendlyFlags.Bidirectional)] byte *driverInfoDetailData,
     int driverInfoDetailDataSize,
     out int requiredSize);
コード例 #2
0
ファイル: SetupApi.cs プロジェクト: santoshmenon/pinvoke
 public static extern unsafe bool SetupDiGetDeviceInterfaceDetail(
     SafeDeviceInfoSetHandle deviceInfoSet,
     ref SP_DEVICE_INTERFACE_DATA deviceInterfaceData,
     SP_DEVICE_INTERFACE_DETAIL_DATA *deviceInterfaceDetailData,
     int deviceInterfaceDetailDataSize,
     int *requiredSize,
     SP_DEVINFO_DATA *deviceInfoData);
コード例 #3
0
 public static extern unsafe bool SetupDiGetDeviceProperty(
     SafeDeviceInfoSetHandle deviceInfoSet,
     SP_DEVINFO_DATA *deviceInfoData,
     DEVPROPKEY *propertyKey,
     uint *propertyType,
     [Friendly(FriendlyFlags.Array | FriendlyFlags.Out | FriendlyFlags.Optional, ArrayLengthParameter = 5)] byte *propertyBuffer,
     uint propertyBufferSize,
     uint *requiredSize,
     SetupDiGetDevicePropertyFlags flags);
コード例 #4
0
 public static extern unsafe bool SetupDiGetDeviceProperty(
     SafeDeviceInfoSetHandle deviceInfoSet,
     SP_DEVINFO_DATA *deviceInfoData,
     DEVPROPKEY *propertyKey,
     uint *propertyType,
     byte *propertyBuffer,
     uint propertyBufferSize,
     uint *requiredSize,
     SetupDiGetDevicePropertyFlags flags);
コード例 #5
0
ファイル: SetupApi.Helpers.cs プロジェクト: zhuman/pinvoke
        public static unsafe IEnumerable <SP_DEVICE_INTERFACE_DATA> SetupDiEnumDeviceInterfaces(
            SafeDeviceInfoSetHandle lpDeviceInfoSet,
            SP_DEVINFO_DATA *deviceInfoData,
            Guid interfaceClassGuid)
        {
            // Copy out the value of the struct pointed to (if any) so that
            // the caller does not need to remember to keep the pointer fixed
            // for the entire enumeration.
            var deviceInfoDataCopy = deviceInfoData != null ? (SP_DEVINFO_DATA?)*deviceInfoData : null;

            return(SetupDiEnumDeviceInterfacesHelper(
                       lpDeviceInfoSet,
                       deviceInfoDataCopy,
                       interfaceClassGuid));
        }
コード例 #6
0
ファイル: SetupApi.Helpers.cs プロジェクト: zhuman/pinvoke
        public static unsafe string SetupDiGetDeviceInterfaceDetail(
            SafeDeviceInfoSetHandle deviceInfoSet,
            SP_DEVICE_INTERFACE_DATA interfaceData,
            SP_DEVINFO_DATA *deviceInfoData)
        {
            int requiredSize;

            // First call to get the size to allocate
            SetupDiGetDeviceInterfaceDetail(
                deviceInfoSet,
                ref interfaceData,
                null,
                0,
                &requiredSize,
                deviceInfoData);

            // As we passed an empty buffer we know that the function will fail, not need to check the result.
            var lastError = GetLastError();

            if (lastError != Win32ErrorCode.ERROR_INSUFFICIENT_BUFFER)
            {
                throw new Win32Exception(lastError);
            }

            fixed(byte *pBuffer = new byte[requiredSize])
            {
                var pDetail = (SP_DEVICE_INTERFACE_DETAIL_DATA *)pBuffer;

                pDetail->cbSize = SP_DEVICE_INTERFACE_DETAIL_DATA.ReportableStructSize;

                // Second call to get the value
                var success = SetupDiGetDeviceInterfaceDetail(
                    deviceInfoSet,
                    ref interfaceData,
                    pDetail,
                    requiredSize,
                    null,
                    null);

                if (!success)
                {
                    Marshal.ThrowExceptionForHR(Marshal.GetHRForLastWin32Error());
                    return(null);
                }

                return(SP_DEVICE_INTERFACE_DETAIL_DATA.GetDevicePath(pDetail));
            }
        }
コード例 #7
0
ファイル: SetupApi.cs プロジェクト: santoshmenon/pinvoke
 public static extern unsafe bool SetupDiEnumDeviceInfo(
     SafeDeviceInfoSetHandle deviceInfoSet,
     int memberIndex,
     SP_DEVINFO_DATA *deviceInfoData);
コード例 #8
0
ファイル: SetupApi.cs プロジェクト: santoshmenon/pinvoke
 public static extern unsafe bool SetupDiEnumDeviceInterfaces(
     SafeDeviceInfoSetHandle deviceInfoSet,
     [Friendly(FriendlyFlags.In | FriendlyFlags.Optional)] SP_DEVINFO_DATA *deviceInfoData,
     ref Guid interfaceClassGuid,
     int memberIndex,
     ref SP_DEVICE_INTERFACE_DATA deviceInterfaceData);
コード例 #9
0
 public static unsafe extern bool SetupDiSetSelectedDriver(
     SafeDeviceInfoSetHandle deviceInfoSet,
     [Friendly(FriendlyFlags.In | FriendlyFlags.Optional)] SP_DEVINFO_DATA *deviceInfoData,
     [Friendly(FriendlyFlags.Bidirectional | FriendlyFlags.Optional)] SP_DRVINFO_DATA *driverInfoData);
コード例 #10
0
 public static unsafe extern bool SetupDiEnumDriverInfo(
     SafeDeviceInfoSetHandle deviceInfoSet,
     [Friendly(FriendlyFlags.In | FriendlyFlags.Optional)] SP_DEVINFO_DATA *deviceInfoData,
     DriverType driverType,
     uint memberIndex,
     [Friendly(FriendlyFlags.Bidirectional)] SP_DRVINFO_DATA *driverInfoData);
コード例 #11
0
 public static unsafe extern bool SetupDiBuildDriverInfoList(
     SafeDeviceInfoSetHandle deviceInfoSet,
     [Friendly(FriendlyFlags.In | FriendlyFlags.Optional)] SP_DEVINFO_DATA *deviceInfoData,
     DriverType driverType);
コード例 #12
0
 public static unsafe extern bool SetupDiSetDeviceInstallParams(
     SafeDeviceInfoSetHandle deviceInfoSet,
     [Friendly(FriendlyFlags.In | FriendlyFlags.Optional)] SP_DEVINFO_DATA *deviceInfoData,
     [Friendly(FriendlyFlags.In)] SP_DEVINSTALL_PARAMS *deviceInstallParams);
コード例 #13
0
 public static unsafe extern bool SetupDiSetSelectedDevice(
     SafeDeviceInfoSetHandle deviceInfoSet,
     [Friendly(FriendlyFlags.In)] SP_DEVINFO_DATA *deviceInfoData);
コード例 #14
0
 public static unsafe extern bool SetupDiOpenDeviceInfo(
     SafeDeviceInfoSetHandle deviceInfoSet,
     string deviceInstanceId,
     IntPtr parent,
     SetupDiOpenDeviceInfoFlags openFlags,
     [Friendly(FriendlyFlags.Bidirectional)] SP_DEVINFO_DATA *deviceInfoData);
コード例 #15
0
 public static extern unsafe bool SetupDiEnumDeviceInfo(
     SafeDeviceInfoSetHandle deviceInfoSet,
     int memberIndex,
     [Friendly(FriendlyFlags.Bidirectional)] SP_DEVINFO_DATA *deviceInfoData);
コード例 #16
0
ファイル: SetupApi.cs プロジェクト: zodiacon/ManagedWindows
 unsafe public static extern bool SetupDiDeleteDeviceInfo(IntPtr DeviceInfoSet, SP_DEVINFO_DATA *DeviceInfoData);