private SetupDiGetDeviceRegistryProperty ( |
||
deviceInfoSet | ||
deviceInfoData | SP_DEVINFO_DATA | |
property | int | |
propertyRegDataType | int | |
propertyBuffer | ||
propertyBufferSize | int | |
requiredSize | int | |
return | bool |
internal Guid GetProperty(Native.SP_DEVINFO_DATA devData, int property, Guid defaultValue) { if (devData == null) { throw new ArgumentNullException("devData"); } int propertyRegDataType = 0; int requiredSize; int propertyBufferSize = Marshal.SizeOf(typeof(Guid)); IntPtr propertyBuffer = Marshal.AllocHGlobal(propertyBufferSize); if (!Native.SetupDiGetDeviceRegistryProperty(_deviceInfoSet, devData, property, out propertyRegDataType, propertyBuffer, propertyBufferSize, out requiredSize)) { Marshal.FreeHGlobal(propertyBuffer); int error = Marshal.GetLastWin32Error(); if (error != Native.ERROR_INVALID_DATA) { throw new Win32Exception(error); } return(defaultValue); } Guid value = (Guid)Marshal.PtrToStructure(propertyBuffer, typeof(Guid)); Marshal.FreeHGlobal(propertyBuffer); return(value); }