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);
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);
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);
public static extern unsafe bool SetupDiGetDeviceProperty( SafeDeviceInfoSetHandle deviceInfoSet, SP_DEVINFO_DATA *deviceInfoData, DEVPROPKEY *propertyKey, uint *propertyType, byte *propertyBuffer, uint propertyBufferSize, uint *requiredSize, SetupDiGetDevicePropertyFlags flags);
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)); }
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)); } }
public static extern unsafe bool SetupDiEnumDeviceInfo( SafeDeviceInfoSetHandle deviceInfoSet, int memberIndex, SP_DEVINFO_DATA *deviceInfoData);
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);
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);
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);
public static unsafe extern bool SetupDiBuildDriverInfoList( SafeDeviceInfoSetHandle deviceInfoSet, [Friendly(FriendlyFlags.In | FriendlyFlags.Optional)] SP_DEVINFO_DATA *deviceInfoData, DriverType driverType);
public static unsafe extern bool SetupDiSetDeviceInstallParams( SafeDeviceInfoSetHandle deviceInfoSet, [Friendly(FriendlyFlags.In | FriendlyFlags.Optional)] SP_DEVINFO_DATA *deviceInfoData, [Friendly(FriendlyFlags.In)] SP_DEVINSTALL_PARAMS *deviceInstallParams);
public static unsafe extern bool SetupDiSetSelectedDevice( SafeDeviceInfoSetHandle deviceInfoSet, [Friendly(FriendlyFlags.In)] SP_DEVINFO_DATA *deviceInfoData);
public static unsafe extern bool SetupDiOpenDeviceInfo( SafeDeviceInfoSetHandle deviceInfoSet, string deviceInstanceId, IntPtr parent, SetupDiOpenDeviceInfoFlags openFlags, [Friendly(FriendlyFlags.Bidirectional)] SP_DEVINFO_DATA *deviceInfoData);
public static extern unsafe bool SetupDiEnumDeviceInfo( SafeDeviceInfoSetHandle deviceInfoSet, int memberIndex, [Friendly(FriendlyFlags.Bidirectional)] SP_DEVINFO_DATA *deviceInfoData);
unsafe public static extern bool SetupDiDeleteDeviceInfo(IntPtr DeviceInfoSet, SP_DEVINFO_DATA *DeviceInfoData);