Package com.sun.jna.platform.win32

## Interface Cfgmgr32

All Superinterfaces:
  `Library`

    public interface Cfgmgr32
    extends Library

Windows Cfgmgr32.

Author:
  widdis[at]gmail[dot]com

### Nested Class Summary

### Nested classes/interfaces inherited from interface com.sun.jna.Library

`Library.Handler`

### Field Summary

Fields
`static int` `CM_DRP_ADDRESS`
`static int` `CM_DRP_BASE_CONTAINERID`
`static int` `CM_DRP_BUSNUMBER`
`static int` `CM_DRP_BUSTYPEGUID`
`static int` `CM_DRP_CAPABILITIES`
`static int` `CM_DRP_CHARACTERISTICS`
`static int` `CM_DRP_CLASS`
`static int` `CM_DRP_CLASSGUID`
`static int` `CM_DRP_COMPATIBLEIDS`
`static int` `CM_DRP_CONFIGFLAGS`
`static int` `CM_DRP_DEVICE_POWER_DATA`
`static int` `CM_DRP_DEVICEDESC`
`static int` `CM_DRP_DEVTYPE`
`static int` `CM_DRP_DRIVER`
`static int` `CM_DRP_ENUMERATOR_NAME`
`static int` `CM_DRP_EXCLUSIVE`
`static int` `CM_DRP_FRIENDLYNAME`
`static int` `CM_DRP_HARDWAREID`
`static int` `CM_DRP_INSTALL_STATE`
`static int` `CM_DRP_LEGACYBUSTYPE`
`static int` `CM_DRP_LOCATION_INFORMATION`
`static int` `CM_DRP_LOCATION_PATHS`
`static int` `CM_DRP_LOWERFILTERS`
`static int` `CM_DRP_MFG`
`static int` `CM_DRP_PHYSICAL_DEVICE_OBJECT_NAME`
`static int` `CM_DRP_REMOVAL_POLICY`
`static int` `CM_DRP_REMOVAL_POLICY_HW_DEFAULT`
`static int` `CM_DRP_REMOVAL_POLICY_OVERRIDE`
`static int` `CM_DRP_SECURITY`
`static int` `CM_DRP_SECURITY_SDS`
`static int` `CM_DRP_SERVICE`
`static int` `CM_DRP_UI_NUMBER`
`static int` `CM_DRP_UI_NUMBER_DESC_FORMAT`
`static int` `CM_DRP_UPPERFILTERS`
`static int` `CM_LOCATE_DEVNODE_BITS`
`static int` `CM_LOCATE_DEVNODE_CANCELREMOVE`
`static int` `CM_LOCATE_DEVNODE_NORMAL`
`static int` `CM_LOCATE_DEVNODE_NOVALIDATION`
`static int` `CM_LOCATE_DEVNODE_PHANTOM`
`static int` `CR_ACCESS_DENIED`
`static int` `CR_ALREADY_SUCH_DEVINST`
`static int` `CR_ALREADY_SUCH_DEVNODE`
`static int` `CR_APM_VETOED`
`static int` `CR_BUFFER_SMALL`
`static int` `CR_CALL_NOT_IMPLEMENTED`
`static int` `CR_CANT_SHARE_IRQ`
`static int` `CR_CREATE_BLOCKED`
`static int` `CR_DEFAULT`
`static int` `CR_DEVICE_INTERFACE_ACTIVE`
`static int` `CR_DEVICE_NOT_THERE`
`static int` `CR_DEVINST_HAS_REQS`
`static int` `CR_DEVLOADER_NOT_READY`
`static int` `CR_DEVNODE_HAS_REQS`
`static int` `CR_DLVXD_NOT_FOUND`
`static int` `CR_FAILURE`
`static int` `CR_FREE_RESOURCES`
`static int` `CR_INVALID_API`
`static int` `CR_INVALID_ARBITRATOR`
`static int` `CR_INVALID_CONFLICT_LIST`
`static int` `CR_INVALID_DATA`
`static int` `CR_INVALID_DEVICE_ID`
`static int` `CR_INVALID_DEVINST`
`static int` `CR_INVALID_DEVNODE`
`static int` `CR_INVALID_FLAG`
`static int` `CR_INVALID_INDEX`
`static int` `CR_INVALID_LOAD_TYPE`
`static int` `CR_INVALID_LOG_CONF`
`static int` `CR_INVALID_MACHINENAME`
`static int` `CR_INVALID_NODELIST`
`static int` `CR_INVALID_POINTER`
`static int` `CR_INVALID_PRIORITY`
`static int` `CR_INVALID_PROPERTY`
`static int` `CR_INVALID_RANGE`
`static int` `CR_INVALID_RANGE_LIST`
`static int` `CR_INVALID_REFERENCE_STRING`
`static int` `CR_INVALID_RES_DES`
`static int` `CR_INVALID_RESOURCEID`
`static int` `CR_INVALID_STRUCTURE_SIZE`
`static int` `CR_MACHINE_UNAVAILABLE`
`static int` `CR_NEED_RESTART`
`static int` `CR_NO_ARBITRATOR`
`static int` `CR_NO_CM_SERVICES`
`static int` `CR_NO_DEPENDENT`
`static int` `CR_NO_MORE_HW_PROFILES`
`static int` `CR_NO_MORE_LOG_CONF`
`static int` `CR_NO_MORE_RES_DES`
`static int` `CR_NO_REGISTRY_HANDLE`
`static int` `CR_NO_SUCH_DEVICE_INTERFACE`
`static int` `CR_NO_SUCH_DEVINST`
`static int` `CR_NO_SUCH_DEVNODE`
`static int` `CR_NO_SUCH_LOGICAL_DEV`
`static int` `CR_NO_SUCH_REGISTRY_KEY`
`static int` `CR_NO_SUCH_VALUE`
`static int` `CR_NOT_DISABLEABLE`
`static int` `CR_NOT_SYSTEM_VM`
`static int` `CR_OUT_OF_MEMORY`
`static int` `CR_QUERY_VETOED`
`static int` `CR_REGISTRY_ERROR`
`static int` `CR_REMOTE_COMM_FAILURE`
`static int` `CR_REMOVE_VETOED`
`static int` `CR_SAME_RESOURCES`
`static int` `CR_SUCCESS`
`static int` `CR_WRONG_TYPE`
`static Cfgmgr32` `INSTANCE`
`static int` `NUM_CR_RESULTS`

### Fields inherited from interface com.sun.jna.Library

`OPTION_ALLOW_OBJECTS, OPTION_CALLING_CONVENTION, OPTION_CLASSLOADER, OPTION_FUNCTION_MAPPER, OPTION_INVOCATION_MAPPER, OPTION_OPEN_FLAGS, OPTION_STRING_ENCODING, OPTION_STRUCTURE_ALIGNMENT, OPTION_TYPE_MAPPER`

### Method Summary

All Methods Instance Methods Abstract Methods
`int` `CM_Get_Child​(IntByReference pdnDevInst, int dnDevInst, int ulFlags)` The CM_Get_Child function is used to retrieve a device instance handle to the first child node of a specified device node (devnode) in the local machine's device tree.
`int` `CM_Get_Device_ID​(int devInst, Pointer Buffer, int BufferLen, int ulFlags)` The CM_Get_Device_ID function retrieves the device instance ID for a specified device instance on the local machine.
`int` `CM_Get_Device_ID_Size​(IntByReference pulLen, int dnDevInst, int ulFlags)` The CM_Get_Device_ID_Size function retrieves the buffer size required to hold a device instance ID for a device instance on the local machine.
`int` `CM_Get_DevNode_Registry_Property​(int dnDevInst, int ulProperty, IntByReference pulRegDataType, Pointer buffer, IntByReference pulLength, int ulFlags)` The CM_Get_DevNode_Registry_Property function retrieves a specified device property from the registry.
`int` `CM_Get_Parent​(IntByReference pdnDevInst, int dnDevInst, int ulFlags)` The CM_Get_Parent function obtains a device instance handle to the parent node of a specified device node (devnode) in the local machine's device tree.
`int` `CM_Get_Sibling​(IntByReference pdnDevInst, int dnDevInst, int ulFlags)` The CM_Get_Sibling function obtains a device instance handle to the next sibling node of a specified device node (devnode) in the local machine's device tree.
`int` `CM_Locate_DevNode​(IntByReference pdnDevInst, java.lang.String pDeviceID, int ulFlags)` The CM_Locate_DevNode function obtains a device instance handle to the device node that is associated with a specified device instance ID on the local machine.

### Field Detail

#### INSTANCE

    static final Cfgmgr32 INSTANCE

#### CR_SUCCESS

    static final int CR_SUCCESS

See Also:
  Constant Field Values

#### CR_DEFAULT

    static final int CR_DEFAULT

See Also:
  Constant Field Values

#### CR_OUT_OF_MEMORY

    static final int CR_OUT_OF_MEMORY

See Also:
  Constant Field Values

#### CR_INVALID_POINTER

    static final int CR_INVALID_POINTER

See Also:
  Constant Field Values

#### CR_INVALID_FLAG

    static final int CR_INVALID_FLAG

See Also:
  Constant Field Values

#### CR_INVALID_DEVNODE

    static final int CR_INVALID_DEVNODE

See Also:
  Constant Field Values

#### CR_INVALID_DEVINST

    static final int CR_INVALID_DEVINST

See Also:
  Constant Field Values

#### CR_INVALID_RES_DES

    static final int CR_INVALID_RES_DES

See Also:
  Constant Field Values

#### CR_INVALID_LOG_CONF

    static final int CR_INVALID_LOG_CONF

See Also:
  Constant Field Values

#### CR_INVALID_ARBITRATOR

    static final int CR_INVALID_ARBITRATOR

See Also:
  Constant Field Values

#### CR_INVALID_NODELIST

    static final int CR_INVALID_NODELIST

See Also:
  Constant Field Values

#### CR_DEVNODE_HAS_REQS

    static final int CR_DEVNODE_HAS_REQS

See Also:
  Constant Field Values

#### CR_DEVINST_HAS_REQS

    static final int CR_DEVINST_HAS_REQS

See Also:
  Constant Field Values

#### CR_INVALID_RESOURCEID

    static final int CR_INVALID_RESOURCEID

See Also:
  Constant Field Values

#### CR_DLVXD_NOT_FOUND

    static final int CR_DLVXD_NOT_FOUND

See Also:
  Constant Field Values

#### CR_NO_SUCH_DEVNODE

    static final int CR_NO_SUCH_DEVNODE

See Also:
  Constant Field Values

#### CR_NO_SUCH_DEVINST

    static final int CR_NO_SUCH_DEVINST

See Also:
  Constant Field Values

#### CR_NO_MORE_LOG_CONF

    static final int CR_NO_MORE_LOG_CONF

See Also:
  Constant Field Values

#### CR_NO_MORE_RES_DES

    static final int CR_NO_MORE_RES_DES

See Also:
  Constant Field Values

#### CR_ALREADY_SUCH_DEVNODE

    static final int CR_ALREADY_SUCH_DEVNODE

See Also:
  Constant Field Values

#### CR_ALREADY_SUCH_DEVINST

    static final int CR_ALREADY_SUCH_DEVINST

See Also:
  Constant Field Values

#### CR_INVALID_RANGE_LIST

    static final int CR_INVALID_RANGE_LIST

See Also:
  Constant Field Values

#### CR_INVALID_RANGE

    static final int CR_INVALID_RANGE

See Also:
  Constant Field Values

#### CR_FAILURE

    static final int CR_FAILURE

See Also:
  Constant Field Values

#### CR_NO_SUCH_LOGICAL_DEV

    static final int CR_NO_SUCH_LOGICAL_DEV

See Also:
  Constant Field Values

#### CR_CREATE_BLOCKED

    static final int CR_CREATE_BLOCKED

See Also:
  Constant Field Values

#### CR_NOT_SYSTEM_VM

    static final int CR_NOT_SYSTEM_VM

See Also:
  Constant Field Values

#### CR_REMOVE_VETOED

    static final int CR_REMOVE_VETOED

See Also:
  Constant Field Values

#### CR_APM_VETOED

    static final int CR_APM_VETOED

See Also:
  Constant Field Values

#### CR_INVALID_LOAD_TYPE

    static final int CR_INVALID_LOAD_TYPE

See Also:
  Constant Field Values

#### CR_BUFFER_SMALL

    static final int CR_BUFFER_SMALL

See Also:
  Constant Field Values

#### CR_NO_ARBITRATOR

    static final int CR_NO_ARBITRATOR

See Also:
  Constant Field Values

#### CR_NO_REGISTRY_HANDLE

    static final int CR_NO_REGISTRY_HANDLE

See Also:
  Constant Field Values

#### CR_REGISTRY_ERROR

    static final int CR_REGISTRY_ERROR

See Also:
  Constant Field Values

#### CR_INVALID_DEVICE_ID

    static final int CR_INVALID_DEVICE_ID

See Also:
  Constant Field Values

#### CR_INVALID_DATA

    static final int CR_INVALID_DATA

See Also:
  Constant Field Values

#### CR_INVALID_API

    static final int CR_INVALID_API

See Also:
  Constant Field Values

#### CR_DEVLOADER_NOT_READY

    static final int CR_DEVLOADER_NOT_READY

See Also:
  Constant Field Values

#### CR_NEED_RESTART

    static final int CR_NEED_RESTART

See Also:
  Constant Field Values

#### CR_NO_MORE_HW_PROFILES

    static final int CR_NO_MORE_HW_PROFILES

See Also:
  Constant Field Values

#### CR_DEVICE_NOT_THERE

    static final int CR_DEVICE_NOT_THERE

See Also:
  Constant Field Values

#### CR_NO_SUCH_VALUE

    static final int CR_NO_SUCH_VALUE

See Also:
  Constant Field Values

#### CR_WRONG_TYPE

    static final int CR_WRONG_TYPE

See Also:
  Constant Field Values

#### CR_INVALID_PRIORITY

    static final int CR_INVALID_PRIORITY

See Also:
  Constant Field Values

#### CR_NOT_DISABLEABLE

    static final int CR_NOT_DISABLEABLE

See Also:
  Constant Field Values

#### CR_FREE_RESOURCES

    static final int CR_FREE_RESOURCES

See Also:
  Constant Field Values

#### CR_QUERY_VETOED

    static final int CR_QUERY_VETOED

See Also:
  Constant Field Values

#### CR_CANT_SHARE_IRQ

    static final int CR_CANT_SHARE_IRQ

See Also:
  Constant Field Values

#### CR_NO_DEPENDENT

    static final int CR_NO_DEPENDENT

See Also:
  Constant Field Values

#### CR_SAME_RESOURCES

    static final int CR_SAME_RESOURCES

See Also:
  Constant Field Values

#### CR_NO_SUCH_REGISTRY_KEY

    static final int CR_NO_SUCH_REGISTRY_KEY

See Also:
  Constant Field Values

#### CR_INVALID_MACHINENAME

    static final int CR_INVALID_MACHINENAME

See Also:
  Constant Field Values

#### CR_REMOTE_COMM_FAILURE

    static final int CR_REMOTE_COMM_FAILURE

See Also:
  Constant Field Values

#### CR_MACHINE_UNAVAILABLE

    static final int CR_MACHINE_UNAVAILABLE

See Also:
  Constant Field Values

#### CR_NO_CM_SERVICES

    static final int CR_NO_CM_SERVICES

See Also:
  Constant Field Values

#### CR_ACCESS_DENIED

    static final int CR_ACCESS_DENIED

See Also:
  Constant Field Values

#### CR_CALL_NOT_IMPLEMENTED

    static final int CR_CALL_NOT_IMPLEMENTED

See Also:
  Constant Field Values

#### CR_INVALID_PROPERTY

    static final int CR_INVALID_PROPERTY

See Also:
  Constant Field Values

#### CR_DEVICE_INTERFACE_ACTIVE

    static final int CR_DEVICE_INTERFACE_ACTIVE

See Also:
  Constant Field Values

#### CR_NO_SUCH_DEVICE_INTERFACE

    static final int CR_NO_SUCH_DEVICE_INTERFACE

See Also:
  Constant Field Values

#### CR_INVALID_REFERENCE_STRING

    static final int CR_INVALID_REFERENCE_STRING

See Also:
  Constant Field Values

#### CR_INVALID_CONFLICT_LIST

    static final int CR_INVALID_CONFLICT_LIST

See Also:
  Constant Field Values

#### CR_INVALID_INDEX

    static final int CR_INVALID_INDEX

See Also:
  Constant Field Values

#### CR_INVALID_STRUCTURE_SIZE

    static final int CR_INVALID_STRUCTURE_SIZE

See Also:
  Constant Field Values

#### NUM_CR_RESULTS

    static final int NUM_CR_RESULTS

See Also:
  Constant Field Values

#### CM_LOCATE_DEVNODE_NORMAL

    static final int CM_LOCATE_DEVNODE_NORMAL

See Also:
  Constant Field Values

#### CM_LOCATE_DEVNODE_PHANTOM

    static final int CM_LOCATE_DEVNODE_PHANTOM

See Also:
  Constant Field Values

#### CM_LOCATE_DEVNODE_CANCELREMOVE

    static final int CM_LOCATE_DEVNODE_CANCELREMOVE

See Also:
  Constant Field Values

#### CM_LOCATE_DEVNODE_NOVALIDATION

    static final int CM_LOCATE_DEVNODE_NOVALIDATION

See Also:
  Constant Field Values

#### CM_LOCATE_DEVNODE_BITS

    static final int CM_LOCATE_DEVNODE_BITS

See Also:
  Constant Field Values

#### CM_DRP_DEVICEDESC

    static final int CM_DRP_DEVICEDESC

See Also:
  Constant Field Values

#### CM_DRP_HARDWAREID

    static final int CM_DRP_HARDWAREID

See Also:
  Constant Field Values

#### CM_DRP_COMPATIBLEIDS

    static final int CM_DRP_COMPATIBLEIDS

See Also:
  Constant Field Values

#### CM_DRP_SERVICE

    static final int CM_DRP_SERVICE

See Also:
  Constant Field Values

#### CM_DRP_CLASS

    static final int CM_DRP_CLASS

See Also:
  Constant Field Values

#### CM_DRP_CLASSGUID

    static final int CM_DRP_CLASSGUID

See Also:
  Constant Field Values

#### CM_DRP_DRIVER

    static final int CM_DRP_DRIVER

See Also:
  Constant Field Values

#### CM_DRP_CONFIGFLAGS

    static final int CM_DRP_CONFIGFLAGS

See Also:
  Constant Field Values

#### CM_DRP_MFG

    static final int CM_DRP_MFG

See Also:
  Constant Field Values

#### CM_DRP_FRIENDLYNAME

    static final int CM_DRP_FRIENDLYNAME

See Also:
  Constant Field Values

#### CM_DRP_LOCATION_INFORMATION

    static final int CM_DRP_LOCATION_INFORMATION

See Also:
  Constant Field Values

#### CM_DRP_PHYSICAL_DEVICE_OBJECT_NAME

    static final int CM_DRP_PHYSICAL_DEVICE_OBJECT_NAME

See Also:
  Constant Field Values

#### CM_DRP_CAPABILITIES

    static final int CM_DRP_CAPABILITIES

See Also:
  Constant Field Values

#### CM_DRP_UI_NUMBER

    static final int CM_DRP_UI_NUMBER

See Also:
  Constant Field Values

#### CM_DRP_UPPERFILTERS

    static final int CM_DRP_UPPERFILTERS

See Also:
  Constant Field Values

#### CM_DRP_LOWERFILTERS

    static final int CM_DRP_LOWERFILTERS

See Also:
  Constant Field Values

#### CM_DRP_BUSTYPEGUID

    static final int CM_DRP_BUSTYPEGUID

See Also:
  Constant Field Values

#### CM_DRP_LEGACYBUSTYPE

    static final int CM_DRP_LEGACYBUSTYPE

See Also:
  Constant Field Values

#### CM_DRP_BUSNUMBER

    static final int CM_DRP_BUSNUMBER

See Also:
  Constant Field Values

#### CM_DRP_ENUMERATOR_NAME

    static final int CM_DRP_ENUMERATOR_NAME

See Also:
  Constant Field Values

#### CM_DRP_SECURITY

    static final int CM_DRP_SECURITY

See Also:
  Constant Field Values

#### CM_DRP_SECURITY_SDS

    static final int CM_DRP_SECURITY_SDS

See Also:
  Constant Field Values

#### CM_DRP_DEVTYPE

    static final int CM_DRP_DEVTYPE

See Also:
  Constant Field Values

#### CM_DRP_EXCLUSIVE

    static final int CM_DRP_EXCLUSIVE

See Also:
  Constant Field Values

#### CM_DRP_CHARACTERISTICS

    static final int CM_DRP_CHARACTERISTICS

See Also:
  Constant Field Values

#### CM_DRP_ADDRESS

    static final int CM_DRP_ADDRESS

See Also:
  Constant Field Values

#### CM_DRP_UI_NUMBER_DESC_FORMAT

    static final int CM_DRP_UI_NUMBER_DESC_FORMAT

See Also:
  Constant Field Values

#### CM_DRP_DEVICE_POWER_DATA

    static final int CM_DRP_DEVICE_POWER_DATA

See Also:
  Constant Field Values

#### CM_DRP_REMOVAL_POLICY

    static final int CM_DRP_REMOVAL_POLICY

See Also:
  Constant Field Values

#### CM_DRP_REMOVAL_POLICY_HW_DEFAULT

    static final int CM_DRP_REMOVAL_POLICY_HW_DEFAULT

See Also:
  Constant Field Values

#### CM_DRP_REMOVAL_POLICY_OVERRIDE

    static final int CM_DRP_REMOVAL_POLICY_OVERRIDE

See Also:
  Constant Field Values

#### CM_DRP_INSTALL_STATE

    static final int CM_DRP_INSTALL_STATE

See Also:
  Constant Field Values

#### CM_DRP_LOCATION_PATHS

    static final int CM_DRP_LOCATION_PATHS

See Also:
  Constant Field Values

#### CM_DRP_BASE_CONTAINERID

    static final int CM_DRP_BASE_CONTAINERID

See Also:
  Constant Field Values

### Method Detail

#### CM_Locate_DevNode

    int CM_Locate_DevNode​(IntByReference pdnDevInst,
                          java.lang.String pDeviceID,
                          int ulFlags)

The CM_Locate_DevNode function obtains a device instance handle to the device node that is associated with a specified device instance ID on the local machine.

Parameters:
  `pdnDevInst` - A pointer to a device instance handle that CM_Locate_DevNode retrieves. The retrieved handle is bound to the local machine.
  `pDeviceID` - A pointer to a NULL-terminated string representing a device instance ID. If this value is NULL, or if it points to a zero-length string, the function retrieves a device instance handle to the device at the root of the device tree. *
  `ulFlags` - A variable of ULONG type that supplies one of the following flag values that apply if the caller supplies a device instance identifier: CM_LOCATE_DEVNODE_NORMAL, CM_LOCATE_DEVNODE_PHANTOM, CM_LOCATE_DEVNODE_CANCELREMOVE, or CM_LOCATE_DEVNODE_NOVALIDATION
Returns:
  If the operation succeeds, CM_Locate_DevNode returns CR_SUCCESS. Otherwise, the function returns one of the CR_Xxx error codes that are defined in Cfgmgr32.h.
See Also:
  CM_Locate_DevNode

#### CM_Get_Parent

    int CM_Get_Parent​(IntByReference pdnDevInst,
                      int dnDevInst,
                      int ulFlags)

The CM_Get_Parent function obtains a device instance handle to the parent node of a specified device node (devnode) in the local machine's device tree.

Parameters:
  `pdnDevInst` - Caller-supplied pointer to the device instance handle to the parent node that this function retrieves. The retrieved handle is bound to the local machine.
  `dnDevInst` - Caller-supplied device instance handle that is bound to the local machine.
  `ulFlags` - Not used, must be zero.
Returns:
  If the operation succeeds, the function returns CR_SUCCESS. Otherwise, it returns one of the CR_-prefixed error codes defined in Cfgmgr32.h.
See Also:
  CM_Get_Parent

#### CM_Get_Child

    int CM_Get_Child​(IntByReference pdnDevInst,
                     int dnDevInst,
                     int ulFlags)

The CM_Get_Child function is used to retrieve a device instance handle to the first child node of a specified device node (devnode) in the local machine's device tree.

Parameters:
  `pdnDevInst` - Caller-supplied pointer to the device instance handle to the child node that this function retrieves. The retrieved handle is bound to the local machine.
  `dnDevInst` - Caller-supplied device instance handle that is bound to the local machine.
  `ulFlags` - Not used, must be zero.
Returns:
  If the operation succeeds, the function returns CR_SUCCESS. Otherwise, it returns one of the CR_-prefixed error codes defined in Cfgmgr32.h.
See Also:
  CM_Get_Child

#### CM_Get_Sibling

    int CM_Get_Sibling​(IntByReference pdnDevInst,
                       int dnDevInst,
                       int ulFlags)

The CM_Get_Sibling function obtains a device instance handle to the next sibling node of a specified device node (devnode) in the local machine's device tree.

Parameters:
  `pdnDevInst` - Caller-supplied pointer to the device instance handle to the sibling node that this function retrieves. The retrieved handle is bound to the local machine.
  `dnDevInst` - Caller-supplied device instance handle that is bound to the local machine.
  `ulFlags` - Not used, must be zero.
Returns:
  If the operation succeeds, the function returns CR_SUCCESS. Otherwise, it returns one of the CR_-prefixed error codes defined in Cfgmgr32.h.
See Also:
  CM_Get_Sibling

#### CM_Get_Device_ID

    int CM_Get_Device_ID​(int devInst,
                         Pointer Buffer,
                         int BufferLen,
                         int ulFlags)

The CM_Get_Device_ID function retrieves the device instance ID for a specified device instance on the local machine.

Parameters:
  `devInst` - Caller-supplied device instance handle that is bound to the local machine.
  `Buffer` - Address of a buffer to receive a device instance ID string. The required buffer size can be obtained by calling CM_Get_Device_ID_Size, then incrementing the received value to allow room for the string's terminating NULL.
  `BufferLen` - Caller-supplied length, in characters, of the buffer specified by Buffer.
  `ulFlags` - Not used, must be zero.
Returns:
  If the operation succeeds, the function returns CR_SUCCESS. Otherwise, it returns one of the CR_-prefixed error codes defined in Cfgmgr32.h.
See Also:
  CM_Get_Device_ID

#### CM_Get_Device_ID_Size

    int CM_Get_Device_ID_Size​(IntByReference pulLen,
                              int dnDevInst,
                              int ulFlags)

The CM_Get_Device_ID_Size function retrieves the buffer size required to hold a device instance ID for a device instance on the local machine.

Parameters:
  `pulLen` - Receives a value representing the required buffer size, in characters.
  `dnDevInst` - Caller-supplied device instance handle that is bound to the local machine.
  `ulFlags` - Not used, must be zero.
Returns:
  If the operation succeeds, the function returns CR_SUCCESS. Otherwise, it returns one of the CR_-prefixed error codes defined in Cfgmgr32.h.
See Also:
  CM_Get_Device_ID_Size

#### CM_Get_DevNode_Registry_Property

    int CM_Get_DevNode_Registry_Property​(int dnDevInst,
                                         int ulProperty,
                                         IntByReference pulRegDataType,
                                         Pointer buffer,
                                         IntByReference pulLength,
                                         int ulFlags)

The CM_Get_DevNode_Registry_Property function retrieves a specified device property from the registry.

Parameters:
  `dnDevInst` - A caller-supplied device instance handle that is bound to the local machine.
  `ulProperty` - A `CM_DRP_`-prefixed constant value that identifies the device property to be obtained from the registry. These constants are defined in Cfgmgr32.h.
  `pulRegDataType` - Optional, can be `null`. A pointer to a location that receives the registry data type, specified as a `REG_`-prefixed constant defined in Winnt.h.
  `buffer` - Optional, can be `null`. A pointer to a caller-supplied buffer that receives the requested device property. If this value is `null`, the function supplies only the length of the requested data in the address pointed to by `pulLength`.
  `pulLength` - A pointer to a `ULONG` variable into which the function stores the length, in bytes, of the requested device property.

  If the Buffer parameter is set to `null`, the ULONG variable must be set to zero.

  If the Buffer parameter is not set to `null`, the `ULONG` variable must be set to the length, in bytes, of the caller-supplied buffer.

  `ulFlags` - Not used, must be zero.
Returns:
  If the operation succeeds, the function returns `CR_SUCCESS`. Otherwise, it returns one of the `CR_`-prefixed error codes that are defined in Cfgmgr32.h.