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

## Method Summary

Modifier and Type
Method
Description
`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, 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 Details

### 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 Details

### CM_Locate_DevNode

int CM_Locate_DevNode(IntByReference pdnDevInst, 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.