Desktop Functions:

   Smart Device Functions:

Show Recent Changes
Subscribe (RSS)
Misc. Pages
Helpful Tools
Suggested Reading
Website TODO List
Support Forum
Download Visual Studio Add-In

Terms of Use
Privacy Policy
cm_get_devnode_registry_property (setupapi)
The CM_Get_DevNode_Registry_Property function retrieves a specified device property from the registry.

C# Signature:

[DllImport("setupapi.dll", SetLastError=true)]
public static extern int CM_Get_DevNode_Registry_Property(
  uint dnDevInst,
  uint ulProperty,
  out Microsoft.Win32.RegistryValueKind pulRegDataType,
  IntPtr Buffer,
  ref uint pulLength,
  uint ulFlags);

VB Signature:

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

User-Defined Types:


Alternative Managed API:

Do you know one? Please contribute it!


In most cases you can use SetupDiGetDeviceRegistryProperty.

Also Microsoft.Win32.RegistryValueKind only contains enumerations for the basic kinds.

This function is reserved for system use. Do not use this function in your class installers, co-installers, or device installation applications. Use device installation functions instead.

Tips & Tricks:

Please add some!

Sample Code:

// The following code shows how to grab the parent device's driver name. The devinfo_data.DevInst is
// from SetupDiEnumDeviceInterfaces and SetupDiGetDeviceInterfaceDetail so please see those examples

string driver_name;

uint parent;
if (CR_SUCCESS == CM_Get_Parent(out parent, devinfo_data.DevInst, 0))
   Microsoft.Win32.RegistryValueKind kind;
   uint length = 0;
   CM_Get_DevNode_Registry_Property(devinst, CM_DRP_DRIVER, out kind, IntPtr.Zero, ref length, 0);

   if (length > 0)
     IntPtr buffer = Marshal.AllocHGlobal((int)length);
     if (CR_SUCCESS == CM_Get_DevNode_Registry_Property(devinst, CM_DRP_DRIVER, out kind, buffer, ref length, 0))
       driver_name = Marshal.PtrToStringAnsi(buffer);


Please edit this page!

Do you have...

  • helpful tips or sample code to share for using this API in managed code?
  • corrections to the existing content?
  • variations of the signature you want to share?
  • additional languages you want to include?

Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing supporting types needed for this API (structures, delegates, and more).

Access directly from VS:
Terms of Use
Edit This Page
Find References
Show Printable Version