[DllImport("CfgMgr32.dll", CharSet = CharSet.Unicode)]
public static extern UInt32 CM_Get_DevNode_Property(
UInt32 dnDevInst,
ref DEVPROPKEY PropertyKey,
out DEVPROPTYPE PropertyType,
IntPtr PropertyBuffer,
ref UInt32 PropertyBufferSize,
UInt32 ulFlags);
[DllImport("CfgMgr32.dll", CharSet = CharSet.Unicode)]
public static extern UInt32 CM_Get_DevNode_Property(
UInt32 dnDevInst,
ref DEVPROPKEY PropertyKey,
out DEVPROPTYPE PropertyType,
StringBuilder PropertyBuffer,
ref UInt32 PropertyBufferSize,
UInt32 ulFlags);
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;
}
struct DEVPROPKEY {
public Guid guid;
public UInt32 pid;
}
Property Keys are defined in devpkey.h (https://github.com/tpn/winsdk-10/blob/master/Include/10.0.16299.0/shared/devpkey.h)