Cfgmgr32 (JNA API)
Description: declaration: package: com.sun.jna.platform.win32, interface: Cfgmgr32

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.