CM_Get_First_Log_Conf function

The CM_Get_First_Log_Conf function obtains the first logical configuration, of a specified configuration type, associated with a specified device instance on the local machine.


  PLOG_CONF plcLogConf,
  DEVINST   dnDevInst,
  ULONG     ulFlags



Address of a location to receive the handle to a logical configuration, or NULL. See the following Remarks section.


Caller-supplied device instance handle that is bound to the local machine.


Caller-supplied flag value indicating the type of logical configuration being requested. One of the flags in the following table must be specified.

Configuration Type Flags Definitions
BASIC_LOG_CONF The caller is requesting basic configuration information.
FILTERED_LOG_CONF The caller is requesting filtered configuration information.
ALLOC_LOG_CONF The caller is requesting allocated configuration information.
BOOT_LOG_CONF The caller is requesting boot configuration information.
FORCED_LOG_CONF The caller is requesting forced configuration information.
OVERRIDE_LOG_CONF The caller is requesting override configuration information.

Return value

If the operation succeeds, the function returns CR_SUCCESS. Otherwise, it returns one of the CR_-prefixed error codes defined in Cfgmgr32.h.

Note  Starting with Windows 8, CM_Get_First_Log_Conf returns CR_CALL_NOT_IMPLEMENTED when used in a Wow64 scenario. To request information about the hardware resources on a local machine it is necessary implement an architecture-native version of the application using the hardware resource APIs. For example: An AMD64 application for AMD64 systems.


Calling CM_Add_Empty_Log_Conf or CM_Free_Log_Conf can invalidate the handle obtained from a previous call to CM_Get_First_Log_Conf. Thus if you want to obtain logical configurations after calling CM_Add_Empty_Log_Conf or CM_Free_Log_Conf, your code must call CM_Get_First_Log_Conf again and start at the first configuration.

The handle received in plcLogConf must be explicitly freed by calling CM_Free_Log_Conf_Handle.

If CM_Get_First_Log_Conf is called with plcLogConf set to NULL, no handle is returned. This allows you to use the return status to determine if a configuration exists without the need to subsequently free the handle.

For information about using device instance handles that are bound to the local machine, see CM_Get_Child.


Minimum supported client Available in Microsoft Windows 2000 and later versions of Windows.
Target Platform Desktop
Header cfgmgr32.h (include Cfgmgr32.h)
Library Cfgmgr32.lib
DLL Cfgmgr32.dll

See also