SetupDiGetDeviceProperty (setupapi)
Last changed: -109.42.113.142

.
Summary
The SetupDiGetDeviceProperty function retrieves a device instance property.

Vista and Windows 7 only. DEVPROPKEY

C# Signature:

[DllImport("setupapi.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern unsafe bool SetupDiGetDeviceProperty(
     IntPtr deviceInfoSet,
     ref SP_DEVINFO_DATA DeviceInfoData,
     ref DEVPROPKEY propertyKey,
     out UInt32 propertyType,
     StringBuilder propertyBuffer,
     UInt32 propertyBufferSize,
     out UInt32 requiredSize,
     UInt32 flags);

static void DEFINE_DEVPROPKEY(out DEVPROPKEY key, UInt32 l, UInt16 w1, UInt16 w2, Byte b1, Byte b2, Byte b3, Byte b4, Byte b5, Byte b6, Byte b7, Byte b8, DEVPROPID pid)
{
     key.fmtid = new Guid(l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8);
     key.pid = pid;
}

VB Signature:

Declare Function SetupDiGetDeviceProperty Lib "setupapi.dll" (TODO) As TODO

User-Defined Types:

[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct DEVPROPKEY
{
     public DEVPROPGUID fmtid;
     public DEVPROPID pid;
}

Alternative Managed API:

Do you know one? Please contribute it!

Notes:

None.

Tips & Tricks:

Property Keys are defined in devpkey.h (https://github.com/tpn/winsdk-10/blob/master/Include/10.0.16299.0/shared/devpkey.h)

Sample Code:

http://stackoverflow.com/questions/4097000/how-do-i-disable-a-system-device-programatically

Documentation