ReactOS 0.4.15-dev-7961-gdcf9eb0
cfgmgr.c File Reference
#include "setupapi_private.h"
#include <dbt.h>
#include <pnp_c.h>
#include <winsvc.h>
#include <pseh/pseh2.h>
#include "rpc_private.h"
Include dependency graph for cfgmgr.c:

Go to the source code of this file.

Classes

struct  _MACHINE_INFO
 
struct  _LOG_CONF_INFO
 
struct  _NOTIFY_DATA
 
struct  _INTERNAL_RANGE
 
struct  _INTERNAL_RANGE_LIST
 
struct  _CONFLICT_DATA
 

Macros

#define LOG_CONF_MAGIC   0x464E434C /* "LCNF" */
 
#define NOTIFY_MAGIC   0x44556677
 
#define RANGE_LIST_MAGIC   0x33445566
 
#define CONFLICT_MAGIC   0x11225588
 

Typedefs

typedef struct _MACHINE_INFO MACHINE_INFO
 
typedef struct _MACHINE_INFOPMACHINE_INFO
 
typedef struct _LOG_CONF_INFO LOG_CONF_INFO
 
typedef struct _LOG_CONF_INFOPLOG_CONF_INFO
 
typedef struct _NOTIFY_DATA NOTIFY_DATA
 
typedef struct _NOTIFY_DATAPNOTIFY_DATA
 
typedef struct _INTERNAL_RANGE INTERNAL_RANGE
 
typedef struct _INTERNAL_RANGEPINTERNAL_RANGE
 
typedef struct _INTERNAL_RANGE_LIST INTERNAL_RANGE_LIST
 
typedef struct _INTERNAL_RANGE_LISTPINTERNAL_RANGE_LIST
 
typedef struct _CONFLICT_DATA CONFLICT_DATA
 
typedef struct _CONFLICT_DATAPCONFLICT_DATA
 

Functions

DWORD WINAPI I_ScPnPGetServiceName (IN SERVICE_STATUS_HANDLE hServiceStatus, OUT LPWSTR lpServiceName, IN DWORD cchServiceName)
 
static BOOL GuidToString (_In_ LPGUID Guid, _Out_ LPWSTR String)
 
static CONFIGRET RpcStatusToCmStatus (_In_ RPC_STATUS Status)
 
static ULONG GetRegistryPropertyType (_In_ ULONG ulProperty)
 
static VOID SplitDeviceInstanceId (_In_ PWSTR pszDeviceInstanceId, _Out_ PWSTR pszDeviceId, _Out_ PWSTR pszInstanceId)
 
static CONFIGRET GetDeviceInstanceKeyPath (_In_ RPC_BINDING_HANDLE BindingHandle, _In_ PWSTR pszDeviceInst, _Out_ PWSTR pszKeyPath, _Out_ PWSTR pszInstancePath, _In_ ULONG ulHardwareProfile, _In_ ULONG ulFlags)
 
BOOL IsValidRangeList (_In_opt_ PINTERNAL_RANGE_LIST pRangeList)
 
BOOL IsValidLogConf (_In_opt_ PLOG_CONF_INFO pLogConfInfo)
 
BOOL IsValidConflictData (_In_opt_ PCONFLICT_DATA pConflictData)
 
CONFIGRET WINAPI CMP_GetBlockedDriverInfo (_Out_opt_ LPWSTR pszNames, _Inout_ PULONG pulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CMP_GetServerSideDeviceInstallFlags (_Out_ PULONG pulSSDIFlags, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CMP_Init_Detection (_In_ ULONG ulMagic)
 
CONFIGRET WINAPI CMP_RegisterNotification (_In_ HANDLE hRecipient, _In_ LPVOID lpvNotificationFilter, _In_ ULONG ulFlags, _Out_ PHDEVNOTIFY phDevNotify)
 
CONFIGRET WINAPI CMP_Report_LogOn (_In_ DWORD dwMagic, _In_ DWORD dwProcessId)
 
CONFIGRET WINAPI CMP_UnregisterNotification (_In_ HDEVNOTIFY hDevNotify)
 
DWORD WINAPI CMP_WaitNoPendingInstallEvents (_In_ DWORD dwTimeout)
 
CONFIGRET WINAPI CMP_WaitServicesAvailable (_In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Add_Empty_Log_Conf (_Out_ PLOG_CONF plcLogConf, _In_ DEVINST dnDevInst, _In_ PRIORITY Priority, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Add_Empty_Log_Conf_Ex (_Out_ PLOG_CONF plcLogConf, _In_ DEVINST dnDevInst, _In_ PRIORITY Priority, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Add_IDA (_In_ DEVINST dnDevInst, _In_ PSTR pszID, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Add_IDW (_In_ DEVINST dnDevInst, _In_ PWSTR pszID, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Add_ID_ExA (_In_ DEVINST dnDevInst, _In_ PSTR pszID, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Add_ID_ExW (_In_ DEVINST dnDevInst, _In_ PWSTR pszID, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Add_Range (_In_ DWORDLONG ullStartValue, _In_ DWORDLONG ullEndValue, _In_ RANGE_LIST rlh, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Add_Res_Des (_Out_opt_ PRES_DES prdResDes, _In_ LOG_CONF lcLogConf, _In_ RESOURCEID ResourceID, _In_reads_bytes_(ResourceLen) PCVOID ResourceData, _In_ ULONG ResourceLen, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Add_Res_Des_Ex (_Out_opt_ PRES_DES prdResDes, _In_ LOG_CONF lcLogConf, _In_ RESOURCEID ResourceID, _In_reads_bytes_(ResourceLen) PCVOID ResourceData, _In_ ULONG ResourceLen, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Connect_MachineA (_In_opt_ PCSTR UNCServerName, _Out_ PHMACHINE phMachine)
 
CONFIGRET WINAPI CM_Connect_MachineW (_In_opt_ PCWSTR UNCServerName, _Out_ PHMACHINE phMachine)
 
CONFIGRET WINAPI CM_Create_DevNodeA (_Out_ PDEVINST pdnDevInst, _In_ DEVINSTID_A pDeviceID, _In_ DEVINST dnParent, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Create_DevNodeW (_Out_ PDEVINST pdnDevInst, _In_ DEVINSTID_W pDeviceID, _In_ DEVINST dnParent, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Create_DevNode_ExA (_Out_ PDEVINST pdnDevInst, _In_ DEVINSTID_A pDeviceID, _In_ DEVINST dnParent, _In_ ULONG ulFlags, _In_opt_ HANDLE hMachine)
 
CONFIGRET WINAPI CM_Create_DevNode_ExW (_Out_ PDEVINST pdnDevInst, _In_ DEVINSTID_W pDeviceID, _In_ DEVINST dnParent, _In_ ULONG ulFlags, _In_opt_ HANDLE hMachine)
 
CONFIGRET WINAPI CM_Create_Range_List (_Out_ PRANGE_LIST prlh, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Delete_Class_Key (_In_ LPGUID ClassGuid, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Delete_Class_Key_Ex (_In_ LPGUID ClassGuid, _In_ ULONG ulFlags, _In_opt_ HANDLE hMachine)
 
CONFIGRET WINAPI CM_Delete_DevNode_Key (_In_ DEVINST dnDevInst, _In_ ULONG ulHardwareProfile, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Delete_DevNode_Key_Ex (_In_ DEVINST dnDevInst, _In_ ULONG ulHardwareProfile, _In_ ULONG ulFlags, _In_opt_ HANDLE hMachine)
 
CONFIGRET WINAPI CM_Delete_Range (_In_ DWORDLONG ullStartValue, _In_ DWORDLONG ullEndValue, _In_ RANGE_LIST rlh, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Detect_Resource_Conflict (_In_ DEVINST dnDevInst, _In_ RESOURCEID ResourceID, _In_reads_bytes_(ResourceLen) PCVOID ResourceData, _In_ ULONG ResourceLen, _Out_ PBOOL pbConflictDetected, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Detect_Resource_Conflict_Ex (_In_ DEVINST dnDevInst, _In_ RESOURCEID ResourceID, _In_reads_bytes_(ResourceLen) PCVOID ResourceData, _In_ ULONG ResourceLen, _Out_ PBOOL pbConflictDetected, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Disable_DevNode (_In_ DEVINST dnDevInst, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Disable_DevNode_Ex (_In_ DEVINST dnDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Disconnect_Machine (_In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Dup_Range_List (_In_ RANGE_LIST rlhOld, _In_ RANGE_LIST rlhNew, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Enable_DevNode (_In_ DEVINST dnDevInst, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Enable_DevNode_Ex (_In_ DEVINST dnDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Enumerate_Classes (_In_ ULONG ulClassIndex, _Out_ LPGUID ClassGuid, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Enumerate_Classes_Ex (_In_ ULONG ulClassIndex, _Out_ LPGUID ClassGuid, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Enumerate_EnumeratorsA (_In_ ULONG ulEnumIndex, _Out_writes_(*pulLength) PCHAR Buffer, _Inout_ PULONG pulLength, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Enumerate_EnumeratorsW (_In_ ULONG ulEnumIndex, _Out_writes_(*pulLength) PWCHAR Buffer, _Inout_ PULONG pulLength, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Enumerate_Enumerators_ExA (_In_ ULONG ulEnumIndex, _Out_writes_(*pulLength) PCHAR Buffer, _Inout_ PULONG pulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Enumerate_Enumerators_ExW (_In_ ULONG ulEnumIndex, _Out_writes_(*pulLength) PWCHAR Buffer, _Inout_ PULONG pulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Find_Range (_Out_ PDWORDLONG pullStart, _In_ DWORDLONG ullStart, _In_ ULONG ulLength, _In_ DWORDLONG ullAlignment, _In_ DWORDLONG ullEnd, _In_ RANGE_LIST rlh, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_First_Range (_In_ RANGE_LIST rlh, _Out_ PDWORDLONG pullStart, _Out_ PDWORDLONG pullEnd, _Out_ PRANGE_ELEMENT preElement, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Free_Log_Conf (_In_ LOG_CONF lcLogConfToBeFreed, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Free_Log_Conf_Ex (_In_ LOG_CONF lcLogConfToBeFreed, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Free_Log_Conf_Handle (_In_ LOG_CONF lcLogConf)
 
CONFIGRET WINAPI CM_Free_Range_List (_In_ RANGE_LIST RangeList, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Free_Res_Des (_Out_ PRES_DES prdResDes, _In_ RES_DES rdResDes, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Free_Res_Des_Ex (_Out_ PRES_DES prdResDes, _In_ RES_DES rdResDes, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Free_Res_Des_Handle (_In_ RES_DES rdResDes)
 
CONFIGRET WINAPI CM_Free_Resource_Conflict_Handle (_In_ CONFLICT_LIST clConflictList)
 
CONFIGRET WINAPI CM_Get_Child (_Out_ PDEVINST pdnDevInst, _In_ DEVINST dnDevInst, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_Child_Ex (_Out_ PDEVINST pdnDevInst, _In_ DEVINST dnDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_Class_Key_NameA (_In_ LPGUID ClassGuid, _Out_writes_opt_(*pulLength) LPSTR pszKeyName, _Inout_ PULONG pulLength, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_Class_Key_NameW (_In_ LPGUID ClassGuid, _Out_writes_opt_(*pulLength) LPWSTR pszKeyName, _Inout_ PULONG pulLength, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_Class_Key_Name_ExA (_In_ LPGUID ClassGuid, _Out_writes_opt_(*pulLength) LPSTR pszKeyName, _Inout_ PULONG pulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_Class_Key_Name_ExW (_In_ LPGUID ClassGuid, _Out_writes_opt_(*pulLength) LPWSTR pszKeyName, _Inout_ PULONG pulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_Class_NameA (_In_ LPGUID ClassGuid, _Out_writes_opt_(*pulLength) PCHAR Buffer, _Inout_ PULONG pulLength, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_Class_NameW (_In_ LPGUID ClassGuid, _Out_writes_opt_(*pulLength) PWCHAR Buffer, _Inout_ PULONG pulLength, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_Class_Name_ExA (_In_ LPGUID ClassGuid, _Out_writes_opt_(*pulLength) PCHAR Buffer, _Inout_ PULONG pulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_Class_Name_ExW (_In_ LPGUID ClassGuid, _Out_writes_opt_(*pulLength) PWCHAR Buffer, _Inout_ PULONG pulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_Class_Registry_PropertyA (LPGUID ClassGuid, ULONG ulProperty, PULONG pulRegDataType, PVOID Buffer, PULONG pulLength, ULONG ulFlags, HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_Class_Registry_PropertyW (LPGUID ClassGuid, ULONG ulProperty, PULONG pulRegDataType, PVOID Buffer, PULONG pulLength, ULONG ulFlags, HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_Depth (_Out_ PULONG pulDepth, _In_ DEVINST dnDevInst, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_Depth_Ex (_Out_ PULONG pulDepth, _In_ DEVINST dnDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_DevNode_Custom_PropertyA (_In_ DEVINST dnDevInst, _In_ PCSTR pszCustomPropertyName, _Out_opt_ PULONG pulRegDataType, _Out_writes_bytes_opt_(*pulLength) PVOID Buffer, _Inout_ PULONG pulLength, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_DevNode_Custom_PropertyW (_In_ DEVINST dnDevInst, _In_ PCWSTR pszCustomPropertyName, _Out_opt_ PULONG pulRegDataType, _Out_writes_bytes_opt_(*pulLength) PVOID Buffer, _Inout_ PULONG pulLength, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_DevNode_Custom_Property_ExA (_In_ DEVINST dnDevInst, _In_ PCSTR pszCustomPropertyName, _Out_opt_ PULONG pulRegDataType, _Out_writes_bytes_opt_(*pulLength) PVOID Buffer, _Inout_ PULONG pulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_DevNode_Custom_Property_ExW (_In_ DEVINST dnDevInst, _In_ PCWSTR pszCustomPropertyName, _Out_opt_ PULONG pulRegDataType, _Out_writes_bytes_opt_(*pulLength) PVOID Buffer, _Inout_ PULONG pulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_DevNode_Registry_PropertyA (_In_ DEVINST dnDevInst, _In_ ULONG ulProperty, _Out_opt_ PULONG pulRegDataType, _Out_writes_bytes_opt_(*pulLength) PVOID Buffer, _Inout_ PULONG pulLength, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_DevNode_Registry_PropertyW (_In_ DEVINST dnDevInst, _In_ ULONG ulProperty, _Out_opt_ PULONG pulRegDataType, _Out_writes_bytes_opt_(*pulLength) PVOID Buffer, _Inout_ PULONG pulLength, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_DevNode_Registry_Property_ExA (_In_ DEVINST dnDevInst, _In_ ULONG ulProperty, _Out_opt_ PULONG pulRegDataType, _Out_writes_bytes_opt_(*pulLength) PVOID Buffer, _Inout_ PULONG pulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_DevNode_Registry_Property_ExW (_In_ DEVINST dnDevInst, _In_ ULONG ulProperty, _Out_opt_ PULONG pulRegDataType, _Out_writes_bytes_opt_(*pulLength) PVOID Buffer, _Inout_ PULONG pulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_DevNode_Status (_Out_ PULONG pulStatus, _Out_ PULONG pulProblemNumber, _In_ DEVINST dnDevInst, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_DevNode_Status_Ex (_Out_ PULONG pulStatus, _Out_ PULONG pulProblemNumber, _In_ DEVINST dnDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_Device_IDA (_In_ DEVINST dnDevInst, _Out_writes_(BufferLen) PCHAR Buffer, _In_ ULONG BufferLen, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_Device_IDW (_In_ DEVINST dnDevInst, _Out_writes_(BufferLen) PWCHAR Buffer, _In_ ULONG BufferLen, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_Device_ID_ExA (_In_ DEVINST dnDevInst, _Out_writes_(BufferLen) PCHAR Buffer, _In_ ULONG BufferLen, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_Device_ID_ExW (_In_ DEVINST dnDevInst, _Out_writes_(BufferLen) PWCHAR Buffer, _In_ ULONG BufferLen, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_Device_ID_ListA (_In_ PCSTR pszFilter, _Out_writes_(BufferLen) PCHAR Buffer, _In_ ULONG BufferLen, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_Device_ID_ListW (_In_ PCWSTR pszFilter, _Out_writes_(BufferLen) PWCHAR Buffer, _In_ ULONG BufferLen, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_Device_ID_List_ExA (_In_ PCSTR pszFilter, _Out_writes_(BufferLen) PCHAR Buffer, _In_ ULONG BufferLen, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_Device_ID_List_ExW (_In_ PCWSTR pszFilter, _Out_writes_(BufferLen) PWCHAR Buffer, _In_ ULONG BufferLen, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_Device_ID_List_SizeA (_Out_ PULONG pulLen, _In_opt_ PCSTR pszFilter, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_Device_ID_List_SizeW (_Out_ PULONG pulLen, _In_opt_ PCWSTR pszFilter, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_Device_ID_List_Size_ExA (_Out_ PULONG pulLen, _In_opt_ PCSTR pszFilter, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_Device_ID_List_Size_ExW (_Out_ PULONG pulLen, _In_opt_ PCWSTR pszFilter, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_Device_ID_Size (_Out_ PULONG pulLen, _In_ DEVINST dnDevInst, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_Device_ID_Size_Ex (_Out_ PULONG pulLen, _In_ DEVINST dnDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_Device_Interface_AliasA (_In_ LPCSTR pszDeviceInterface, _In_ LPGUID AliasInterfaceGuid, _Out_writes_(*pulLength) LPSTR pszAliasDeviceInterface, _Inout_ PULONG pulLength, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_Device_Interface_AliasW (_In_ LPCWSTR pszDeviceInterface, _In_ LPGUID AliasInterfaceGuid, _Out_writes_(*pulLength) LPWSTR pszAliasDeviceInterface, _Inout_ PULONG pulLength, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_Device_Interface_Alias_ExA (_In_ LPCSTR pszDeviceInterface, _In_ LPGUID AliasInterfaceGuid, _Out_writes_(*pulLength) LPSTR pszAliasDeviceInterface, _Inout_ PULONG pulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_Device_Interface_Alias_ExW (_In_ LPCWSTR pszDeviceInterface, _In_ LPGUID AliasInterfaceGuid, _Out_writes_(*pulLength) LPWSTR pszAliasDeviceInterface, _Inout_ PULONG pulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_Device_Interface_ListA (_In_ LPGUID InterfaceClassGuid, _In_opt_ DEVINSTID_A pDeviceID, _Out_writes_(BufferLen) PCHAR Buffer, _In_ ULONG BufferLen, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_Device_Interface_ListW (_In_ LPGUID InterfaceClassGuid, _In_opt_ DEVINSTID_W pDeviceID, _Out_writes_(BufferLen) PWCHAR Buffer, _In_ ULONG BufferLen, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_Device_Interface_List_ExA (_In_ LPGUID InterfaceClassGuid, _In_opt_ DEVINSTID_A pDeviceID, _Out_writes_(BufferLen) PCHAR Buffer, _In_ ULONG BufferLen, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_Device_Interface_List_ExW (_In_ LPGUID InterfaceClassGuid, _In_opt_ DEVINSTID_W pDeviceID, _Out_writes_(BufferLen) PWCHAR Buffer, _In_ ULONG BufferLen, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_Device_Interface_List_SizeA (_Out_ PULONG pulLen, _In_ LPGUID InterfaceClassGuid, _In_opt_ DEVINSTID_A pDeviceID, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_Device_Interface_List_SizeW (_Out_ PULONG pulLen, _In_ LPGUID InterfaceClassGuid, _In_opt_ DEVINSTID_W pDeviceID, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_Device_Interface_List_Size_ExA (_Out_ PULONG pulLen, _In_ LPGUID InterfaceClassGuid, _In_opt_ DEVINSTID_A pDeviceID, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_Device_Interface_List_Size_ExW (_Out_ PULONG pulLen, _In_ LPGUID InterfaceClassGuid, _In_opt_ DEVINSTID_W pDeviceID, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_First_Log_Conf (_Out_opt_ PLOG_CONF plcLogConf, _In_ DEVINST dnDevInst, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_First_Log_Conf_Ex (_Out_opt_ PLOG_CONF plcLogConf, _In_ DEVINST dnDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_Global_State (_Out_ PULONG pulState, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_Global_State_Ex (_Out_ PULONG pulState, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_HW_Prof_FlagsA (_In_ DEVINSTID_A szDevInstName, _In_ ULONG ulHardwareProfile, _Out_ PULONG pulValue, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_HW_Prof_FlagsW (_In_ DEVINSTID_W szDevInstName, _In_ ULONG ulHardwareProfile, _Out_ PULONG pulValue, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_HW_Prof_Flags_ExA (_In_ DEVINSTID_A szDevInstName, _In_ ULONG ulHardwareProfile, _Out_ PULONG pulValue, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_HW_Prof_Flags_ExW (_In_ DEVINSTID_W szDevInstName, _In_ ULONG ulHardwareProfile, _Out_ PULONG pulValue, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_Hardware_Profile_InfoA (_In_ ULONG ulIndex, _Out_ PHWPROFILEINFO_A pHWProfileInfo, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_Hardware_Profile_InfoW (_In_ ULONG ulIndex, _Out_ PHWPROFILEINFO_W pHWProfileInfo, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_Hardware_Profile_Info_ExA (_In_ ULONG ulIndex, _Out_ PHWPROFILEINFO_A pHWProfileInfo, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_Hardware_Profile_Info_ExW (_In_ ULONG ulIndex, _Out_ PHWPROFILEINFO_W pHWProfileInfo, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_Log_Conf_Priority (_In_ LOG_CONF lcLogConf, _Out_ PPRIORITY pPriority, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_Log_Conf_Priority_Ex (_In_ LOG_CONF lcLogConf, _Out_ PPRIORITY pPriority, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_Next_Log_Conf (_Out_opt_ PLOG_CONF plcLogConf, _In_ LOG_CONF lcLogConf, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_Next_Log_Conf_Ex (_Out_opt_ PLOG_CONF plcLogConf, _In_ LOG_CONF lcLogConf, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_Next_Res_Des (_Out_ PRES_DES prdResDes, _In_ RES_DES rdResDes, _In_ RESOURCEID ForResource, _Out_opt_ PRESOURCEID pResourceID, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_Next_Res_Des_Ex (_Out_ PRES_DES prdResDes, _In_ RES_DES rdResDes, _In_ RESOURCEID ForResource, _Out_opt_ PRESOURCEID pResourceID, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_Parent (_Out_ PDEVINST pdnDevInst, _In_ DEVINST dnDevInst, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_Parent_Ex (_Out_ PDEVINST pdnDevInst, _In_ DEVINST dnDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_Res_Des_Data (_In_ RES_DES rdResDes, _Out_writes_bytes_(BufferLen) PVOID Buffer, _In_ ULONG BufferLen, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_Res_Des_Data_Ex (_In_ RES_DES rdResDes, _Out_writes_bytes_(BufferLen) PVOID Buffer, _In_ ULONG BufferLen, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_Res_Des_Data_Size (_Out_ PULONG pulSize, _In_ RES_DES rdResDes, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_Res_Des_Data_Size_Ex (_Out_ PULONG pulSize, _In_ RES_DES rdResDes, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Get_Resource_Conflict_Count (_In_ CONFLICT_LIST clConflictList, _Out_ PULONG pulCount)
 
CONFIGRET WINAPI CM_Get_Resource_Conflict_DetailsA (_In_ CONFLICT_LIST clConflictList, _In_ ULONG ulIndex, _Inout_ PCONFLICT_DETAILS_A pConflictDetails)
 
CONFIGRET WINAPI CM_Get_Resource_Conflict_DetailsW (_In_ CONFLICT_LIST clConflictList, _In_ ULONG ulIndex, _Inout_ PCONFLICT_DETAILS_W pConflictDetails)
 
CONFIGRET WINAPI CM_Get_Sibling (_Out_ PDEVINST pdnDevInst, _In_ DEVINST dnDevInst, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Get_Sibling_Ex (_Out_ PDEVINST pdnDevInst, _In_ DEVINST dnDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
WORD WINAPI CM_Get_Version (VOID)
 
WORD WINAPI CM_Get_Version_Ex (_In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Intersect_Range_List (_In_ RANGE_LIST rlhOld1, _In_ RANGE_LIST rlhOld2, _In_ RANGE_LIST rlhNew, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Invert_Range_List (_In_ RANGE_LIST rlhOld, _In_ RANGE_LIST rlhNew, _In_ DWORDLONG ullMaxValue, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Is_Dock_Station_Present (_Out_ PBOOL pbPresent)
 
CONFIGRET WINAPI CM_Is_Dock_Station_Present_Ex (_Out_ PBOOL pbPresent, _In_opt_ HMACHINE hMachine)
 
BOOL WINAPI CM_Is_Version_Available (_In_ WORD wVersion)
 
BOOL WINAPI CM_Is_Version_Available_Ex (_In_ WORD wVersion, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Locate_DevNodeA (_Out_ PDEVINST pdnDevInst, _In_opt_ DEVINSTID_A pDeviceID, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Locate_DevNodeW (_Out_ PDEVINST pdnDevInst, _In_opt_ DEVINSTID_W pDeviceID, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Locate_DevNode_ExA (_Out_ PDEVINST pdnDevInst, _In_opt_ DEVINSTID_A pDeviceID, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Locate_DevNode_ExW (_Out_ PDEVINST pdnDevInst, _In_opt_ DEVINSTID_W pDeviceID, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Merge_Range_List (_In_ RANGE_LIST rlhOld1, _In_ RANGE_LIST rlhOld2, _In_ RANGE_LIST rlhNew, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Modify_Res_Des (_Out_ PRES_DES prdResDes, _In_ RES_DES rdResDes, _In_ RESOURCEID ResourceID, _In_reads_bytes_(ResourceLen) PCVOID ResourceData, _In_ ULONG ResourceLen, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Modify_Res_Des_Ex (_Out_ PRES_DES prdResDes, _In_ RES_DES rdResDes, _In_ RESOURCEID ResourceID, _In_reads_bytes_(ResourceLen) PCVOID ResourceData, _In_ ULONG ResourceLen, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Move_DevNode (_In_ DEVINST dnFromDevInst, _In_ DEVINST dnToDevInst, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Move_DevNode_Ex (_In_ DEVINST dnFromDevInst, _In_ DEVINST dnToDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Next_Range (_Inout_ PRANGE_ELEMENT preElement, _Out_ PDWORDLONG pullStart, _Out_ PDWORDLONG pullEnd, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Open_Class_KeyA (_In_opt_ LPGUID pClassGuid, _In_opt_ LPCSTR pszClassName, _In_ REGSAM samDesired, _In_ REGDISPOSITION Disposition, _Out_ PHKEY phkClass, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Open_Class_KeyW (_In_opt_ LPGUID pClassGuid, _In_opt_ LPCWSTR pszClassName, _In_ REGSAM samDesired, _In_ REGDISPOSITION Disposition, _Out_ PHKEY phkClass, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Open_Class_Key_ExA (_In_opt_ LPGUID pClassGuid, _In_opt_ LPCSTR pszClassName, _In_ REGSAM samDesired, _In_ REGDISPOSITION Disposition, _Out_ PHKEY phkClass, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Open_Class_Key_ExW (_In_opt_ LPGUID pClassGuid, _In_opt_ LPCWSTR pszClassName, _In_ REGSAM samDesired, _In_ REGDISPOSITION Disposition, _Out_ PHKEY phkClass, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Open_DevNode_Key (_In_ DEVINST dnDevNode, _In_ REGSAM samDesired, _In_ ULONG ulHardwareProfile, _In_ REGDISPOSITION Disposition, _Out_ PHKEY phkDevice, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Open_DevNode_Key_Ex (_In_ DEVINST dnDevNode, _In_ REGSAM samDesired, _In_ ULONG ulHardwareProfile, _In_ REGDISPOSITION Disposition, _Out_ PHKEY phkDevice, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Query_And_Remove_SubTreeA (_In_ DEVINST dnAncestor, _Out_opt_ PPNP_VETO_TYPE pVetoType, _Out_writes_opt_(ulNameLength) LPSTR pszVetoName, _In_ ULONG ulNameLength, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Query_And_Remove_SubTreeW (_In_ DEVINST dnAncestor, _Out_opt_ PPNP_VETO_TYPE pVetoType, _Out_writes_opt_(ulNameLength) LPWSTR pszVetoName, _In_ ULONG ulNameLength, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Query_And_Remove_SubTree_ExA (_In_ DEVINST dnAncestor, _Out_opt_ PPNP_VETO_TYPE pVetoType, _Out_writes_opt_(ulNameLength) LPSTR pszVetoName, _In_ ULONG ulNameLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Query_And_Remove_SubTree_ExW (_In_ DEVINST dnAncestor, _Out_opt_ PPNP_VETO_TYPE pVetoType, _Out_writes_opt_(ulNameLength) LPWSTR pszVetoName, _In_ ULONG ulNameLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Query_Arbitrator_Free_Data (_Out_writes_bytes_(DataLen) PVOID pData, _In_ ULONG DataLen, _In_ DEVINST dnDevInst, _In_ RESOURCEID ResourceID, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Query_Arbitrator_Free_Data_Ex (_Out_writes_bytes_(DataLen) PVOID pData, _In_ ULONG DataLen, _In_ DEVINST dnDevInst, _In_ RESOURCEID ResourceID, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Query_Arbitrator_Free_Size (_Out_ PULONG pulSize, _In_ DEVINST dnDevInst, _In_ RESOURCEID ResourceID, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Query_Arbitrator_Free_Size_Ex (_Out_ PULONG pulSize, _In_ DEVINST dnDevInst, _In_ RESOURCEID ResourceID, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Query_Remove_SubTree (_In_ DEVINST dnAncestor, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Query_Remove_SubTree_Ex (_In_ DEVINST dnAncestor, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Query_Resource_Conflict_List (_Out_ PCONFLICT_LIST pclConflictList, _In_ DEVINST dnDevInst, _In_ RESOURCEID ResourceID, _In_ PCVOID ResourceData, _In_ ULONG ResourceLen, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Reenumerate_DevNode (_In_ DEVINST dnDevInst, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Reenumerate_DevNode_Ex (_In_ DEVINST dnDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Register_Device_Driver (_In_ DEVINST dnDevInst, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Register_Device_Driver_Ex (_In_ DEVINST dnDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Register_Device_InterfaceA (_In_ DEVINST dnDevInst, _In_ LPGUID InterfaceClassGuid, _In_opt_ LPCSTR pszReference, _Out_writes_(*pulLength) LPSTR pszDeviceInterface, _Inout_ PULONG pulLength, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Register_Device_InterfaceW (_In_ DEVINST dnDevInst, _In_ LPGUID InterfaceClassGuid, _In_opt_ LPCWSTR pszReference, _Out_writes_(*pulLength) LPWSTR pszDeviceInterface, _Inout_ PULONG pulLength, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Register_Device_Interface_ExA (_In_ DEVINST dnDevInst, _In_ LPGUID InterfaceClassGuid, _In_opt_ LPCSTR pszReference, _Out_writes_(*pulLength) LPSTR pszDeviceInterface, _Inout_ PULONG pulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Register_Device_Interface_ExW (_In_ DEVINST dnDevInst, _In_ LPGUID InterfaceClassGuid, _In_opt_ LPCWSTR pszReference, _Out_writes_(*pulLength) LPWSTR pszDeviceInterface, _Inout_ PULONG pulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Remove_SubTree (_In_ DEVINST dnAncestor, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Remove_SubTree_Ex (_In_ DEVINST dnAncestor, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Request_Device_EjectA (_In_ DEVINST dnDevInst, _Out_opt_ PPNP_VETO_TYPE pVetoType, _Out_writes_opt_(ulNameLength) LPSTR pszVetoName, _In_ ULONG ulNameLength, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Request_Device_EjectW (_In_ DEVINST dnDevInst, _Out_opt_ PPNP_VETO_TYPE pVetoType, _Out_writes_opt_(ulNameLength) LPWSTR pszVetoName, _In_ ULONG ulNameLength, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Request_Device_Eject_ExA (_In_ DEVINST dnDevInst, _Out_opt_ PPNP_VETO_TYPE pVetoType, _Out_writes_opt_(ulNameLength) LPSTR pszVetoName, _In_ ULONG ulNameLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Request_Device_Eject_ExW (_In_ DEVINST dnDevInst, _Out_opt_ PPNP_VETO_TYPE pVetoType, _Out_writes_opt_(ulNameLength) LPWSTR pszVetoName, _In_ ULONG ulNameLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Request_Eject_PC (VOID)
 
CONFIGRET WINAPI CM_Request_Eject_PC_Ex (_In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Run_Detection (_In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Run_Detection_Ex (_In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Set_Class_Registry_PropertyA (_In_ LPGUID ClassGuid, _In_ ULONG ulProperty, _In_reads_bytes_opt_(ulLength) PCVOID Buffer, _In_ ULONG ulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Set_Class_Registry_PropertyW (_In_ LPGUID ClassGuid, _In_ ULONG ulProperty, _In_reads_bytes_opt_(ulLength) PCVOID Buffer, _In_ ULONG ulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Set_DevNode_Problem (_In_ DEVINST dnDevInst, _In_ ULONG ulProblem, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Set_DevNode_Problem_Ex (_In_ DEVINST dnDevInst, _In_ ULONG ulProblem, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Set_DevNode_Registry_PropertyA (_In_ DEVINST dnDevInst, _In_ ULONG ulProperty, _In_reads_bytes_opt_(ulLength) PCVOID Buffer, _In_ ULONG ulLength, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Set_DevNode_Registry_PropertyW (_In_ DEVINST dnDevInst, _In_ ULONG ulProperty, _In_reads_bytes_opt_(ulLength) PCVOID Buffer, _In_ ULONG ulLength, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Set_DevNode_Registry_Property_ExA (_In_ DEVINST dnDevInst, _In_ ULONG ulProperty, _In_reads_bytes_opt_(ulLength) PCVOID Buffer, _In_ ULONG ulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Set_DevNode_Registry_Property_ExW (_In_ DEVINST dnDevInst, _In_ ULONG ulProperty, _In_reads_bytes_opt_(ulLength) PCVOID Buffer, _In_ ULONG ulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Set_HW_Prof (_In_ ULONG ulHardwareProfile, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Set_HW_Prof_Ex (_In_ ULONG ulHardwareProfile, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Set_HW_Prof_FlagsA (_In_ DEVINSTID_A szDevInstName, _In_ ULONG ulConfig, _In_ ULONG ulValue, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Set_HW_Prof_FlagsW (_In_ DEVINSTID_W szDevInstName, _In_ ULONG ulConfig, _In_ ULONG ulValue, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Set_HW_Prof_Flags_ExA (_In_ DEVINSTID_A szDevInstName, _In_ ULONG ulConfig, _In_ ULONG ulValue, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Set_HW_Prof_Flags_ExW (_In_ DEVINSTID_W szDevInstName, _In_ ULONG ulConfig, _In_ ULONG ulValue, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Setup_DevNode (_In_ DEVINST dnDevInst, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Setup_DevNode_Ex (_In_ DEVINST dnDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Test_Range_Available (_In_ DWORDLONG ullStartValue, _In_ DWORDLONG ullEndValue, _In_ RANGE_LIST rlh, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Uninstall_DevNode (_In_ DEVINST dnPhantom, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Uninstall_DevNode_Ex (_In_ DEVINST dnPhantom, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Unregister_Device_InterfaceA (_In_ LPCSTR pszDeviceInterface, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Unregister_Device_InterfaceW (_In_ LPCWSTR pszDeviceInterface, _In_ ULONG ulFlags)
 
CONFIGRET WINAPI CM_Unregister_Device_Interface_ExA (_In_ LPCSTR pszDeviceInterface, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 
CONFIGRET WINAPI CM_Unregister_Device_Interface_ExW (_In_ LPCWSTR pszDeviceInterface, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
 

Variables

static const WCHAR BackslashOpenBrace [] = {'\\', '{', 0}
 
static const WCHAR CloseBrace [] = {'}', 0}
 
static const WCHAR Class [] = {'C','l','a','s','s',0}
 
static const WCHAR ControlClass []
 
static const WCHAR DeviceClasses []
 

Macro Definition Documentation

◆ CONFLICT_MAGIC

#define CONFLICT_MAGIC   0x11225588

Definition at line 106 of file cfgmgr.c.

◆ LOG_CONF_MAGIC

#define LOG_CONF_MAGIC   0x464E434C /* "LCNF" */

Definition at line 71 of file cfgmgr.c.

◆ NOTIFY_MAGIC

#define NOTIFY_MAGIC   0x44556677

Definition at line 80 of file cfgmgr.c.

◆ RANGE_LIST_MAGIC

#define RANGE_LIST_MAGIC   0x33445566

Definition at line 98 of file cfgmgr.c.

Typedef Documentation

◆ CONFLICT_DATA

◆ INTERNAL_RANGE

◆ INTERNAL_RANGE_LIST

◆ LOG_CONF_INFO

◆ MACHINE_INFO

◆ NOTIFY_DATA

◆ PCONFLICT_DATA

◆ PINTERNAL_RANGE

◆ PINTERNAL_RANGE_LIST

◆ PLOG_CONF_INFO

◆ PMACHINE_INFO

◆ PNOTIFY_DATA

Function Documentation

◆ CM_Add_Empty_Log_Conf()

CONFIGRET WINAPI CM_Add_Empty_Log_Conf ( _Out_ PLOG_CONF  plcLogConf,
_In_ DEVINST  dnDevInst,
_In_ PRIORITY  Priority,
_In_ ULONG  ulFlags 
)

Definition at line 865 of file cfgmgr.c.

870{
871 TRACE("CM_Add_Empty_Log_Conf(%p %p %lu %lx)\n",
872 plcLogConf, dnDevInst, Priority, ulFlags);
873
874 return CM_Add_Empty_Log_Conf_Ex(plcLogConf, dnDevInst, Priority,
875 ulFlags, NULL);
876}
CONFIGRET WINAPI CM_Add_Empty_Log_Conf_Ex(_Out_ PLOG_CONF plcLogConf, _In_ DEVINST dnDevInst, _In_ PRIORITY Priority, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:884
#define NULL
Definition: types.h:112
#define TRACE(s)
Definition: solgame.cpp:4
_In_ WDFINTERRUPT _In_ WDF_INTERRUPT_POLICY _In_ WDF_INTERRUPT_PRIORITY Priority
Definition: wdfinterrupt.h:655

◆ CM_Add_Empty_Log_Conf_Ex()

CONFIGRET WINAPI CM_Add_Empty_Log_Conf_Ex ( _Out_ PLOG_CONF  plcLogConf,
_In_ DEVINST  dnDevInst,
_In_ PRIORITY  Priority,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 884 of file cfgmgr.c.

890{
892 HSTRING_TABLE StringTable = NULL;
893 ULONG ulLogConfTag = 0;
894 LPWSTR lpDevInst;
895 PLOG_CONF_INFO pLogConfInfo;
897
898 FIXME("CM_Add_Empty_Log_Conf_Ex(%p %p %lu %lx %p)\n",
899 plcLogConf, dnDevInst, Priority, ulFlags, hMachine);
900
901 if (!pSetupIsUserAdmin())
902 return CR_ACCESS_DENIED;
903
904 if (plcLogConf == NULL)
905 return CR_INVALID_POINTER;
906
907 if (dnDevInst == 0)
908 return CR_INVALID_DEVINST;
909
910 if (Priority > 0xFFFF)
911 return CR_INVALID_PRIORITY;
912
913 if (ulFlags & ~(LOG_CONF_BITS | PRIORITY_BIT))
914 return CR_INVALID_FLAG;
915
916 if (hMachine != NULL)
917 {
918 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
919 if (BindingHandle == NULL)
920 return CR_FAILURE;
921
922 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
923 if (StringTable == 0)
924 return CR_FAILURE;
925 }
926 else
927 {
928 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
929 return CR_FAILURE;
930 }
931
932 lpDevInst = pSetupStringTableStringFromId(StringTable, dnDevInst);
933 if (lpDevInst == NULL)
934 return CR_INVALID_DEVNODE;
935
937 {
939 &ulLogConfTag, ulFlags);
940 }
942 {
944 }
946
947 if (ret == CR_SUCCESS)
948 {
949 pLogConfInfo = HeapAlloc(GetProcessHeap(), 0, sizeof(LOG_CONF_INFO));
950 if (pLogConfInfo == NULL)
951 {
953 }
954 else
955 {
956 pLogConfInfo->ulMagic = LOG_CONF_MAGIC;
957 pLogConfInfo->dnDevInst = dnDevInst;
958 pLogConfInfo->ulType = ulFlags;
959 pLogConfInfo->ulTag = ulLogConfTag;
960
961 *plcLogConf = (LOG_CONF)pLogConfInfo;
962
963 ret = CR_SUCCESS;
964 }
965 }
966
967 return ret;
968}
DWORD WINAPI PNP_AddEmptyLogConf(handle_t hBinding, LPWSTR pDeviceID, DWORD ulPriority, DWORD *pulLogConfTag, DWORD ulFlags)
Definition: rpcserver.c:4161
#define FIXME(fmt,...)
Definition: debug.h:111
#define CR_OUT_OF_MEMORY
Definition: cfgmgr32.h:844
#define CR_INVALID_PRIORITY
Definition: cfgmgr32.h:885
DWORD_PTR LOG_CONF
Definition: cfgmgr32.h:90
#define CR_FAILURE
Definition: cfgmgr32.h:865
#define CR_INVALID_DEVINST
Definition: cfgmgr32.h:848
#define LOG_CONF_BITS
Definition: cfgmgr32.h:603
#define PRIORITY_BIT
Definition: cfgmgr32.h:607
#define CR_ACCESS_DENIED
Definition: cfgmgr32.h:897
#define CR_INVALID_FLAG
Definition: cfgmgr32.h:846
RETURN_TYPE CONFIGRET
Definition: cfgmgr32.h:74
#define CR_INVALID_POINTER
Definition: cfgmgr32.h:845
#define CR_SUCCESS
Definition: cfgmgr32.h:842
#define CR_INVALID_DEVNODE
Definition: cfgmgr32.h:847
static CONFIGRET RpcStatusToCmStatus(_In_ RPC_STATUS Status)
Definition: cfgmgr.c:136
#define LOG_CONF_MAGIC
Definition: cfgmgr.c:71
struct _MACHINE_INFO * PMACHINE_INFO
#define GetProcessHeap()
Definition: compat.h:736
#define HeapAlloc
Definition: compat.h:733
BOOL WINAPI pSetupIsUserAdmin(VOID)
Definition: misc.c:1817
BOOL PnpGetLocalHandles(RPC_BINDING_HANDLE *BindingHandle, HSTRING_TABLE *StringTable)
Definition: rpc.c:66
LPWSTR WINAPI pSetupStringTableStringFromId(HSTRING_TABLE hStringTable, DWORD dwId)
Definition: stringtable.c:722
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
#define RpcEndExcept
Definition: rpc.h:128
#define RpcTryExcept
Definition: rpc.h:126
#define RpcExcept(expr)
Definition: rpc.h:127
#define RpcExceptionCode()
Definition: rpc.h:132
ULONG ulTag
Definition: cfgmgr.c:68
ULONG ulType
Definition: cfgmgr.c:67
DEVINST dnDevInst
Definition: cfgmgr.c:66
ULONG ulMagic
Definition: cfgmgr.c:65
_In_ ULONG _Out_ HANDLE * BindingHandle
Definition: tdikrnl.h:1147
uint32_t ULONG
Definition: typedefs.h:59
int ret
WCHAR * LPWSTR
Definition: xmlstorage.h:184

Referenced by CM_Add_Empty_Log_Conf().

◆ CM_Add_ID_ExA()

CONFIGRET WINAPI CM_Add_ID_ExA ( _In_ DEVINST  dnDevInst,
_In_ PSTR  pszID,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 1010 of file cfgmgr.c.

1015{
1016 PWSTR pszIDW;
1017 CONFIGRET ret;
1018
1019 TRACE("CM_Add_ID_ExA(%p %s %lx %p)\n",
1020 dnDevInst, debugstr_a(pszID), ulFlags, hMachine);
1021
1022 if (pSetupCaptureAndConvertAnsiArg(pszID, &pszIDW))
1023 return CR_INVALID_DATA;
1024
1025 ret = CM_Add_ID_ExW(dnDevInst, pszIDW, ulFlags, hMachine);
1026
1027 MyFree(pszIDW);
1028
1029 return ret;
1030}
#define CR_INVALID_DATA
Definition: cfgmgr32.h:877
CONFIGRET WINAPI CM_Add_ID_ExW(_In_ DEVINST dnDevInst, _In_ PWSTR pszID, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:1038
DWORD WINAPI pSetupCaptureAndConvertAnsiArg(LPCSTR pSrc, LPWSTR *pDst)
Definition: misc.c:574
VOID WINAPI MyFree(LPVOID lpMem)
Definition: misc.c:128
#define debugstr_a
Definition: kernel32.h:31
uint16_t * PWSTR
Definition: typedefs.h:56

Referenced by CM_Add_IDA().

◆ CM_Add_ID_ExW()

CONFIGRET WINAPI CM_Add_ID_ExW ( _In_ DEVINST  dnDevInst,
_In_ PWSTR  pszID,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 1038 of file cfgmgr.c.

1043{
1045 HSTRING_TABLE StringTable = NULL;
1046 LPWSTR lpDevInst;
1047 CONFIGRET ret;
1048
1049 TRACE("CM_Add_ID_ExW(%p %s %lx %p)\n",
1050 dnDevInst, debugstr_w(pszID), ulFlags, hMachine);
1051
1052 if (!pSetupIsUserAdmin())
1053 return CR_ACCESS_DENIED;
1054
1055 if (dnDevInst == 0)
1056 return CR_INVALID_DEVINST;
1057
1058 if (pszID == NULL)
1059 return CR_INVALID_POINTER;
1060
1061 if (ulFlags & ~CM_ADD_ID_BITS)
1062 return CR_INVALID_FLAG;
1063
1064 if (hMachine != NULL)
1065 {
1066 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
1067 if (BindingHandle == NULL)
1068 return CR_FAILURE;
1069
1070 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
1071 if (StringTable == 0)
1072 return CR_FAILURE;
1073 }
1074 else
1075 {
1076 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
1077 return CR_FAILURE;
1078 }
1079
1080 lpDevInst = pSetupStringTableStringFromId(StringTable, dnDevInst);
1081 if (lpDevInst == NULL)
1082 return CR_INVALID_DEVNODE;
1083
1085 {
1087 lpDevInst,
1088 pszID,
1089 ulFlags);
1090 }
1092 {
1094 }
1096
1097 return ret;
1098}
DWORD WINAPI PNP_AddID(handle_t hBinding, LPWSTR pszDeviceID, LPWSTR pszID, DWORD ulFlags)
Definition: rpcserver.c:3627
#define CM_ADD_ID_BITS
Definition: cfgmgr32.h:616
#define debugstr_w
Definition: kernel32.h:32

Referenced by CM_Add_ID_ExA(), and CM_Add_IDW().

◆ CM_Add_IDA()

CONFIGRET WINAPI CM_Add_IDA ( _In_ DEVINST  dnDevInst,
_In_ PSTR  pszID,
_In_ ULONG  ulFlags 
)

Definition at line 976 of file cfgmgr.c.

980{
981 TRACE("CM_Add_IDA(%p %s %lx)\n",
982 dnDevInst, debugstr_a(pszID), ulFlags);
983
984 return CM_Add_ID_ExA(dnDevInst, pszID, ulFlags, NULL);
985}
CONFIGRET WINAPI CM_Add_ID_ExA(_In_ DEVINST dnDevInst, _In_ PSTR pszID, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:1010

◆ CM_Add_IDW()

CONFIGRET WINAPI CM_Add_IDW ( _In_ DEVINST  dnDevInst,
_In_ PWSTR  pszID,
_In_ ULONG  ulFlags 
)

Definition at line 993 of file cfgmgr.c.

997{
998 TRACE("CM_Add_IDW(%p %s %lx)\n",
999 dnDevInst, debugstr_w(pszID), ulFlags);
1000
1001 return CM_Add_ID_ExW(dnDevInst, pszID, ulFlags, NULL);
1002}

◆ CM_Add_Range()

CONFIGRET WINAPI CM_Add_Range ( _In_ DWORDLONG  ullStartValue,
_In_ DWORDLONG  ullEndValue,
_In_ RANGE_LIST  rlh,
_In_ ULONG  ulFlags 
)

Definition at line 1106 of file cfgmgr.c.

1111{
1112 PINTERNAL_RANGE_LIST pRangeList;
1113 PINTERNAL_RANGE pRange;
1115
1116 FIXME("CM_Add_Range(%I64u %I64u %p %lx)\n",
1117 ullStartValue, ullEndValue, rlh, ulFlags);
1118
1119 pRangeList = (PINTERNAL_RANGE_LIST)rlh;
1120
1121 if (!IsValidRangeList(pRangeList))
1122 return CR_INVALID_RANGE_LIST;
1123
1124 if (ulFlags & ~CM_ADD_RANGE_BITS)
1125 return CR_INVALID_FLAG;
1126
1127 if (ullEndValue < ullStartValue)
1128 return CR_INVALID_RANGE;
1129
1130 /* Lock the range list */
1131 WaitForSingleObject(pRangeList->hMutex, INFINITE);
1132
1133 /* Allocate the new range */
1134 pRange = HeapAlloc(GetProcessHeap(), 0, sizeof(INTERNAL_RANGE));
1135 if (pRange == NULL)
1136 {
1138 goto done;
1139 }
1140
1141 pRange->pRangeList = pRangeList;
1142 pRange->ullStart = ullStartValue;
1143 pRange->ullEnd = ullEndValue;
1144
1145 /* Insert the range */
1146 if (IsListEmpty(&pRangeList->ListHead))
1147 {
1148 InsertTailList(&pRangeList->ListHead, &pRange->ListEntry);
1149 }
1150 else
1151 {
1152 HeapFree(GetProcessHeap(), 0, pRange);
1154 }
1155
1156done:
1157 /* Unlock the range list */
1158 ReleaseMutex(pRangeList->hMutex);
1159
1160 return ret;
1161}
#define UNIMPLEMENTED
Definition: debug.h:115
#define CM_ADD_RANGE_BITS
Definition: cfgmgr32.h:594
#define CR_INVALID_RANGE
Definition: cfgmgr32.h:864
#define CR_INVALID_RANGE_LIST
Definition: cfgmgr32.h:863
struct _INTERNAL_RANGE_LIST * PINTERNAL_RANGE_LIST
BOOL IsValidRangeList(_In_opt_ PINTERNAL_RANGE_LIST pRangeList)
Definition: cfgmgr.c:390
#define HeapFree(x, y, z)
Definition: compat.h:735
#define INFINITE
Definition: serial.h:102
#define InsertTailList(ListHead, Entry)
#define IsListEmpty(ListHead)
Definition: env_spec_w32.h:954
LIST_ENTRY ListHead
Definition: cfgmgr.c:95
DWORDLONG ullEnd
Definition: cfgmgr.c:88
DWORDLONG ullStart
Definition: cfgmgr.c:87
struct _INTERNAL_RANGE_LIST * pRangeList
Definition: cfgmgr.c:86
LIST_ENTRY ListEntry
Definition: cfgmgr.c:85
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
Definition: synch.c:82
BOOL WINAPI DECLSPEC_HOTPATCH ReleaseMutex(IN HANDLE hMutex)
Definition: synch.c:618

◆ CM_Add_Res_Des()

CONFIGRET WINAPI CM_Add_Res_Des ( _Out_opt_ PRES_DES  prdResDes,
_In_ LOG_CONF  lcLogConf,
_In_ RESOURCEID  ResourceID,
_In_reads_bytes_(ResourceLen) PCVOID  ResourceData,
_In_ ULONG  ResourceLen,
_In_ ULONG  ulFlags 
)

Definition at line 1169 of file cfgmgr.c.

1176{
1177 TRACE("CM_Add_Res_Des(%p %p %lu %p %lu %lx)\n",
1178 prdResDes, lcLogConf, ResourceID, ResourceData, ResourceLen, ulFlags);
1179
1180 return CM_Add_Res_Des_Ex(prdResDes, lcLogConf, ResourceID, ResourceData,
1181 ResourceLen, ulFlags, NULL);
1182}
CONFIGRET WINAPI CM_Add_Res_Des_Ex(_Out_opt_ PRES_DES prdResDes, _In_ LOG_CONF lcLogConf, _In_ RESOURCEID ResourceID, _In_reads_bytes_(ResourceLen) PCVOID ResourceData, _In_ ULONG ResourceLen, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:1190

◆ CM_Add_Res_Des_Ex()

CONFIGRET WINAPI CM_Add_Res_Des_Ex ( _Out_opt_ PRES_DES  prdResDes,
_In_ LOG_CONF  lcLogConf,
_In_ RESOURCEID  ResourceID,
_In_reads_bytes_(ResourceLen) PCVOID  ResourceData,
_In_ ULONG  ResourceLen,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 1190 of file cfgmgr.c.

1198{
1199 FIXME("CM_Add_Res_Des_Ex(%p %p %lu %p %lu %lx %p)\n",
1200 prdResDes, lcLogConf, ResourceID,
1201 ResourceData, ResourceLen, ulFlags, hMachine);
1202
1204}
#define CR_CALL_NOT_IMPLEMENTED
Definition: cfgmgr32.h:898

Referenced by CM_Add_Res_Des().

◆ CM_Connect_MachineA()

CONFIGRET WINAPI CM_Connect_MachineA ( _In_opt_ PCSTR  UNCServerName,
_Out_ PHMACHINE  phMachine 
)

Definition at line 1212 of file cfgmgr.c.

1215{
1216 PWSTR pServerNameW;
1217 CONFIGRET ret;
1218
1219 TRACE("CM_Connect_MachineA(%s %p)\n",
1220 debugstr_a(UNCServerName), phMachine);
1221
1222 if (UNCServerName == NULL || *UNCServerName == 0)
1223 return CM_Connect_MachineW(NULL, phMachine);
1224
1225 if (pSetupCaptureAndConvertAnsiArg(UNCServerName, &pServerNameW))
1226 return CR_INVALID_DATA;
1227
1228 ret = CM_Connect_MachineW(pServerNameW, phMachine);
1229
1230 MyFree(pServerNameW);
1231
1232 return ret;
1233}
CONFIGRET WINAPI CM_Connect_MachineW(_In_opt_ PCWSTR UNCServerName, _Out_ PHMACHINE phMachine)
Definition: cfgmgr.c:1241

◆ CM_Connect_MachineW()

CONFIGRET WINAPI CM_Connect_MachineW ( _In_opt_ PCWSTR  UNCServerName,
_Out_ PHMACHINE  phMachine 
)

Definition at line 1241 of file cfgmgr.c.

1244{
1245 PMACHINE_INFO pMachine;
1246
1247 TRACE("CM_Connect_MachineW(%s %p)\n",
1248 debugstr_w(UNCServerName), phMachine);
1249
1250 if (phMachine == NULL)
1251 return CR_INVALID_POINTER;
1252
1253 *phMachine = NULL;
1254
1255 pMachine = HeapAlloc(GetProcessHeap(), 0, sizeof(MACHINE_INFO));
1256 if (pMachine == NULL)
1257 return CR_OUT_OF_MEMORY;
1258
1259 if (UNCServerName == NULL || *UNCServerName == 0)
1260 {
1261 pMachine->bLocal = TRUE;
1262
1263 /* FIXME: store the computers name in pMachine->szMachineName */
1264
1265 if (!PnpGetLocalHandles(&pMachine->BindingHandle,
1266 &pMachine->StringTable))
1267 {
1268 HeapFree(GetProcessHeap(), 0, pMachine);
1269 return CR_FAILURE;
1270 }
1271 }
1272 else
1273 {
1274 pMachine->bLocal = FALSE;
1275 if (wcslen(UNCServerName) >= SP_MAX_MACHINENAME_LENGTH - 1)
1276 {
1277 HeapFree(GetProcessHeap(), 0, pMachine);
1279 }
1280 lstrcpyW(pMachine->szMachineName, UNCServerName);
1281
1283 if (pMachine->StringTable == NULL)
1284 {
1285 HeapFree(GetProcessHeap(), 0, pMachine);
1286 return CR_FAILURE;
1287 }
1288
1289 pSetupStringTableAddString(pMachine->StringTable, L"PLT", 1);
1290
1291 if (!PnpBindRpc(UNCServerName, &pMachine->BindingHandle))
1292 {
1294 HeapFree(GetProcessHeap(), 0, pMachine);
1296 }
1297 }
1298
1299 *phMachine = (PHMACHINE)pMachine;
1300
1301 return CR_SUCCESS;
1302}
HMACHINE * PHMACHINE
Definition: cfgmgr32.h:109
#define CR_INVALID_MACHINENAME
Definition: cfgmgr32.h:893
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define lstrcpyW
Definition: compat.h:749
RPC_STATUS PnpBindRpc(LPCWSTR pszMachine, RPC_BINDING_HANDLE *BindingHandle)
Definition: rpc.c:28
HSTRING_TABLE WINAPI pSetupStringTableInitialize(VOID)
Definition: stringtable.c:54
DWORD WINAPI pSetupStringTableAddString(HSTRING_TABLE hStringTable, LPWSTR lpString, DWORD dwFlags)
Definition: stringtable.c:196
VOID WINAPI pSetupStringTableDestroy(HSTRING_TABLE hStringTable)
Definition: stringtable.c:145
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define L(x)
Definition: ntvdm.h:50
#define SP_MAX_MACHINENAME_LENGTH
Definition: setupapi.h:27
WCHAR szMachineName[SP_MAX_MACHINENAME_LENGTH]
Definition: cfgmgr.c:56
HSTRING_TABLE StringTable
Definition: cfgmgr.c:58
RPC_BINDING_HANDLE BindingHandle
Definition: cfgmgr.c:57
BOOL bLocal
Definition: cfgmgr.c:59

Referenced by CM_Connect_MachineA(), SetupDiBuildClassInfoListExW(), and SetupDiCreateDeviceInfoListExW().

◆ CM_Create_DevNode_ExA()

CONFIGRET WINAPI CM_Create_DevNode_ExA ( _Out_ PDEVINST  pdnDevInst,
_In_ DEVINSTID_A  pDeviceID,
_In_ DEVINST  dnParent,
_In_ ULONG  ulFlags,
_In_opt_ HANDLE  hMachine 
)

Definition at line 1348 of file cfgmgr.c.

1354{
1355 DEVINSTID_W pDeviceIDW;
1356 CONFIGRET ret;
1357
1358 TRACE("CM_Create_DevNode_ExA(%p %s %p %lx %p)\n",
1359 pdnDevInst, debugstr_a(pDeviceID), dnParent, ulFlags, hMachine);
1360
1361 if (pSetupCaptureAndConvertAnsiArg(pDeviceID, &pDeviceIDW))
1362 return CR_INVALID_DATA;
1363
1364 ret = CM_Create_DevNode_ExW(pdnDevInst, pDeviceIDW, dnParent, ulFlags,
1365 hMachine);
1366
1367 MyFree(pDeviceIDW);
1368
1369 return ret;
1370}
_Null_terminated_ WCHAR * DEVINSTID_W
Definition: cfgmgr32.h:80
CONFIGRET WINAPI CM_Create_DevNode_ExW(_Out_ PDEVINST pdnDevInst, _In_ DEVINSTID_W pDeviceID, _In_ DEVINST dnParent, _In_ ULONG ulFlags, _In_opt_ HANDLE hMachine)
Definition: cfgmgr.c:1378

Referenced by CM_Create_DevNodeA().

◆ CM_Create_DevNode_ExW()

CONFIGRET WINAPI CM_Create_DevNode_ExW ( _Out_ PDEVINST  pdnDevInst,
_In_ DEVINSTID_W  pDeviceID,
_In_ DEVINST  dnParent,
_In_ ULONG  ulFlags,
_In_opt_ HANDLE  hMachine 
)

Definition at line 1378 of file cfgmgr.c.

1384{
1386 HSTRING_TABLE StringTable = NULL;
1387 LPWSTR lpParentDevInst;
1389 WCHAR szLocalDeviceID[MAX_DEVICE_ID_LEN];
1390
1391 TRACE("CM_Create_DevNode_ExW(%p %s %p %lx %p)\n",
1392 pdnDevInst, debugstr_w(pDeviceID), dnParent, ulFlags, hMachine);
1393
1394 if (!pSetupIsUserAdmin())
1395 return CR_ACCESS_DENIED;
1396
1397 if (pdnDevInst == NULL)
1398 return CR_INVALID_POINTER;
1399
1400 if (pDeviceID == NULL || wcslen(pDeviceID) == 0 || wcslen(pDeviceID) >= MAX_DEVICE_ID_LEN)
1401 return CR_INVALID_DEVICE_ID;
1402
1403 if (dnParent == 0)
1404 return CR_INVALID_DEVNODE;
1405
1406 if (ulFlags & ~CM_CREATE_DEVNODE_BITS)
1407 return CR_INVALID_FLAG;
1408
1409 if (hMachine != NULL)
1410 {
1411 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
1412 if (BindingHandle == NULL)
1413 return CR_FAILURE;
1414
1415 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
1416 if (StringTable == 0)
1417 return CR_FAILURE;
1418 }
1419 else
1420 {
1421 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
1422 return CR_FAILURE;
1423 }
1424
1425 lpParentDevInst = pSetupStringTableStringFromId(StringTable, dnParent);
1426 if (lpParentDevInst == NULL)
1427 return CR_INVALID_DEVNODE;
1428
1429 wcscpy(szLocalDeviceID, pDeviceID);
1430
1432 {
1434 szLocalDeviceID,
1435 lpParentDevInst,
1437 ulFlags);
1438 }
1440 {
1442 }
1444
1445 if (ret == CR_SUCCESS)
1446 {
1447 /* If CM_CREATE_DEVINST_GENERATE_ID was passed in, PNP_CreateDevInst
1448 * will return the generated device ID in szLocalDeviceID */
1449 *pdnDevInst = pSetupStringTableAddString(StringTable, szLocalDeviceID, 1);
1450 if (*pdnDevInst == 0)
1452 }
1453
1454 return ret;
1455}
DWORD WINAPI PNP_CreateDevInst(handle_t hBinding, LPWSTR pszDeviceID, LPWSTR pszParentDeviceID, PNP_RPC_STRING_LEN ulLength, DWORD ulFlags)
Definition: rpcserver.c:3126
#define CR_INVALID_DEVICE_ID
Definition: cfgmgr32.h:876
#define CR_NO_SUCH_DEVNODE
Definition: cfgmgr32.h:857
#define CM_CREATE_DEVNODE_BITS
Definition: cfgmgr32.h:624
#define MAX_DEVICE_ID_LEN
Definition: devaction.c:40
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by CM_Create_DevNode_ExA(), and CM_Create_DevNodeW().

◆ CM_Create_DevNodeA()

CONFIGRET WINAPI CM_Create_DevNodeA ( _Out_ PDEVINST  pdnDevInst,
_In_ DEVINSTID_A  pDeviceID,
_In_ DEVINST  dnParent,
_In_ ULONG  ulFlags 
)

Definition at line 1310 of file cfgmgr.c.

1315{
1316 TRACE("CM_Create_DevNodeA(%p %s %p %lx)\n",
1317 pdnDevInst, debugstr_a(pDeviceID), dnParent, ulFlags);
1318
1319 return CM_Create_DevNode_ExA(pdnDevInst, pDeviceID, dnParent,
1320 ulFlags, NULL);
1321}
CONFIGRET WINAPI CM_Create_DevNode_ExA(_Out_ PDEVINST pdnDevInst, _In_ DEVINSTID_A pDeviceID, _In_ DEVINST dnParent, _In_ ULONG ulFlags, _In_opt_ HANDLE hMachine)
Definition: cfgmgr.c:1348

◆ CM_Create_DevNodeW()

CONFIGRET WINAPI CM_Create_DevNodeW ( _Out_ PDEVINST  pdnDevInst,
_In_ DEVINSTID_W  pDeviceID,
_In_ DEVINST  dnParent,
_In_ ULONG  ulFlags 
)

Definition at line 1329 of file cfgmgr.c.

1334{
1335 TRACE("CM_Create_DevNodeW(%p %s %p %lx)\n",
1336 pdnDevInst, debugstr_w(pDeviceID), dnParent, ulFlags);
1337
1338 return CM_Create_DevNode_ExW(pdnDevInst, pDeviceID, dnParent,
1339 ulFlags, NULL);
1340}

◆ CM_Create_Range_List()

CONFIGRET WINAPI CM_Create_Range_List ( _Out_ PRANGE_LIST  prlh,
_In_ ULONG  ulFlags 
)

Definition at line 1463 of file cfgmgr.c.

1466{
1467 PINTERNAL_RANGE_LIST pRangeList;
1468
1469 FIXME("CM_Create_Range_List(%p %lx)\n",
1470 prlh, ulFlags);
1471
1472 if (ulFlags != 0)
1473 return CR_INVALID_FLAG;
1474
1475 if (prlh == NULL)
1476 return CR_INVALID_POINTER;
1477
1478 /* Allocate the range list */
1480 if (pRangeList == NULL)
1481 return CR_OUT_OF_MEMORY;
1482
1483 /* Set the magic value */
1484 pRangeList->ulMagic = RANGE_LIST_MAGIC;
1485
1486 /* Initialize the mutex for synchonized access */
1487 pRangeList->hMutex = CreateMutex(NULL, FALSE, NULL);
1488 if (pRangeList->hMutex == NULL)
1489 {
1490 HeapFree(GetProcessHeap(), 0, pRangeList);
1491 return CR_FAILURE;
1492 }
1493
1494 InitializeListHead(&pRangeList->ListHead);
1495
1496 *prlh = (RANGE_LIST)pRangeList;
1497
1498 return CR_SUCCESS;
1499}
DWORD_PTR RANGE_LIST
Definition: cfgmgr32.h:102
#define RANGE_LIST_MAGIC
Definition: cfgmgr.c:98
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
#define InitializeListHead(ListHead)
Definition: env_spec_w32.h:944
#define CreateMutex
Definition: winbase.h:3756

◆ CM_Delete_Class_Key()

CONFIGRET WINAPI CM_Delete_Class_Key ( _In_ LPGUID  ClassGuid,
_In_ ULONG  ulFlags 
)

Definition at line 1507 of file cfgmgr.c.

1510{
1511 TRACE("CM_Delete_Class_Key(%p %lx)\n",
1512 ClassGuid, ulFlags);
1513
1514 return CM_Delete_Class_Key_Ex(ClassGuid, ulFlags, NULL);
1515}
CONFIGRET WINAPI CM_Delete_Class_Key_Ex(_In_ LPGUID ClassGuid, _In_ ULONG ulFlags, _In_opt_ HANDLE hMachine)
Definition: cfgmgr.c:1523

◆ CM_Delete_Class_Key_Ex()

CONFIGRET WINAPI CM_Delete_Class_Key_Ex ( _In_ LPGUID  ClassGuid,
_In_ ULONG  ulFlags,
_In_opt_ HANDLE  hMachine 
)

Definition at line 1523 of file cfgmgr.c.

1527{
1528 WCHAR szGuidString[MAX_GUID_STRING_LEN];
1530 CONFIGRET ret;
1531
1532 TRACE("CM_Delete_Class_Key_Ex(%p %lx %p)\n",
1533 ClassGuid, ulFlags, hMachine);
1534
1535 if (ClassGuid == NULL)
1536 return CR_INVALID_POINTER;
1537
1538 if (ulFlags & ~CM_DELETE_CLASS_BITS)
1539 return CR_INVALID_FLAG;
1540
1541 if (!GuidToString(ClassGuid, szGuidString))
1542 return CR_INVALID_DATA;
1543
1544 if (hMachine != NULL)
1545 {
1546 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
1547 if (BindingHandle == NULL)
1548 return CR_FAILURE;
1549 }
1550 else
1551 {
1553 return CR_FAILURE;
1554 }
1555
1557 {
1559 szGuidString,
1560 ulFlags);
1561 }
1563 {
1565 }
1567
1568 return ret;
1569}
DWORD WINAPI PNP_DeleteClassKey(handle_t hBinding, LPWSTR pszClassGuid, DWORD ulFlags)
Definition: rpcserver.c:2552
#define CM_DELETE_CLASS_BITS
Definition: cfgmgr32.h:639
static BOOL GuidToString(_In_ LPGUID Guid, _Out_ LPWSTR String)
Definition: cfgmgr.c:113
#define MAX_GUID_STRING_LEN
Definition: apphelp.c:29

Referenced by CM_Delete_Class_Key().

◆ CM_Delete_DevNode_Key()

CONFIGRET WINAPI CM_Delete_DevNode_Key ( _In_ DEVINST  dnDevInst,
_In_ ULONG  ulHardwareProfile,
_In_ ULONG  ulFlags 
)

Definition at line 1577 of file cfgmgr.c.

1581{
1582 TRACE("CM_Delete_DevNode_Key(%p %lu %lx)\n",
1583 dnDevInst, ulHardwareProfile, ulFlags);
1584
1585 return CM_Delete_DevNode_Key_Ex(dnDevInst, ulHardwareProfile, ulFlags,
1586 NULL);
1587}
CONFIGRET WINAPI CM_Delete_DevNode_Key_Ex(_In_ DEVINST dnDevInst, _In_ ULONG ulHardwareProfile, _In_ ULONG ulFlags, _In_opt_ HANDLE hMachine)
Definition: cfgmgr.c:1595

◆ CM_Delete_DevNode_Key_Ex()

CONFIGRET WINAPI CM_Delete_DevNode_Key_Ex ( _In_ DEVINST  dnDevInst,
_In_ ULONG  ulHardwareProfile,
_In_ ULONG  ulFlags,
_In_opt_ HANDLE  hMachine 
)

Definition at line 1595 of file cfgmgr.c.

1600{
1602 HSTRING_TABLE StringTable = NULL;
1603 PWSTR pszDevInst, pszKeyPath = NULL, pszInstancePath = NULL;
1604 CONFIGRET ret;
1605
1606 FIXME("CM_Delete_DevNode_Key_Ex(%p %lu %lx %p)\n",
1607 dnDevInst, ulHardwareProfile, ulFlags, hMachine);
1608
1609 if (dnDevInst == 0)
1610 return CR_INVALID_DEVINST;
1611
1612 if (ulFlags & ~CM_REGISTRY_BITS)
1613 return CR_INVALID_FLAG;
1614
1615 if ((ulFlags & CM_REGISTRY_USER) && (ulFlags & CM_REGISTRY_CONFIG))
1616 return CR_INVALID_FLAG;
1617
1618 if (hMachine != NULL)
1619 {
1620 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
1621 if (BindingHandle == NULL)
1622 return CR_FAILURE;
1623
1624 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
1625 if (StringTable == 0)
1626 return CR_FAILURE;
1627 }
1628 else
1629 {
1630 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
1631 return CR_FAILURE;
1632 }
1633
1634 pszDevInst = pSetupStringTableStringFromId(StringTable, dnDevInst);
1635 if (pszDevInst == NULL)
1636 return CR_INVALID_DEVNODE;
1637
1638 TRACE("pszDevInst: %S\n", pszDevInst);
1639
1640 pszKeyPath = MyMalloc(512 * sizeof(WCHAR));
1641 if (pszKeyPath == NULL)
1642 {
1644 goto done;
1645 }
1646
1647 pszInstancePath = MyMalloc(512 * sizeof(WCHAR));
1648 if (pszInstancePath == NULL)
1649 {
1651 goto done;
1652 }
1653
1655 pszDevInst,
1656 pszKeyPath,
1657 pszInstancePath,
1658 ulHardwareProfile,
1659 ulFlags);
1660 if (ret != CR_SUCCESS)
1661 goto done;
1662
1663 TRACE("pszKeyPath: %S\n", pszKeyPath);
1664 TRACE("pszInstancePath: %S\n", pszInstancePath);
1665
1666 if (ulFlags & CM_REGISTRY_USER)
1667 {
1668 FIXME("The CM_REGISTRY_USER flag is not supported yet!\n");
1669 }
1670 else
1671 {
1672#if 0
1673 if (!pSetupIsUserAdmin())
1674 {
1676 goto done;
1677 }
1678#endif
1679
1680 if (!(ulFlags & CM_REGISTRY_CONFIG))
1681 ulHardwareProfile = 0;
1682
1684 {
1686 pszDevInst,
1687 pszKeyPath,
1688 pszInstancePath,
1689 ulHardwareProfile);
1690 }
1692 {
1694 }
1696 }
1697
1698done:
1699 if (pszInstancePath != NULL)
1700 MyFree(pszInstancePath);
1701
1702 if (pszKeyPath != NULL)
1703 MyFree(pszKeyPath);
1704
1705 return ret;
1706}
DWORD WINAPI PNP_DeleteRegistryKey(handle_t hBinding, LPWSTR pszDeviceID, LPWSTR pszParentKey, LPWSTR pszChildKey, DWORD ulFlags)
Definition: rpcserver.c:2434
#define CM_REGISTRY_BITS
Definition: cfgmgr32.h:804
#define CM_REGISTRY_USER
Definition: cfgmgr32.h:802
#define CM_REGISTRY_CONFIG
Definition: cfgmgr32.h:803
static CONFIGRET GetDeviceInstanceKeyPath(_In_ RPC_BINDING_HANDLE BindingHandle, _In_ PWSTR pszDeviceInst, _Out_ PWSTR pszKeyPath, _Out_ PWSTR pszInstancePath, _In_ ULONG ulHardwareProfile, _In_ ULONG ulFlags)
Definition: cfgmgr.c:224
LPVOID WINAPI MyMalloc(DWORD dwSize)
Definition: misc.c:147

Referenced by CM_Delete_DevNode_Key().

◆ CM_Delete_Range()

CONFIGRET WINAPI CM_Delete_Range ( _In_ DWORDLONG  ullStartValue,
_In_ DWORDLONG  ullEndValue,
_In_ RANGE_LIST  rlh,
_In_ ULONG  ulFlags 
)

Definition at line 1714 of file cfgmgr.c.

1719{
1720 FIXME("CM_Delete_Range(%I64u %I64u %p %lx)\n",
1721 ullStartValue, ullEndValue, rlh, ulFlags);
1722
1724}

◆ CM_Detect_Resource_Conflict()

CONFIGRET WINAPI CM_Detect_Resource_Conflict ( _In_ DEVINST  dnDevInst,
_In_ RESOURCEID  ResourceID,
_In_reads_bytes_(ResourceLen) PCVOID  ResourceData,
_In_ ULONG  ResourceLen,
_Out_ PBOOL  pbConflictDetected,
_In_ ULONG  ulFlags 
)

Definition at line 1732 of file cfgmgr.c.

1739{
1740 TRACE("CM_Detect_Resource_Conflict(%p %lu %p %lu %p 0x%lx)\n",
1741 dnDevInst, ResourceID, ResourceData, ResourceLen,
1742 pbConflictDetected, ulFlags);
1743
1744 return CM_Detect_Resource_Conflict_Ex(dnDevInst,
1745 ResourceID,
1746 ResourceData,
1747 ResourceLen,
1748 pbConflictDetected,
1749 ulFlags,
1750 NULL);
1751}
CONFIGRET WINAPI CM_Detect_Resource_Conflict_Ex(_In_ DEVINST dnDevInst, _In_ RESOURCEID ResourceID, _In_reads_bytes_(ResourceLen) PCVOID ResourceData, _In_ ULONG ResourceLen, _Out_ PBOOL pbConflictDetected, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:1759

◆ CM_Detect_Resource_Conflict_Ex()

CONFIGRET WINAPI CM_Detect_Resource_Conflict_Ex ( _In_ DEVINST  dnDevInst,
_In_ RESOURCEID  ResourceID,
_In_reads_bytes_(ResourceLen) PCVOID  ResourceData,
_In_ ULONG  ResourceLen,
_Out_ PBOOL  pbConflictDetected,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 1759 of file cfgmgr.c.

1767{
1768 FIXME("CM_Detect_Resource_Conflict_Ex(%p %lu %p %lu %p 0x%lx %p)\n",
1769 dnDevInst, ResourceID, ResourceData, ResourceLen,
1770 pbConflictDetected, ulFlags, hMachine);
1771
1773}

Referenced by CM_Detect_Resource_Conflict().

◆ CM_Disable_DevNode()

CONFIGRET WINAPI CM_Disable_DevNode ( _In_ DEVINST  dnDevInst,
_In_ ULONG  ulFlags 
)

Definition at line 1781 of file cfgmgr.c.

1784{
1785 TRACE("CM_Disable_DevNode(%p %lx)\n",
1786 dnDevInst, ulFlags);
1787
1788 return CM_Disable_DevNode_Ex(dnDevInst, ulFlags, NULL);
1789}
CONFIGRET WINAPI CM_Disable_DevNode_Ex(_In_ DEVINST dnDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:1797

◆ CM_Disable_DevNode_Ex()

CONFIGRET WINAPI CM_Disable_DevNode_Ex ( _In_ DEVINST  dnDevInst,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 1797 of file cfgmgr.c.

1801{
1803 HSTRING_TABLE StringTable = NULL;
1804 LPWSTR lpDevInst;
1805 CONFIGRET ret;
1806
1807 TRACE("CM_Disable_DevNode_Ex(%p %lx %p)\n",
1808 dnDevInst, ulFlags, hMachine);
1809
1810 if (!pSetupIsUserAdmin())
1811 return CR_ACCESS_DENIED;
1812
1813 if (dnDevInst == 0)
1814 return CR_INVALID_DEVINST;
1815
1816 if (ulFlags != 0)
1817 return CR_INVALID_FLAG;
1818
1819 if (hMachine != NULL)
1820 {
1821 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
1822 if (BindingHandle == NULL)
1823 return CR_FAILURE;
1824
1825 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
1826 if (StringTable == 0)
1827 return CR_FAILURE;
1828 }
1829 else
1830 {
1831 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
1832 return CR_FAILURE;
1833 }
1834
1835 lpDevInst = pSetupStringTableStringFromId(StringTable, dnDevInst);
1836 if (lpDevInst == NULL)
1837 return CR_INVALID_DEVNODE;
1838
1840 {
1842 lpDevInst,
1843 NULL,
1844 NULL,
1845 0,
1846 ulFlags);
1847 }
1849 {
1851 }
1853
1854 return ret;
1855}
DWORD WINAPI PNP_DisableDevInst(handle_t hBinding, LPWSTR pDeviceID, PPNP_VETO_TYPE pVetoType, LPWSTR pszVetoName, DWORD ulNameLength, DWORD ulFlags)
Definition: rpcserver.c:3542

Referenced by CM_Disable_DevNode(), and StopDevice().

◆ CM_Disconnect_Machine()

CONFIGRET WINAPI CM_Disconnect_Machine ( _In_opt_ HMACHINE  hMachine)

Definition at line 1863 of file cfgmgr.c.

1865{
1866 PMACHINE_INFO pMachine;
1867
1868 TRACE("CM_Disconnect_Machine(%p)\n", hMachine);
1869
1870 pMachine = (PMACHINE_INFO)hMachine;
1871 if (pMachine == NULL)
1872 return CR_SUCCESS;
1873
1874 if (pMachine->bLocal == FALSE)
1875 {
1876 if (pMachine->StringTable != NULL)
1878
1879 if (!PnpUnbindRpc(pMachine->BindingHandle))
1880 return CR_ACCESS_DENIED;
1881 }
1882
1883 HeapFree(GetProcessHeap(), 0, pMachine);
1884
1885 return CR_SUCCESS;
1886}
RPC_STATUS PnpUnbindRpc(RPC_BINDING_HANDLE *BindingHandle)
Definition: rpc.c:53

Referenced by DestroyDeviceInfoSet(), DeviceProblemWizardW(), DisplayDeviceAdvancedProperties(), and SetupDiBuildClassInfoListExW().

◆ CM_Dup_Range_List()

CONFIGRET WINAPI CM_Dup_Range_List ( _In_ RANGE_LIST  rlhOld,
_In_ RANGE_LIST  rlhNew,
_In_ ULONG  ulFlags 
)

Definition at line 1894 of file cfgmgr.c.

1898{
1899 FIXME("CM_Dup_Range_List(%p %p %lx)\n",
1900 rlhOld, rlhNew, ulFlags);
1901
1903}

◆ CM_Enable_DevNode()

CONFIGRET WINAPI CM_Enable_DevNode ( _In_ DEVINST  dnDevInst,
_In_ ULONG  ulFlags 
)

Definition at line 1911 of file cfgmgr.c.

1914{
1915 TRACE("CM_Enable_DevNode(%p %lx)\n",
1916 dnDevInst, ulFlags);
1917
1918 return CM_Enable_DevNode_Ex(dnDevInst, ulFlags, NULL);
1919}
CONFIGRET WINAPI CM_Enable_DevNode_Ex(_In_ DEVINST dnDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:1927

◆ CM_Enable_DevNode_Ex()

CONFIGRET WINAPI CM_Enable_DevNode_Ex ( _In_ DEVINST  dnDevInst,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 1927 of file cfgmgr.c.

1931{
1933 HSTRING_TABLE StringTable = NULL;
1934 LPWSTR lpDevInst;
1935 CONFIGRET ret;
1936
1937 TRACE("CM_Enable_DevNode_Ex(%p %lx %p)\n",
1938 dnDevInst, ulFlags, hMachine);
1939
1940 if (!pSetupIsUserAdmin())
1941 return CR_ACCESS_DENIED;
1942
1943 if (dnDevInst == 0)
1944 return CR_INVALID_DEVINST;
1945
1946 if (ulFlags != 0)
1947 return CR_INVALID_FLAG;
1948
1949 if (hMachine != NULL)
1950 {
1951 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
1952 if (BindingHandle == NULL)
1953 return CR_FAILURE;
1954
1955 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
1956 if (StringTable == 0)
1957 return CR_FAILURE;
1958 }
1959 else
1960 {
1961 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
1962 return CR_FAILURE;
1963 }
1964
1965 lpDevInst = pSetupStringTableStringFromId(StringTable, dnDevInst);
1966 if (lpDevInst == NULL)
1967 return CR_INVALID_DEVNODE;
1968
1970 {
1972 PNP_DEVINST_ENABLE,
1973 ulFlags,
1974 lpDevInst,
1975 NULL);
1976 }
1978 {
1980 }
1982
1983 return ret;
1984}
DWORD WINAPI PNP_DeviceInstanceAction(handle_t hBinding, DWORD ulMajorAction, DWORD ulMinorAction, LPWSTR pszDeviceInstance1, LPWSTR pszDeviceInstance2)
Definition: rpcserver.c:3366

Referenced by CM_Enable_DevNode(), ResetDevice(), and SetupDiRestartDevices().

◆ CM_Enumerate_Classes()

CONFIGRET WINAPI CM_Enumerate_Classes ( _In_ ULONG  ulClassIndex,
_Out_ LPGUID  ClassGuid,
_In_ ULONG  ulFlags 
)

Definition at line 1992 of file cfgmgr.c.

1996{
1997 TRACE("CM_Enumerate_Classes(%lx %p %lx)\n",
1998 ulClassIndex, ClassGuid, ulFlags);
1999
2000 return CM_Enumerate_Classes_Ex(ulClassIndex, ClassGuid, ulFlags, NULL);
2001}
CONFIGRET WINAPI CM_Enumerate_Classes_Ex(_In_ ULONG ulClassIndex, _Out_ LPGUID ClassGuid, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:2009

Referenced by EnumDeviceClasses(), and CDeviceView::GetNextClass().

◆ CM_Enumerate_Classes_Ex()

CONFIGRET WINAPI CM_Enumerate_Classes_Ex ( _In_ ULONG  ulClassIndex,
_Out_ LPGUID  ClassGuid,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 2009 of file cfgmgr.c.

2014{
2015 WCHAR szBuffer[MAX_GUID_STRING_LEN];
2018 ULONG ulLength = MAX_GUID_STRING_LEN;
2019
2020 TRACE("CM_Enumerate_Classes_Ex(%lx %p %lx %p)\n",
2021 ulClassIndex, ClassGuid, ulFlags, hMachine);
2022
2023 if (ClassGuid == NULL)
2024 return CR_INVALID_POINTER;
2025
2026 if (ulFlags != 0)
2027 return CR_INVALID_FLAG;
2028
2029 if (hMachine != NULL)
2030 {
2031 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
2032 if (BindingHandle == NULL)
2033 return CR_FAILURE;
2034 }
2035 else
2036 {
2038 return CR_FAILURE;
2039 }
2040
2042 {
2044 PNP_CLASS_SUBKEYS,
2045 ulClassIndex,
2046 szBuffer,
2048 &ulLength,
2049 ulFlags);
2050 }
2052 {
2054 }
2056
2057 if (ret == CR_SUCCESS)
2058 {
2059 /* Remove the {} */
2060 szBuffer[MAX_GUID_STRING_LEN - 2] = UNICODE_NULL;
2061
2062 /* Convert the buffer to a GUID */
2063 if (UuidFromStringW(&szBuffer[1], ClassGuid) != RPC_S_OK)
2064 return CR_FAILURE;
2065 }
2066
2067 return ret;
2068}
DWORD WINAPI PNP_EnumerateSubKeys(handle_t hBinding, DWORD ulBranch, DWORD ulIndex, LPWSTR Buffer, PNP_RPC_STRING_LEN ulLength, PNP_RPC_STRING_LEN *pulRequiredLen, DWORD ulFlags)
Definition: rpcserver.c:925
#define UNICODE_NULL
#define RPC_S_OK
Definition: rpcnterr.h:22
RPC_STATUS WINAPI UuidFromStringW(RPC_WSTR s, UUID *uuid)
Definition: rpcrt4_main.c:614

Referenced by CM_Enumerate_Classes(), and SetupDiBuildClassInfoListExW().

◆ CM_Enumerate_Enumerators_ExA()

CONFIGRET WINAPI CM_Enumerate_Enumerators_ExA ( _In_ ULONG  ulEnumIndex,
_Out_writes_ *pulLength PCHAR  Buffer,
_Inout_ PULONG  pulLength,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 2114 of file cfgmgr.c.

2120{
2121 WCHAR szBuffer[MAX_DEVICE_ID_LEN];
2122 ULONG ulOrigLength;
2123 ULONG ulLength;
2125
2126 TRACE("CM_Enumerate_Enumerators_ExA(%lu %p %p %lx %p)\n",
2127 ulEnumIndex, Buffer, pulLength, ulFlags, hMachine);
2128
2129 if (Buffer == NULL || pulLength == NULL)
2130 return CR_INVALID_POINTER;
2131
2132 if (ulFlags != 0)
2133 return CR_INVALID_FLAG;
2134
2135 ulOrigLength = *pulLength;
2136 *pulLength = 0;
2137
2138 ulLength = MAX_DEVICE_ID_LEN;
2139 ret = CM_Enumerate_Enumerators_ExW(ulEnumIndex, szBuffer, &ulLength,
2140 ulFlags, hMachine);
2141 if (ret == CR_SUCCESS)
2142 {
2144 0,
2145 szBuffer,
2146 ulLength,
2147 Buffer,
2148 ulOrigLength,
2149 NULL,
2150 NULL) == 0)
2151 ret = CR_FAILURE;
2152 else
2153 *pulLength = lstrlenA(Buffer) + 1;
2154 }
2155
2156 return ret;
2157}
CONFIGRET WINAPI CM_Enumerate_Enumerators_ExW(_In_ ULONG ulEnumIndex, _Out_writes_(*pulLength) PWCHAR Buffer, _Inout_ PULONG pulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:2165
Definition: bufpool.h:45
#define CP_ACP
Definition: compat.h:109
#define WideCharToMultiByte
Definition: compat.h:111
int WINAPI lstrlenA(LPCSTR lpString)
Definition: lstring.c:145

Referenced by CM_Enumerate_EnumeratorsA().

◆ CM_Enumerate_Enumerators_ExW()

CONFIGRET WINAPI CM_Enumerate_Enumerators_ExW ( _In_ ULONG  ulEnumIndex,
_Out_writes_ *pulLength PWCHAR  Buffer,
_Inout_ PULONG  pulLength,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 2165 of file cfgmgr.c.

2171{
2173 CONFIGRET ret;
2174
2175 TRACE("CM_Enumerate_Enumerators_ExW(%lu %p %p %lx %p)\n",
2176 ulEnumIndex, Buffer, pulLength, ulFlags, hMachine);
2177
2178 if (Buffer == NULL || pulLength == NULL)
2179 return CR_INVALID_POINTER;
2180
2181 if (ulFlags != 0)
2182 return CR_INVALID_FLAG;
2183
2185
2186 if (hMachine != NULL)
2187 {
2188 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
2189 if (BindingHandle == NULL)
2190 return CR_FAILURE;
2191 }
2192 else
2193 {
2195 return CR_FAILURE;
2196 }
2197
2199 {
2201 PNP_ENUMERATOR_SUBKEYS,
2202 ulEnumIndex,
2203 Buffer,
2204 *pulLength,
2205 pulLength,
2206 ulFlags);
2207 }
2209 {
2211 }
2213
2214 return ret;
2215}

Referenced by CM_Enumerate_Enumerators_ExA(), and CM_Enumerate_EnumeratorsW().

◆ CM_Enumerate_EnumeratorsA()

CONFIGRET WINAPI CM_Enumerate_EnumeratorsA ( _In_ ULONG  ulEnumIndex,
_Out_writes_ *pulLength PCHAR  Buffer,
_Inout_ PULONG  pulLength,
_In_ ULONG  ulFlags 
)

Definition at line 2076 of file cfgmgr.c.

2081{
2082 TRACE("CM_Enumerate_EnumeratorsA(%lu %p %p %lx)\n",
2083 ulEnumIndex, Buffer, pulLength, ulFlags);
2084
2085 return CM_Enumerate_Enumerators_ExA(ulEnumIndex, Buffer, pulLength,
2086 ulFlags, NULL);
2087}
CONFIGRET WINAPI CM_Enumerate_Enumerators_ExA(_In_ ULONG ulEnumIndex, _Out_writes_(*pulLength) PCHAR Buffer, _Inout_ PULONG pulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:2114

◆ CM_Enumerate_EnumeratorsW()

CONFIGRET WINAPI CM_Enumerate_EnumeratorsW ( _In_ ULONG  ulEnumIndex,
_Out_writes_ *pulLength PWCHAR  Buffer,
_Inout_ PULONG  pulLength,
_In_ ULONG  ulFlags 
)

Definition at line 2095 of file cfgmgr.c.

2100{
2101 TRACE("CM_Enumerate_EnumeratorsW(%lu %p %p %lx)\n",
2102 ulEnumIndex, Buffer, pulLength, ulFlags);
2103
2104 return CM_Enumerate_Enumerators_ExW(ulEnumIndex, Buffer, pulLength,
2105 ulFlags, NULL);
2106}

◆ CM_Find_Range()

CONFIGRET WINAPI CM_Find_Range ( _Out_ PDWORDLONG  pullStart,
_In_ DWORDLONG  ullStart,
_In_ ULONG  ulLength,
_In_ DWORDLONG  ullAlignment,
_In_ DWORDLONG  ullEnd,
_In_ RANGE_LIST  rlh,
_In_ ULONG  ulFlags 
)

Definition at line 2223 of file cfgmgr.c.

2231{
2232 FIXME("CM_Find_Range(%p %I64u %lu %I64u %I64u %p %lx)\n",
2233 pullStart, ullStart, ulLength, ullAlignment, ullEnd, rlh, ulFlags);
2234
2236}

◆ CM_First_Range()

CONFIGRET WINAPI CM_First_Range ( _In_ RANGE_LIST  rlh,
_Out_ PDWORDLONG  pullStart,
_Out_ PDWORDLONG  pullEnd,
_Out_ PRANGE_ELEMENT  preElement,
_In_ ULONG  ulFlags 
)

Definition at line 2244 of file cfgmgr.c.

2250{
2251 PINTERNAL_RANGE_LIST pRangeList;
2252 PINTERNAL_RANGE pRange;
2253 PLIST_ENTRY ListEntry;
2255
2256 FIXME("CM_First_Range(%p %p %p %p %lx)\n",
2257 rlh, pullStart, pullEnd, preElement, ulFlags);
2258
2259 pRangeList = (PINTERNAL_RANGE_LIST)rlh;
2260
2261 if (!IsValidRangeList(pRangeList))
2262 return CR_INVALID_RANGE_LIST;
2263
2264 if (pullStart == NULL || pullEnd == NULL || preElement == NULL)
2265 return CR_INVALID_POINTER;
2266
2267 if (ulFlags != 0)
2268 return CR_INVALID_FLAG;
2269
2270 /* Lock the range list */
2271 WaitForSingleObject(pRangeList->hMutex, INFINITE);
2272
2273 /* Fail, if the list is empty */
2274 if (IsListEmpty(&pRangeList->ListHead))
2275 {
2276 ret = CR_FAILURE;
2277 goto done;
2278 }
2279
2280 /* Get the first range */
2281 ListEntry = pRangeList->ListHead.Flink;
2282 pRange = CONTAINING_RECORD(ListEntry, INTERNAL_RANGE, ListEntry);
2283
2284 /* Return the range data */
2285 *pullStart = pRange->ullStart;
2286 *pullEnd = pRange->ullEnd;
2287 *preElement = (RANGE_ELEMENT)pRange;
2288
2289done:
2290 /* Unlock the range list */
2291 ReleaseMutex(pRangeList->hMutex);
2292
2293 return ret;
2294}
DWORD_PTR RANGE_ELEMENT
Definition: cfgmgr32.h:105
Definition: typedefs.h:120
struct _LIST_ENTRY * Flink
Definition: typedefs.h:121
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260

◆ CM_Free_Log_Conf()

CONFIGRET WINAPI CM_Free_Log_Conf ( _In_ LOG_CONF  lcLogConfToBeFreed,
_In_ ULONG  ulFlags 
)

Definition at line 2302 of file cfgmgr.c.

2305{
2306 TRACE("CM_Free_Log_Conf(%lx %lx)\n",
2307 lcLogConfToBeFreed, ulFlags);
2308
2309 return CM_Free_Log_Conf_Ex(lcLogConfToBeFreed, ulFlags, NULL);
2310}
CONFIGRET WINAPI CM_Free_Log_Conf_Ex(_In_ LOG_CONF lcLogConfToBeFreed, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:2318

◆ CM_Free_Log_Conf_Ex()

CONFIGRET WINAPI CM_Free_Log_Conf_Ex ( _In_ LOG_CONF  lcLogConfToBeFreed,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 2318 of file cfgmgr.c.

2322{
2324 HSTRING_TABLE StringTable = NULL;
2325 LPWSTR lpDevInst;
2326 PLOG_CONF_INFO pLogConfInfo;
2327 CONFIGRET ret;
2328
2329 TRACE("CM_Free_Log_Conf_Ex(%lx %lx %p)\n",
2330 lcLogConfToBeFreed, ulFlags, hMachine);
2331
2332 if (!pSetupIsUserAdmin())
2333 return CR_ACCESS_DENIED;
2334
2335 pLogConfInfo = (PLOG_CONF_INFO)lcLogConfToBeFreed;
2336 if (!IsValidLogConf(pLogConfInfo))
2337 return CR_INVALID_LOG_CONF;
2338
2339 if (ulFlags != 0)
2340 return CR_INVALID_FLAG;
2341
2342 if (hMachine != NULL)
2343 {
2344 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
2345 if (BindingHandle == NULL)
2346 return CR_FAILURE;
2347
2348 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
2349 if (StringTable == 0)
2350 return CR_FAILURE;
2351 }
2352 else
2353 {
2354 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
2355 return CR_FAILURE;
2356 }
2357
2358 lpDevInst = pSetupStringTableStringFromId(StringTable, pLogConfInfo->dnDevInst);
2359 if (lpDevInst == NULL)
2360 return CR_INVALID_DEVNODE;
2361
2363 {
2365 lpDevInst,
2366 pLogConfInfo->ulType,
2367 pLogConfInfo->ulTag,
2368 0);
2369 }
2371 {
2373 }
2375
2376 return ret;
2377}
DWORD WINAPI PNP_FreeLogConf(handle_t hBinding, LPWSTR pDeviceID, DWORD ulLogConfType, DWORD ulLogConfTag, DWORD ulFlags)
Definition: rpcserver.c:4176
#define CR_INVALID_LOG_CONF
Definition: cfgmgr32.h:850
BOOL IsValidLogConf(_In_opt_ PLOG_CONF_INFO pLogConfInfo)
Definition: cfgmgr.c:414
struct _LOG_CONF_INFO * PLOG_CONF_INFO

Referenced by CM_Free_Log_Conf().

◆ CM_Free_Log_Conf_Handle()

CONFIGRET WINAPI CM_Free_Log_Conf_Handle ( _In_ LOG_CONF  lcLogConf)

Definition at line 2385 of file cfgmgr.c.

2387{
2388 PLOG_CONF_INFO pLogConfInfo;
2389
2390 TRACE("CM_Free_Log_Conf_Handle(%lx)\n", lcLogConf);
2391
2392 pLogConfInfo = (PLOG_CONF_INFO)lcLogConf;
2393 if (!IsValidLogConf(pLogConfInfo))
2394 return CR_INVALID_LOG_CONF;
2395
2396 HeapFree(GetProcessHeap(), 0, pLogConfInfo);
2397
2398 return CR_SUCCESS;
2399}

◆ CM_Free_Range_List()

CONFIGRET WINAPI CM_Free_Range_List ( _In_ RANGE_LIST  RangeList,
_In_ ULONG  ulFlags 
)

Definition at line 2407 of file cfgmgr.c.

2410{
2411 PINTERNAL_RANGE_LIST pRangeList;
2412 PINTERNAL_RANGE pRange;
2413 PLIST_ENTRY ListEntry;
2414
2415 FIXME("CM_Free_Range_List(%p %lx)\n",
2416 RangeList, ulFlags);
2417
2418 pRangeList = (PINTERNAL_RANGE_LIST)RangeList;
2419
2420 if (!IsValidRangeList(pRangeList))
2421 return CR_INVALID_RANGE_LIST;
2422
2423 if (ulFlags != 0)
2424 return CR_INVALID_FLAG;
2425
2426 /* Lock the range list */
2427 WaitForSingleObject(pRangeList->hMutex, INFINITE);
2428
2429 /* Free the list of ranges */
2430 while (!IsListEmpty(&pRangeList->ListHead))
2431 {
2432 ListEntry = RemoveHeadList(&pRangeList->ListHead);
2433 pRange = CONTAINING_RECORD(ListEntry, INTERNAL_RANGE, ListEntry);
2434 HeapFree(GetProcessHeap(), 0, pRange);
2435 }
2436
2437 /* Unlock the range list */
2438 ReleaseMutex(pRangeList->hMutex);
2439
2440 /* Close the mutex */
2441 CloseHandle(pRangeList->hMutex);
2442
2443 /* Free the range list */
2444 HeapFree(GetProcessHeap(), 0, pRangeList);
2445
2446 return CR_SUCCESS;
2447}
#define CloseHandle
Definition: compat.h:739
#define RemoveHeadList(ListHead)
Definition: env_spec_w32.h:964

◆ CM_Free_Res_Des()

CONFIGRET WINAPI CM_Free_Res_Des ( _Out_ PRES_DES  prdResDes,
_In_ RES_DES  rdResDes,
_In_ ULONG  ulFlags 
)

Definition at line 2455 of file cfgmgr.c.

2459{
2460 TRACE("CM_Free_Res_Des(%p %p %lx)\n",
2461 prdResDes, rdResDes, ulFlags);
2462
2463 return CM_Free_Res_Des_Ex(prdResDes, rdResDes, ulFlags, NULL);
2464}
CONFIGRET WINAPI CM_Free_Res_Des_Ex(_Out_ PRES_DES prdResDes, _In_ RES_DES rdResDes, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:2472

◆ CM_Free_Res_Des_Ex()

CONFIGRET WINAPI CM_Free_Res_Des_Ex ( _Out_ PRES_DES  prdResDes,
_In_ RES_DES  rdResDes,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 2472 of file cfgmgr.c.

2477{
2478 FIXME("CM_Free_Res_Des_Ex(%p %p %lx %p)\n",
2479 prdResDes, rdResDes, ulFlags, hMachine);
2480
2482}

Referenced by CM_Free_Res_Des().

◆ CM_Free_Res_Des_Handle()

CONFIGRET WINAPI CM_Free_Res_Des_Handle ( _In_ RES_DES  rdResDes)

Definition at line 2490 of file cfgmgr.c.

2492{
2493 FIXME("CM_Free_Res_Des_Handle(%p)\n", rdResDes);
2494
2496}

◆ CM_Free_Resource_Conflict_Handle()

CONFIGRET WINAPI CM_Free_Resource_Conflict_Handle ( _In_ CONFLICT_LIST  clConflictList)

Definition at line 2504 of file cfgmgr.c.

2506{
2507 PCONFLICT_DATA pConflictData;
2508
2509 FIXME("CM_Free_Resource_Conflict_Handle(%p)\n",
2510 clConflictList);
2511
2512 pConflictData = (PCONFLICT_DATA)clConflictList;
2513 if (!IsValidConflictData(pConflictData))
2515
2516 if (pConflictData->pConflictList != NULL)
2517 MyFree(pConflictData->pConflictList);
2518
2519 MyFree(pConflictData);
2520
2521 return CR_SUCCESS;
2522}
#define CR_INVALID_CONFLICT_LIST
Definition: cfgmgr32.h:903
BOOL IsValidConflictData(_In_opt_ PCONFLICT_DATA pConflictData)
Definition: cfgmgr.c:438
struct _CONFLICT_DATA * PCONFLICT_DATA
PPNP_CONFLICT_LIST pConflictList
Definition: cfgmgr.c:103

◆ CM_Get_Child()

CONFIGRET WINAPI CM_Get_Child ( _Out_ PDEVINST  pdnDevInst,
_In_ DEVINST  dnDevInst,
_In_ ULONG  ulFlags 
)

Definition at line 2530 of file cfgmgr.c.

2534{
2535 TRACE("CM_Get_Child(%p %p %lx)\n",
2536 pdnDevInst, dnDevInst, ulFlags);
2537
2538 return CM_Get_Child_Ex(pdnDevInst, dnDevInst, ulFlags, NULL);
2539}
CONFIGRET WINAPI CM_Get_Child_Ex(_Out_ PDEVINST pdnDevInst, _In_ DEVINST dnDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:2547

Referenced by CfmListRecursiveInsertSubDevices(), DevTreeRecursiveInsertSubDevices(), CDeviceView::GetChildDevice(), and GetMonitorDevInstID().

◆ CM_Get_Child_Ex()

CONFIGRET WINAPI CM_Get_Child_Ex ( _Out_ PDEVINST  pdnDevInst,
_In_ DEVINST  dnDevInst,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 2547 of file cfgmgr.c.

2552{
2553 WCHAR szRelatedDevInst[MAX_DEVICE_ID_LEN];
2555 HSTRING_TABLE StringTable = NULL;
2556 LPWSTR lpDevInst;
2557 DWORD dwIndex, dwLength = MAX_DEVICE_ID_LEN;
2558 CONFIGRET ret;
2559
2560 TRACE("CM_Get_Child_Ex(%p %lx %lx %p)\n",
2561 pdnDevInst, dnDevInst, ulFlags, hMachine);
2562
2563 if (pdnDevInst == NULL)
2564 return CR_INVALID_POINTER;
2565
2566 if (dnDevInst == 0)
2567 return CR_INVALID_DEVINST;
2568
2569 if (ulFlags != 0)
2570 return CR_INVALID_FLAG;
2571
2572 *pdnDevInst = -1;
2573
2574 if (hMachine != NULL)
2575 {
2576 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
2577 if (BindingHandle == NULL)
2578 return CR_FAILURE;
2579
2580 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
2581 if (StringTable == 0)
2582 return CR_FAILURE;
2583 }
2584 else
2585 {
2586 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
2587 return CR_FAILURE;
2588 }
2589
2590 lpDevInst = pSetupStringTableStringFromId(StringTable, dnDevInst);
2591 if (lpDevInst == NULL)
2592 return CR_INVALID_DEVNODE;
2593
2595 {
2597 PNP_GET_CHILD_DEVICE_INSTANCE,
2598 lpDevInst,
2599 szRelatedDevInst,
2600 &dwLength,
2601 0);
2602 }
2604 {
2606 }
2608
2609 if (ret != CR_SUCCESS)
2610 return ret;
2611
2612 TRACE("szRelatedDevInst: %s\n", debugstr_w(szRelatedDevInst));
2613
2614 dwIndex = pSetupStringTableAddString(StringTable, szRelatedDevInst, 1);
2615 if (dwIndex == -1)
2616 return CR_FAILURE;
2617
2618 *pdnDevInst = dwIndex;
2619
2620 return CR_SUCCESS;
2621}
DWORD WINAPI PNP_GetRelatedDeviceInstance(handle_t hBinding, DWORD ulRelationship, LPWSTR pDeviceID, LPWSTR pRelatedDeviceId, PNP_RPC_STRING_LEN *pulLength, DWORD ulFlags)
Definition: rpcserver.c:847
static DWORD DWORD * dwLength
Definition: fusion.c:86
unsigned long DWORD
Definition: ntddk_ex.h:95

Referenced by CM_Get_Child().

◆ CM_Get_Class_Key_Name_ExA()

CONFIGRET WINAPI CM_Get_Class_Key_Name_ExA ( _In_ LPGUID  ClassGuid,
_Out_writes_opt_ *pulLength LPSTR  pszKeyName,
_Inout_ PULONG  pulLength,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 2667 of file cfgmgr.c.

2673{
2674 WCHAR szBuffer[MAX_GUID_STRING_LEN];
2676 ULONG ulLength;
2677 ULONG ulOrigLength;
2678
2679 TRACE("CM_Get_Class_Key_Name_ExA(%p %p %p %lx %p)\n",
2680 ClassGuid, pszKeyName, pulLength, ulFlags, hMachine);
2681
2682 if (ClassGuid == NULL || pszKeyName == NULL || pulLength == NULL)
2683 return CR_INVALID_POINTER;
2684
2685 ulOrigLength = *pulLength;
2686 *pulLength = 0;
2687
2688 ulLength = MAX_GUID_STRING_LEN;
2689 ret = CM_Get_Class_Key_Name_ExW(ClassGuid, szBuffer, &ulLength,
2690 ulFlags, hMachine);
2691 if (ret == CR_SUCCESS)
2692 {
2694 0,
2695 szBuffer,
2696 ulLength,
2697 pszKeyName,
2698 ulOrigLength,
2699 NULL,
2700 NULL) == 0)
2701 ret = CR_FAILURE;
2702 else
2703 *pulLength = lstrlenA(pszKeyName) + 1;
2704 }
2705
2706 return CR_SUCCESS;
2707}
CONFIGRET WINAPI CM_Get_Class_Key_Name_ExW(_In_ LPGUID ClassGuid, _Out_writes_opt_(*pulLength) LPWSTR pszKeyName, _Inout_ PULONG pulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:2715

Referenced by CM_Get_Class_Key_NameA().

◆ CM_Get_Class_Key_Name_ExW()

CONFIGRET WINAPI CM_Get_Class_Key_Name_ExW ( _In_ LPGUID  ClassGuid,
_Out_writes_opt_ *pulLength LPWSTR  pszKeyName,
_Inout_ PULONG  pulLength,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 2715 of file cfgmgr.c.

2721{
2722 TRACE("CM_Get_Class_Key_Name_ExW(%p %p %p %lx %p)\n",
2723 ClassGuid, pszKeyName, pulLength, ulFlags, hMachine);
2724
2725 if (ClassGuid == NULL || pszKeyName == NULL || pulLength == NULL)
2726 return CR_INVALID_POINTER;
2727
2728 if (ulFlags != 0)
2729 return CR_INVALID_FLAG;
2730
2731 if (*pulLength < MAX_GUID_STRING_LEN)
2732 {
2733 *pulLength = 0;
2734 return CR_BUFFER_SMALL;
2735 }
2736
2737 if (!GuidToString(ClassGuid, pszKeyName))
2738 return CR_INVALID_DATA;
2739
2740 *pulLength = MAX_GUID_STRING_LEN;
2741
2742 return CR_SUCCESS;
2743}
#define CR_BUFFER_SMALL
Definition: cfgmgr32.h:872

Referenced by CM_Get_Class_Key_Name_ExA(), and CM_Get_Class_Key_NameW().

◆ CM_Get_Class_Key_NameA()

CONFIGRET WINAPI CM_Get_Class_Key_NameA ( _In_ LPGUID  ClassGuid,
_Out_writes_opt_ *pulLength LPSTR  pszKeyName,
_Inout_ PULONG  pulLength,
_In_ ULONG  ulFlags 
)

Definition at line 2629 of file cfgmgr.c.

2634{
2635 TRACE("CM_Get_Class_Key_NameA(%p %p %p %lx)\n",
2636 ClassGuid, pszKeyName, pulLength, ulFlags);
2637
2638 return CM_Get_Class_Key_Name_ExA(ClassGuid, pszKeyName, pulLength,
2639 ulFlags, NULL);
2640}
CONFIGRET WINAPI CM_Get_Class_Key_Name_ExA(_In_ LPGUID ClassGuid, _Out_writes_opt_(*pulLength) LPSTR pszKeyName, _Inout_ PULONG pulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:2667

◆ CM_Get_Class_Key_NameW()

CONFIGRET WINAPI CM_Get_Class_Key_NameW ( _In_ LPGUID  ClassGuid,
_Out_writes_opt_ *pulLength LPWSTR  pszKeyName,
_Inout_ PULONG  pulLength,
_In_ ULONG  ulFlags 
)

Definition at line 2648 of file cfgmgr.c.

2653{
2654 TRACE("CM_Get_Class_Key_NameW(%p %p %p %lx)\n",
2655 ClassGuid, pszKeyName, pulLength, ulFlags);
2656
2657 return CM_Get_Class_Key_Name_ExW(ClassGuid, pszKeyName, pulLength,
2658 ulFlags, NULL);
2659}

◆ CM_Get_Class_Name_ExA()

CONFIGRET WINAPI CM_Get_Class_Name_ExA ( _In_ LPGUID  ClassGuid,
_Out_writes_opt_ *pulLength PCHAR  Buffer,
_Inout_ PULONG  pulLength,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 2789 of file cfgmgr.c.

2795{
2796 WCHAR szBuffer[MAX_CLASS_NAME_LEN];
2798 ULONG ulLength;
2799 ULONG ulOrigLength;
2800
2801 TRACE("CM_Get_Class_Name_ExA(%p %p %p %lx %p)\n",
2802 ClassGuid, Buffer, pulLength, ulFlags, hMachine);
2803
2804 if (ClassGuid == NULL || Buffer == NULL || pulLength == NULL)
2805 return CR_INVALID_POINTER;
2806
2807 ulOrigLength = *pulLength;
2808 *pulLength = 0;
2809
2810 ulLength = MAX_CLASS_NAME_LEN;
2811 ret = CM_Get_Class_Name_ExW(ClassGuid, szBuffer, &ulLength,
2812 ulFlags, hMachine);
2813 if (ret == CR_SUCCESS)
2814 {
2816 0,
2817 szBuffer,
2818 ulLength,
2819 Buffer,
2820 ulOrigLength,
2821 NULL,
2822 NULL) == 0)
2823 ret = CR_FAILURE;
2824 else
2825 *pulLength = lstrlenA(Buffer) + 1;
2826 }
2827
2828 return ret;
2829}
#define MAX_CLASS_NAME_LEN
Definition: cfgmgr32.h:52
CONFIGRET WINAPI CM_Get_Class_Name_ExW(_In_ LPGUID ClassGuid, _Out_writes_opt_(*pulLength) PWCHAR Buffer, _Inout_ PULONG pulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:2837

Referenced by CM_Get_Class_NameA().

◆ CM_Get_Class_Name_ExW()

CONFIGRET WINAPI CM_Get_Class_Name_ExW ( _In_ LPGUID  ClassGuid,
_Out_writes_opt_ *pulLength PWCHAR  Buffer,
_Inout_ PULONG  pulLength,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 2837 of file cfgmgr.c.

2843{
2844 WCHAR szGuidString[MAX_GUID_STRING_LEN];
2846 CONFIGRET ret;
2847
2848 TRACE("CM_Get_Class_Name_ExW(%p %p %p %lx %p\n",
2849 ClassGuid, Buffer, pulLength, ulFlags, hMachine);
2850
2851 if (ClassGuid == NULL || Buffer == NULL || pulLength == NULL)
2852 return CR_INVALID_POINTER;
2853
2854 if (ulFlags != 0)
2855 return CR_INVALID_FLAG;
2856
2857 if (!GuidToString(ClassGuid, szGuidString))
2858 return CR_INVALID_DATA;
2859
2860 TRACE("Guid %s\n", debugstr_w(szGuidString));
2861
2862 if (hMachine != NULL)
2863 {
2864 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
2865 if (BindingHandle == NULL)
2866 return CR_FAILURE;
2867 }
2868 else
2869 {
2871 return CR_FAILURE;
2872 }
2873
2875 {
2877 szGuidString,
2878 Buffer,
2879 pulLength,
2880 ulFlags);
2881 }
2883 {
2885 }
2887
2888 return ret;
2889}
DWORD WINAPI PNP_GetClassName(handle_t hBinding, LPWSTR pszClassGuid, LPWSTR Buffer, PNP_RPC_STRING_LEN *pulLength, DWORD ulFlags)
Definition: rpcserver.c:2494

Referenced by CM_Get_Class_Name_ExA(), and CM_Get_Class_NameW().

◆ CM_Get_Class_NameA()

CONFIGRET WINAPI CM_Get_Class_NameA ( _In_ LPGUID  ClassGuid,
_Out_writes_opt_ *pulLength PCHAR  Buffer,
_Inout_ PULONG  pulLength,
_In_ ULONG  ulFlags 
)

Definition at line 2751 of file cfgmgr.c.

2756{
2757 TRACE("CM_Get_Class_NameA(%p %p %p %lx)\n",
2758 ClassGuid, Buffer, pulLength, ulFlags);
2759
2760 return CM_Get_Class_Name_ExA(ClassGuid, Buffer, pulLength, ulFlags,
2761 NULL);
2762}
CONFIGRET WINAPI CM_Get_Class_Name_ExA(_In_ LPGUID ClassGuid, _Out_writes_opt_(*pulLength) PCHAR Buffer, _Inout_ PULONG pulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:2789

◆ CM_Get_Class_NameW()

CONFIGRET WINAPI CM_Get_Class_NameW ( _In_ LPGUID  ClassGuid,
_Out_writes_opt_ *pulLength PWCHAR  Buffer,
_Inout_ PULONG  pulLength,
_In_ ULONG  ulFlags 
)

Definition at line 2770 of file cfgmgr.c.

2775{
2776 TRACE("CM_Get_Class_NameW(%p %p %p %lx)\n",
2777 ClassGuid, Buffer, pulLength, ulFlags);
2778
2779 return CM_Get_Class_Name_ExW(ClassGuid, Buffer, pulLength, ulFlags,
2780 NULL);
2781}

◆ CM_Get_Class_Registry_PropertyA()

CONFIGRET WINAPI CM_Get_Class_Registry_PropertyA ( LPGUID  ClassGuid,
ULONG  ulProperty,
PULONG  pulRegDataType,
PVOID  Buffer,
PULONG  pulLength,
ULONG  ulFlags,
HMACHINE  hMachine 
)

Definition at line 2897 of file cfgmgr.c.

2905{
2906 PWSTR BufferW;
2907 ULONG ulLength = 0;
2908 ULONG ulType;
2909 CONFIGRET ret;
2910
2911 TRACE("CM_Get_Class_Registry_PropertyA(%p %lu %p %p %p %lx %p)\n",
2912 ClassGuid, ulProperty, pulRegDataType, Buffer, pulLength,
2913 ulFlags, hMachine);
2914
2915 if (pulLength == NULL)
2916 return CR_INVALID_POINTER;
2917
2918 if (ulProperty < CM_CRP_MIN || ulProperty > CM_CRP_MAX)
2919 return CR_INVALID_PROPERTY;
2920
2921 ulType = GetRegistryPropertyType(ulProperty);
2922 if (ulType == REG_SZ || ulType == REG_MULTI_SZ)
2923 {
2924 /* Get the required buffer size */
2925 ret = CM_Get_Class_Registry_PropertyW(ClassGuid, ulProperty, pulRegDataType,
2926 NULL, &ulLength, ulFlags, hMachine);
2927 if (ret != CR_BUFFER_SMALL)
2928 return ret;
2929
2930 /* Allocate the unicode buffer */
2931 BufferW = HeapAlloc(GetProcessHeap(), 0, ulLength);
2932 if (BufferW == NULL)
2933 return CR_OUT_OF_MEMORY;
2934
2935 /* Get the property */
2936 ret = CM_Get_Class_Registry_PropertyW(ClassGuid, ulProperty, pulRegDataType,
2937 BufferW, &ulLength, ulFlags, hMachine);
2938 if (ret != CR_SUCCESS)
2939 {
2940 HeapFree(GetProcessHeap(), 0, BufferW);
2941 return ret;
2942 }
2943
2944 /* Do W->A conversion */
2945 *pulLength = WideCharToMultiByte(CP_ACP,
2946 0,
2947 BufferW,
2948 ulLength,
2949 Buffer,
2950 *pulLength,
2951 NULL,
2952 NULL);
2953
2954 /* Release the unicode buffer */
2955 HeapFree(GetProcessHeap(), 0, BufferW);
2956
2957 if (*pulLength == 0)
2958 ret = CR_FAILURE;
2959 }
2960 else
2961 {
2962 /* Get the property */
2963 ret = CM_Get_Class_Registry_PropertyW(ClassGuid, ulProperty, pulRegDataType,
2964 Buffer, pulLength, ulFlags, hMachine);
2965 }
2966
2967 return ret;
2968}
#define CR_INVALID_PROPERTY
Definition: cfgmgr32.h:899
#define CM_CRP_MAX
Definition: cfgmgr32.h:733
CONFIGRET WINAPI CM_Get_Class_Registry_PropertyW(LPGUID ClassGuid, ULONG ulProperty, PULONG pulRegDataType, PVOID Buffer, PULONG pulLength, ULONG ulFlags, HMACHINE hMachine)
Definition: cfgmgr.c:2976
static ULONG GetRegistryPropertyType(_In_ ULONG ulProperty)
Definition: cfgmgr.c:145
#define REG_SZ
Definition: layer.c:22
#define REG_MULTI_SZ
Definition: nt_native.h:1501
_In_z_ PCWSTR _In_ ULONG ulType
Definition: ntuser.h:43

◆ CM_Get_Class_Registry_PropertyW()

CONFIGRET WINAPI CM_Get_Class_Registry_PropertyW ( LPGUID  ClassGuid,
ULONG  ulProperty,
PULONG  pulRegDataType,
PVOID  Buffer,
PULONG  pulLength,
ULONG  ulFlags,
HMACHINE  hMachine 
)

Definition at line 2976 of file cfgmgr.c.

2984{
2986 WCHAR szGuidString[PNP_MAX_GUID_STRING_LEN + 1];
2987 ULONG ulType = 0;
2988 ULONG ulTransferLength = 0;
2989 CONFIGRET ret;
2990
2991 TRACE("CM_Get_Class_Registry_PropertyW(%p %lu %p %p %p %lx %p)\n",
2992 ClassGuid, ulProperty, pulRegDataType, Buffer, pulLength,
2993 ulFlags, hMachine);
2994
2995 if (ClassGuid == NULL || pulLength == NULL)
2996 return CR_INVALID_POINTER;
2997
2998 if (ulFlags != 0)
2999 return CR_INVALID_FLAG;
3000
3001 if (pSetupStringFromGuid(ClassGuid,
3002 szGuidString,
3004 return CR_INVALID_DATA;
3005
3006 if (ulProperty < CM_CRP_MIN || ulProperty > CM_CRP_MAX)
3007 return CR_INVALID_PROPERTY;
3008
3009 if (hMachine != NULL)
3010 {
3011 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
3012 if (BindingHandle == NULL)
3013 return CR_FAILURE;
3014 }
3015 else
3016 {
3018 return CR_FAILURE;
3019 }
3020
3021 ulTransferLength = *pulLength;
3022
3024 {
3026 szGuidString,
3027 ulProperty,
3028 &ulType,
3029 Buffer,
3030 &ulTransferLength,
3031 pulLength,
3032 ulFlags);
3033 }
3035 {
3037 }
3039
3040 if (ret == CR_SUCCESS)
3041 {
3042 if (pulRegDataType != NULL)
3043 *pulRegDataType = ulType;
3044 }
3045
3046 return ret;
3047}
DWORD WINAPI PNP_GetClassRegProp(handle_t hBinding, LPWSTR pszClassGuid, DWORD ulProperty, DWORD *pulRegDataType, BYTE *Buffer, PNP_RPC_STRING_LEN *pulTransferLen, PNP_RPC_STRING_LEN *pulLength, DWORD ulFlags)
Definition: rpcserver.c:2727
DWORD WINAPI pSetupStringFromGuid(LPGUID lpGUID, PWSTR pString, DWORD dwStringLen)
Definition: misc.c:1775
const unsigned long PNP_MAX_GUID_STRING_LEN
Definition: pnp.idl:12

Referenced by CM_Get_Class_Registry_PropertyA().

◆ CM_Get_Depth()

CONFIGRET WINAPI CM_Get_Depth ( _Out_ PULONG  pulDepth,
_In_ DEVINST  dnDevInst,
_In_ ULONG  ulFlags 
)

Definition at line 3055 of file cfgmgr.c.

3059{
3060 TRACE("CM_Get_Depth(%p %lx %lx)\n",
3061 pulDepth, dnDevInst, ulFlags);
3062
3063 return CM_Get_Depth_Ex(pulDepth, dnDevInst, ulFlags, NULL);
3064}
CONFIGRET WINAPI CM_Get_Depth_Ex(_Out_ PULONG pulDepth, _In_ DEVINST dnDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:3072

◆ CM_Get_Depth_Ex()

CONFIGRET WINAPI CM_Get_Depth_Ex ( _Out_ PULONG  pulDepth,
_In_ DEVINST  dnDevInst,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 3072 of file cfgmgr.c.

3077{
3079 HSTRING_TABLE StringTable = NULL;
3080 LPWSTR lpDevInst;
3081 CONFIGRET ret;
3082
3083 TRACE("CM_Get_Depth_Ex(%p %lx %lx %p)\n",
3084 pulDepth, dnDevInst, ulFlags, hMachine);
3085
3086 if (pulDepth == NULL)
3087 return CR_INVALID_POINTER;
3088
3089 if (dnDevInst == 0)
3090 return CR_INVALID_DEVINST;
3091
3092 if (ulFlags != 0)
3093 return CR_INVALID_FLAG;
3094
3095 if (hMachine != NULL)
3096 {
3097 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
3098 if (BindingHandle == NULL)
3099 return CR_FAILURE;
3100
3101 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
3102 if (StringTable == 0)
3103 return CR_FAILURE;
3104 }
3105 else
3106 {
3107 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
3108 return CR_FAILURE;
3109 }
3110
3111 lpDevInst = pSetupStringTableStringFromId(StringTable, dnDevInst);
3112 if (lpDevInst == NULL)
3113 return CR_INVALID_DEVNODE;
3114
3116 {
3118 lpDevInst,
3119 pulDepth,
3120 ulFlags);
3121 }
3123 {
3125 }
3127
3128 return ret;
3129}
DWORD WINAPI PNP_GetDepth(handle_t hBinding, LPWSTR pszDeviceID, DWORD *pulDepth, DWORD ulFlags)
Definition: rpcserver.c:1792

Referenced by CM_Get_Depth().

◆ CM_Get_Device_ID_ExA()

CONFIGRET WINAPI CM_Get_Device_ID_ExA ( _In_ DEVINST  dnDevInst,
_Out_writes_(BufferLen) PCHAR  Buffer,
_In_ ULONG  BufferLen,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 3694 of file cfgmgr.c.

3700{
3701 WCHAR szBufferW[MAX_DEVICE_ID_LEN];
3703
3704 TRACE("CM_Get_Device_ID_ExA(%lx %p %lu %lx %p)\n",
3705 dnDevInst, Buffer, BufferLen, ulFlags, hMachine);
3706
3707 if (Buffer == NULL)
3708 return CR_INVALID_POINTER;
3709
3710 ret = CM_Get_Device_ID_ExW(dnDevInst,
3711 szBufferW,
3713 ulFlags,
3714 hMachine);
3715 if (ret == CR_SUCCESS)
3716 {
3718 0,
3719 szBufferW,
3720 lstrlenW(szBufferW) + 1,
3721 Buffer,
3722 BufferLen,
3723 NULL,
3724 NULL) == 0)
3725 ret = CR_FAILURE;
3726 }
3727
3728 return ret;
3729}
CONFIGRET WINAPI CM_Get_Device_ID_ExW(_In_ DEVINST dnDevInst, _Out_writes_(BufferLen) PWCHAR Buffer, _In_ ULONG BufferLen, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:3737
#define lstrlenW
Definition: compat.h:750

Referenced by CM_Get_Device_IDA().

◆ CM_Get_Device_ID_ExW()

CONFIGRET WINAPI CM_Get_Device_ID_ExW ( _In_ DEVINST  dnDevInst,
_Out_writes_(BufferLen) PWCHAR  Buffer,
_In_ ULONG  BufferLen,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 3737 of file cfgmgr.c.

3743{
3744 HSTRING_TABLE StringTable = NULL;
3745
3746 TRACE("CM_Get_Device_ID_ExW(%lx %p %lu %lx %p)\n",
3747 dnDevInst, Buffer, BufferLen, ulFlags, hMachine);
3748
3749 if (dnDevInst == 0)
3750 return CR_INVALID_DEVINST;
3751
3752 if (Buffer == NULL)
3753 return CR_INVALID_POINTER;
3754
3755 if (ulFlags != 0)
3756 return CR_INVALID_FLAG;
3757
3758 if (hMachine != NULL)
3759 {
3760 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
3761 if (StringTable == NULL)
3762 return CR_FAILURE;
3763 }
3764 else
3765 {
3766 if (!PnpGetLocalHandles(NULL, &StringTable))
3767 return CR_FAILURE;
3768 }
3769
3770 if (!pSetupStringTableStringFromIdEx(StringTable,
3771 dnDevInst,
3772 Buffer,
3773 &BufferLen))
3774 return CR_FAILURE;
3775
3776 return CR_SUCCESS;
3777}
BOOL WINAPI pSetupStringTableStringFromIdEx(HSTRING_TABLE hStringTable, DWORD dwId, LPWSTR lpBuffer, LPDWORD lpBufferLength)
Definition: stringtable.c:760

Referenced by CM_Get_Device_ID_ExA(), and CM_Get_Device_IDW().

◆ CM_Get_Device_ID_List_ExA()

CONFIGRET WINAPI CM_Get_Device_ID_List_ExA ( _In_ PCSTR  pszFilter,
_Out_writes_(BufferLen) PCHAR  Buffer,
_In_ ULONG  BufferLen,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 3823 of file cfgmgr.c.

3829{
3830 LPWSTR BufferW = NULL;
3831 LPWSTR pszFilterW = NULL;
3833
3834 TRACE("CM_Get_Device_ID_List_ExA(%p %p %lu %lx %p)\n",
3835 pszFilter, Buffer, BufferLen, ulFlags, hMachine);
3836
3837 BufferW = MyMalloc(BufferLen * sizeof(WCHAR));
3838 if (BufferW == NULL)
3839 return CR_OUT_OF_MEMORY;
3840
3841 if (pszFilter == NULL)
3842 {
3844 BufferW,
3845 BufferLen,
3846 ulFlags,
3847 hMachine);
3848 }
3849 else
3850 {
3851 if (pSetupCaptureAndConvertAnsiArg(pszFilter, &pszFilterW))
3852 {
3854 goto Done;
3855 }
3856
3857 ret = CM_Get_Device_ID_List_ExW(pszFilterW,
3858 BufferW,
3859 BufferLen,
3860 ulFlags,
3861 hMachine);
3862
3863 MyFree(pszFilterW);
3864 }
3865
3867 0,
3868 BufferW,
3869 BufferLen,
3870 Buffer,
3871 BufferLen,
3872 NULL,
3873 NULL) == 0)
3874 ret = CR_FAILURE;
3875
3876Done:
3877 MyFree(BufferW);
3878
3879 return ret;
3880}
CONFIGRET WINAPI CM_Get_Device_ID_List_ExW(_In_ PCWSTR pszFilter, _Out_writes_(BufferLen) PWCHAR Buffer, _In_ ULONG BufferLen, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:3888

Referenced by CM_Get_Device_ID_ListA().

◆ CM_Get_Device_ID_List_ExW()

CONFIGRET WINAPI CM_Get_Device_ID_List_ExW ( _In_ PCWSTR  pszFilter,
_Out_writes_(BufferLen) PWCHAR  Buffer,
_In_ ULONG  BufferLen,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 3888 of file cfgmgr.c.

3894{
3896 CONFIGRET ret;
3897
3898 TRACE("CM_Get_Device_ID_List_ExW(%p %p %lu %lx %p)\n",
3899 pszFilter, Buffer, BufferLen, ulFlags, hMachine);
3900
3901 if (Buffer == NULL || BufferLen == 0)
3902 return CR_INVALID_POINTER;
3903
3904 if (ulFlags & ~CM_GETIDLIST_FILTER_BITS)
3905 return CR_INVALID_FLAG;
3906
3907 if (hMachine != NULL)
3908 {
3909 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
3910 if (BindingHandle == NULL)
3911 return CR_FAILURE;
3912 }
3913 else
3914 {
3916 return CR_FAILURE;
3917 }
3918
3919 *Buffer = 0;
3920
3922 {
3924 (LPWSTR)pszFilter,
3925 Buffer,
3926 &BufferLen,
3927 ulFlags);
3928 }
3930 {
3932 }
3934
3935 return ret;
3936}
DWORD WINAPI PNP_GetDeviceList(handle_t hBinding, LPWSTR pszFilter, LPWSTR Buffer, PNP_RPC_STRING_LEN *pulLength, DWORD ulFlags)
Definition: rpcserver.c:1346
#define CM_GETIDLIST_FILTER_BITS
Definition: cfgmgr32.h:669

Referenced by CM_Get_Device_ID_List_ExA(), CM_Get_Device_ID_ListW(), DisplayDeviceRelations(), and SETUP_CreateDevicesList().

◆ CM_Get_Device_ID_List_Size_ExA()

CONFIGRET WINAPI CM_Get_Device_ID_List_Size_ExA ( _Out_ PULONG  pulLen,
_In_opt_ PCSTR  pszFilter,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 3978 of file cfgmgr.c.

3983{
3984 LPWSTR pszFilterW = NULL;
3986
3987 FIXME("CM_Get_Device_ID_List_Size_ExA(%p %s %lx %p)\n",
3988 pulLen, debugstr_a(pszFilter), ulFlags, hMachine);
3989
3990 if (pszFilter == NULL)
3991 {
3993 NULL,
3994 ulFlags,
3995 hMachine);
3996 }
3997 else
3998 {
3999 if (pSetupCaptureAndConvertAnsiArg(pszFilter, &pszFilterW))
4000 return CR_INVALID_DEVICE_ID;
4001
4003 pszFilterW,
4004 ulFlags,
4005 hMachine);
4006
4007 MyFree(pszFilterW);
4008 }
4009
4010 return ret;
4011}
CONFIGRET WINAPI CM_Get_Device_ID_List_Size_ExW(_Out_ PULONG pulLen, _In_opt_ PCWSTR pszFilter, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:4019

Referenced by CM_Get_Device_ID_List_SizeA().

◆ CM_Get_Device_ID_List_Size_ExW()

CONFIGRET WINAPI CM_Get_Device_ID_List_Size_ExW ( _Out_ PULONG  pulLen,
_In_opt_ PCWSTR  pszFilter,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 4019 of file cfgmgr.c.

4024{
4026 CONFIGRET ret;
4027
4028 FIXME("CM_Get_Device_ID_List_Size_ExW(%p %s %lx %p)\n",
4029 pulLen, debugstr_w(pszFilter), ulFlags, hMachine);
4030
4031 if (pulLen == NULL)
4032 return CR_INVALID_POINTER;
4033
4034 if (ulFlags & ~CM_GETIDLIST_FILTER_BITS)
4035 return CR_INVALID_FLAG;
4036
4037 if (hMachine != NULL)
4038 {
4039 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
4040 if (BindingHandle == NULL)
4041 return CR_FAILURE;
4042 }
4043 else
4044 {
4046 return CR_FAILURE;
4047 }
4048
4049 *pulLen = 0;
4050
4052 {
4054 (LPWSTR)pszFilter,
4055 pulLen,
4056 ulFlags);
4057 }
4059 {
4061 }
4063
4064 return ret;
4065}
DWORD WINAPI PNP_GetDeviceListSize(handle_t hBinding, LPWSTR pszFilter, PNP_RPC_BUFFER_SIZE *pulLength, DWORD ulFlags)
Definition: rpcserver.c:1717

Referenced by CM_Get_Device_ID_List_Size_ExA(), CM_Get_Device_ID_List_SizeW(), and DisplayDeviceRelations().

◆ CM_Get_Device_ID_List_SizeA()

CONFIGRET WINAPI CM_Get_Device_ID_List_SizeA ( _Out_ PULONG  pulLen,
_In_opt_ PCSTR  pszFilter,
_In_ ULONG  ulFlags 
)

Definition at line 3944 of file cfgmgr.c.

3948{
3949 TRACE("CM_Get_Device_ID_List_SizeA(%p %s %lx)\n",
3950 pulLen, debugstr_a(pszFilter), ulFlags);
3951
3952 return CM_Get_Device_ID_List_Size_ExA(pulLen, pszFilter, ulFlags, NULL);
3953}
CONFIGRET WINAPI CM_Get_Device_ID_List_Size_ExA(_Out_ PULONG pulLen, _In_opt_ PCSTR pszFilter, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:3978

◆ CM_Get_Device_ID_List_SizeW()

CONFIGRET WINAPI CM_Get_Device_ID_List_SizeW ( _Out_ PULONG  pulLen,
_In_opt_ PCWSTR  pszFilter,
_In_ ULONG  ulFlags 
)

Definition at line 3961 of file cfgmgr.c.

3965{
3966 TRACE("CM_Get_Device_ID_List_SizeW(%p %s %lx)\n",
3967 pulLen, debugstr_w(pszFilter), ulFlags);
3968
3969 return CM_Get_Device_ID_List_Size_ExW(pulLen, pszFilter, ulFlags, NULL);
3970}

◆ CM_Get_Device_ID_ListA()

CONFIGRET WINAPI CM_Get_Device_ID_ListA ( _In_ PCSTR  pszFilter,
_Out_writes_(BufferLen) PCHAR  Buffer,
_In_ ULONG  BufferLen,
_In_ ULONG  ulFlags 
)

Definition at line 3785 of file cfgmgr.c.

3790{
3791 TRACE("CM_Get_Device_ID_ListA(%p %p %lu %lx)\n",
3792 pszFilter, Buffer, BufferLen, ulFlags);
3793
3794 return CM_Get_Device_ID_List_ExA(pszFilter, Buffer, BufferLen,
3795 ulFlags, NULL);
3796}
CONFIGRET WINAPI CM_Get_Device_ID_List_ExA(_In_ PCSTR pszFilter, _Out_writes_(BufferLen) PCHAR Buffer, _In_ ULONG BufferLen, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:3823

◆ CM_Get_Device_ID_ListW()

CONFIGRET WINAPI CM_Get_Device_ID_ListW ( _In_ PCWSTR  pszFilter,
_Out_writes_(BufferLen) PWCHAR  Buffer,
_In_ ULONG  BufferLen,
_In_ ULONG  ulFlags 
)

Definition at line 3804 of file cfgmgr.c.

3809{
3810 TRACE("CM_Get_Device_ID_ListW(%p %p %lu %lx)\n",
3811 pszFilter, Buffer, BufferLen, ulFlags);
3812
3813 return CM_Get_Device_ID_List_ExW(pszFilter, Buffer, BufferLen,
3814 ulFlags, NULL);
3815}

◆ CM_Get_Device_ID_Size()

CONFIGRET WINAPI CM_Get_Device_ID_Size ( _Out_ PULONG  pulLen,
_In_ DEVINST  dnDevInst,
_In_ ULONG  ulFlags 
)

Definition at line 4073 of file cfgmgr.c.

4077{
4078 TRACE("CM_Get_Device_ID_Size(%p %lx %lx)\n",
4079 pulLen, dnDevInst, ulFlags);
4080
4081 return CM_Get_Device_ID_Size_Ex(pulLen, dnDevInst, ulFlags, NULL);
4082}
CONFIGRET WINAPI CM_Get_Device_ID_Size_Ex(_Out_ PULONG pulLen, _In_ DEVINST dnDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:4090

Referenced by GetMonitorDevInstID(), CDeviceNode::SetupNode(), and ShowDeviceProperties().

◆ CM_Get_Device_ID_Size_Ex()

CONFIGRET WINAPI CM_Get_Device_ID_Size_Ex ( _Out_ PULONG  pulLen,
_In_ DEVINST  dnDevInst,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 4090 of file cfgmgr.c.

4095{
4096 HSTRING_TABLE StringTable = NULL;
4097 LPWSTR DeviceId;
4098
4099 TRACE("CM_Get_Device_ID_Size_Ex(%p %lx %lx %p)\n",
4100 pulLen, dnDevInst, ulFlags, hMachine);
4101
4102 if (pulLen == NULL)
4103 return CR_INVALID_POINTER;
4104
4105 if (dnDevInst == 0)
4106 return CR_INVALID_DEVINST;
4107
4108 if (ulFlags != 0)
4109 return CR_INVALID_FLAG;
4110
4111 if (hMachine != NULL)
4112 {
4113 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
4114 if (StringTable == NULL)
4115 return CR_FAILURE;
4116 }
4117 else
4118 {
4119 if (!PnpGetLocalHandles(NULL, &StringTable))
4120 return CR_FAILURE;
4121 }
4122
4123 DeviceId = pSetupStringTableStringFromId(StringTable, dnDevInst);
4124 if (DeviceId == NULL)
4125 {
4126 *pulLen = 0;
4127 return CR_SUCCESS;
4128 }
4129
4130 *pulLen = lstrlenW(DeviceId);
4131
4132 return CR_SUCCESS;
4133}

Referenced by CM_Get_Device_ID_Size().

◆ CM_Get_Device_IDA()

CONFIGRET WINAPI CM_Get_Device_IDA ( _In_ DEVINST  dnDevInst,
_Out_writes_(BufferLen) PCHAR  Buffer,
_In_ ULONG  BufferLen,
_In_ ULONG  ulFlags 
)

Definition at line 3658 of file cfgmgr.c.

3663{
3664 TRACE("CM_Get_Device_IDA(%lx %p %lu %lx)\n",
3665 dnDevInst, Buffer, BufferLen, ulFlags);
3666
3667 return CM_Get_Device_ID_ExA(dnDevInst, Buffer, BufferLen, ulFlags, NULL);
3668}
CONFIGRET WINAPI CM_Get_Device_ID_ExA(_In_ DEVINST dnDevInst, _Out_writes_(BufferLen) PCHAR Buffer, _In_ ULONG BufferLen, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:3694

Referenced by test_devnode().

◆ CM_Get_Device_IDW()

CONFIGRET WINAPI CM_Get_Device_IDW ( _In_ DEVINST  dnDevInst,
_Out_writes_(BufferLen) PWCHAR  Buffer,
_In_ ULONG  BufferLen,
_In_ ULONG  ulFlags 
)

Definition at line 3676 of file cfgmgr.c.

3681{
3682 TRACE("CM_Get_Device_IDW(%lx %p %lu %lx)\n",
3683 dnDevInst, Buffer, BufferLen, ulFlags);
3684
3685 return CM_Get_Device_ID_ExW(dnDevInst, Buffer, BufferLen, ulFlags, NULL);
3686}

Referenced by CDeviceNode::SetupNode(), and ShowDeviceProperties().

◆ CM_Get_Device_Interface_Alias_ExA()

CONFIGRET WINAPI CM_Get_Device_Interface_Alias_ExA ( _In_ LPCSTR  pszDeviceInterface,
_In_ LPGUID  AliasInterfaceGuid,
_Out_writes_ *pulLength LPSTR  pszAliasDeviceInterface,
_Inout_ PULONG  pulLength,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 4185 of file cfgmgr.c.

4192{
4193 FIXME("CM_Get_Device_Interface_Alias_ExA(%p %p %p %p %lx %p)\n",
4194 pszDeviceInterface, AliasInterfaceGuid,
4195 pszAliasDeviceInterface, pulLength, ulFlags, hMachine);
4196
4198}

Referenced by CM_Get_Device_Interface_AliasA().

◆ CM_Get_Device_Interface_Alias_ExW()

CONFIGRET WINAPI CM_Get_Device_Interface_Alias_ExW ( _In_ LPCWSTR  pszDeviceInterface,
_In_ LPGUID  AliasInterfaceGuid,
_Out_writes_ *pulLength LPWSTR  pszAliasDeviceInterface,
_Inout_ PULONG  pulLength,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 4206 of file cfgmgr.c.

4213{
4215 ULONG ulTransferLength;
4217
4218 TRACE("CM_Get_Device_Interface_Alias_ExW(%p %p %p %p %lx %p)\n",
4219 pszDeviceInterface, AliasInterfaceGuid,
4220 pszAliasDeviceInterface, pulLength, ulFlags, hMachine);
4221
4222 if (pszDeviceInterface == NULL ||
4223 AliasInterfaceGuid == NULL ||
4224 pszAliasDeviceInterface == NULL ||
4225 pulLength == NULL)
4226 return CR_INVALID_POINTER;
4227
4228 if (ulFlags != 0)
4229 return CR_INVALID_FLAG;
4230
4231 if (hMachine != NULL)
4232 {
4233 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
4234 if (BindingHandle == NULL)
4235 return CR_FAILURE;
4236 }
4237 else
4238 {
4240 return CR_FAILURE;
4241 }
4242
4243 ulTransferLength = *pulLength;
4244
4246 {
4248 (LPWSTR)pszDeviceInterface,
4249 AliasInterfaceGuid,
4250 pszAliasDeviceInterface,
4251 pulLength,
4252 &ulTransferLength,
4253 0);
4254 }
4256 {
4258 }
4260
4261 return ret;
4262}
DWORD WINAPI PNP_GetInterfaceDeviceAlias(handle_t hBinding, LPWSTR pszInterfaceDevice, GUID *AliasInterfaceGuid, LPWSTR pszAliasInterfaceDevice, PNP_RPC_STRING_LEN *pulLength, PNP_RPC_STRING_LEN *pulTransferLen, DWORD ulFlags)
Definition: rpcserver.c:2584

Referenced by CM_Get_Device_Interface_AliasW().

◆ CM_Get_Device_Interface_AliasA()

CONFIGRET WINAPI CM_Get_Device_Interface_AliasA ( _In_ LPCSTR  pszDeviceInterface,
_In_ LPGUID  AliasInterfaceGuid,
_Out_writes_ *pulLength LPSTR  pszAliasDeviceInterface,
_Inout_ PULONG  pulLength,
_In_ ULONG  ulFlags 
)

Definition at line 4141 of file cfgmgr.c.

4147{
4148 TRACE("CM_Get_Device_Interface_AliasA(%p %p %p %p %lx)\n",
4149 pszDeviceInterface, AliasInterfaceGuid,
4150 pszAliasDeviceInterface, pulLength, ulFlags);
4151
4152 return CM_Get_Device_Interface_Alias_ExA(pszDeviceInterface,
4153 AliasInterfaceGuid, pszAliasDeviceInterface, pulLength,
4154 ulFlags, NULL);
4155}
CONFIGRET WINAPI CM_Get_Device_Interface_Alias_ExA(_In_ LPCSTR pszDeviceInterface, _In_ LPGUID AliasInterfaceGuid, _Out_writes_(*pulLength) LPSTR pszAliasDeviceInterface, _Inout_ PULONG pulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:4185

◆ CM_Get_Device_Interface_AliasW()

CONFIGRET WINAPI CM_Get_Device_Interface_AliasW ( _In_ LPCWSTR  pszDeviceInterface,
_In_ LPGUID  AliasInterfaceGuid,
_Out_writes_ *pulLength LPWSTR  pszAliasDeviceInterface,
_Inout_ PULONG  pulLength,
_In_ ULONG  ulFlags 
)

Definition at line 4163 of file cfgmgr.c.

4169{
4170 TRACE("CM_Get_Device_Interface_AliasW(%p %p %p %p %lx)\n",
4171 pszDeviceInterface, AliasInterfaceGuid,
4172 pszAliasDeviceInterface, pulLength, ulFlags);
4173
4174 return CM_Get_Device_Interface_Alias_ExW(pszDeviceInterface,
4175 AliasInterfaceGuid, pszAliasDeviceInterface, pulLength,
4176 ulFlags, NULL);
4177}
CONFIGRET WINAPI CM_Get_Device_Interface_Alias_ExW(_In_ LPCWSTR pszDeviceInterface, _In_ LPGUID AliasInterfaceGuid, _Out_writes_(*pulLength) LPWSTR pszAliasDeviceInterface, _Inout_ PULONG pulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:4206

◆ CM_Get_Device_Interface_List_ExA()

CONFIGRET WINAPI CM_Get_Device_Interface_List_ExA ( _In_ LPGUID  InterfaceClassGuid,
_In_opt_ DEVINSTID_A  pDeviceID,
_Out_writes_(BufferLen) PCHAR  Buffer,
_In_ ULONG  BufferLen,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 4312 of file cfgmgr.c.

4319{
4320 DEVINSTID_W pDeviceIdW = NULL;
4321 PWCHAR BufferW = NULL;
4323
4324 TRACE("CM_Get_Device_Interface_List_ExA(%s %s %p %lu 0x%08lx %p)\n",
4326 Buffer, BufferLen, ulFlags, hMachine);
4327
4328 if (Buffer == NULL ||
4329 BufferLen == 0)
4330 return CR_INVALID_POINTER;
4331
4332 if (pDeviceID != NULL)
4333 {
4334 if (!pSetupCaptureAndConvertAnsiArg(pDeviceID, &pDeviceIdW))
4335 return CR_INVALID_DEVICE_ID;
4336 }
4337
4338 BufferW = MyMalloc(BufferLen * sizeof(WCHAR));
4339 if (BufferW == NULL)
4340 {
4342 goto Done;
4343 }
4344
4346 BufferW, BufferLen, ulFlags,
4347 hMachine);
4348 if (ret != CR_SUCCESS)
4349 goto Done;
4350
4352 0,
4353 BufferW,
4354 BufferLen,
4355 Buffer,
4356 BufferLen,
4357 NULL,
4358 NULL) == 0)
4359 ret = CR_FAILURE;
4360
4361Done:
4362 if (BufferW != NULL)
4363 MyFree(BufferW);
4364
4365 if (pDeviceIdW != NULL)
4366 MyFree(pDeviceIdW);
4367
4368 return ret;
4369}
CONFIGRET WINAPI CM_Get_Device_Interface_List_ExW(_In_ LPGUID InterfaceClassGuid, _In_opt_ DEVINSTID_W pDeviceID, _Out_writes_(BufferLen) PWCHAR Buffer, _In_ ULONG BufferLen, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:4377
#define debugstr_guid
Definition: kernel32.h:35
uint16_t * PWCHAR
Definition: typedefs.h:56
_In_ CONST GUID * InterfaceClassGuid
Definition: iofuncs.h:1136

Referenced by CM_Get_Device_Interface_ListA().

◆ CM_Get_Device_Interface_List_ExW()

CONFIGRET WINAPI CM_Get_Device_Interface_List_ExW ( _In_ LPGUID  InterfaceClassGuid,
_In_opt_ DEVINSTID_W  pDeviceID,
_Out_writes_(BufferLen) PWCHAR  Buffer,
_In_ ULONG  BufferLen,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 4377 of file cfgmgr.c.

4384{
4388
4389 TRACE("CM_Get_Device_Interface_List_ExW(%s %s %p %lu 0x%08lx %p)\n",
4391 Buffer, BufferLen, ulFlags, hMachine);
4392
4393 if (Buffer == NULL ||
4394 BufferLen == 0)
4395 return CR_INVALID_POINTER;
4396
4397 if (ulFlags & ~CM_GET_DEVICE_INTERFACE_LIST_BITS)
4398 return CR_INVALID_FLAG;
4399
4400 if (hMachine != NULL)
4401 {
4402 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
4403 if (BindingHandle == NULL)
4404 return CR_FAILURE;
4405 }
4406 else
4407 {
4409 return CR_FAILURE;
4410 }
4411
4412 *Buffer = 0;
4413 BufferSize = BufferLen;
4414
4416 {
4419 pDeviceID,
4420 (LPBYTE)Buffer,
4421 &BufferSize,
4422 ulFlags);
4423 }
4425 {
4427 }
4429
4430 return ret;
4431}
DWORD WINAPI PNP_GetInterfaceDeviceList(handle_t hBinding, GUID *InterfaceGuid, LPWSTR pszDeviceID, BYTE *Buffer, PNP_RPC_BUFFER_SIZE *pulLength, DWORD ulFlags)
Definition: rpcserver.c:2601
#define CM_GET_DEVICE_INTERFACE_LIST_BITS
Definition: cfgmgr32.h:674
unsigned long PNP_RPC_BUFFER_SIZE
Definition: pnp.idl:34
unsigned char * LPBYTE
Definition: typedefs.h:53
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
Definition: wdfmemory.h:254

Referenced by CM_Get_Device_Interface_List_ExA(), and CM_Get_Device_Interface_ListW().

◆ CM_Get_Device_Interface_List_Size_ExA()

CONFIGRET WINAPI CM_Get_Device_Interface_List_Size_ExA ( _Out_ PULONG  pulLen,
_In_ LPGUID  InterfaceClassGuid,
_In_opt_ DEVINSTID_A  pDeviceID,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 4477 of file cfgmgr.c.

4483{
4484 DEVINSTID_W pDeviceIdW = NULL;
4486
4487 TRACE("CM_Get_Device_Interface_List_Size_ExA(%p %p %s 0x%08lx %p)\n",
4488 pulLen, InterfaceClassGuid, debugstr_a(pDeviceID), ulFlags, hMachine);
4489
4490 if (pulLen == NULL)
4491 return CR_INVALID_POINTER;
4492
4493 if (pDeviceID != NULL)
4494 {
4495 if (!pSetupCaptureAndConvertAnsiArg(pDeviceID, &pDeviceIdW))
4496 return CR_INVALID_DEVICE_ID;
4497 }
4498
4499 *pulLen = 0;
4500
4502 pDeviceIdW, ulFlags, hMachine);
4503
4504 if (pDeviceIdW != NULL)
4505 MyFree(pDeviceIdW);
4506
4507 return ret;
4508}
CONFIGRET WINAPI CM_Get_Device_Interface_List_Size_ExW(_Out_ PULONG pulLen, _In_ LPGUID InterfaceClassGuid, _In_opt_ DEVINSTID_W pDeviceID, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:4516

Referenced by CM_Get_Device_Interface_List_SizeA().

◆ CM_Get_Device_Interface_List_Size_ExW()

CONFIGRET WINAPI CM_Get_Device_Interface_List_Size_ExW ( _Out_ PULONG  pulLen,
_In_ LPGUID  InterfaceClassGuid,
_In_opt_ DEVINSTID_W  pDeviceID,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 4516 of file cfgmgr.c.

4522{
4525
4526 TRACE("CM_Get_Device_Interface_List_Size_ExW(%p %p %s 0x%08lx %p)\n",
4527 pulLen, InterfaceClassGuid, debugstr_w(pDeviceID), ulFlags, hMachine);
4528
4529 if (pulLen == NULL)
4530 return CR_INVALID_POINTER;
4531
4532 if (ulFlags & ~CM_GET_DEVICE_INTERFACE_LIST_BITS)
4533 return CR_INVALID_FLAG;
4534
4535 if (hMachine != NULL)
4536 {
4537 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
4538 if (BindingHandle == NULL)
4539 return CR_FAILURE;
4540 }
4541 else
4542 {
4544 return CR_FAILURE;
4545 }
4546
4547 *pulLen = 0;
4548
4550 {
4552 pulLen,
4554 pDeviceID,
4555 ulFlags);
4556 }
4558 {
4560 }
4562
4563 return ret;
4564}
DWORD WINAPI PNP_GetInterfaceDeviceListSize(handle_t hBinding, PNP_RPC_BUFFER_SIZE *pulLen, GUID *InterfaceGuid, LPWSTR pszDeviceID, DWORD ulFlags)
Definition: rpcserver.c:2649

Referenced by CM_Get_Device_Interface_List_Size_ExA(), and CM_Get_Device_Interface_List_SizeW().

◆ CM_Get_Device_Interface_List_SizeA()

CONFIGRET WINAPI CM_Get_Device_Interface_List_SizeA ( _Out_ PULONG  pulLen,
_In_ LPGUID  InterfaceClassGuid,
_In_opt_ DEVINSTID_A  pDeviceID,
_In_ ULONG  ulFlags 
)

Definition at line 4439 of file cfgmgr.c.

4444{
4445 TRACE("CM_Get_Device_Interface_List_SizeA(%p %p %s 0x%08lx)\n",
4446 pulLen, InterfaceClassGuid, debugstr_a(pDeviceID), ulFlags);
4447
4449 pDeviceID, ulFlags, NULL);
4450}
CONFIGRET WINAPI CM_Get_Device_Interface_List_Size_ExA(_Out_ PULONG pulLen, _In_ LPGUID InterfaceClassGuid, _In_opt_ DEVINSTID_A pDeviceID, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:4477

◆ CM_Get_Device_Interface_List_SizeW()

CONFIGRET WINAPI CM_Get_Device_Interface_List_SizeW ( _Out_ PULONG  pulLen,
_In_ LPGUID  InterfaceClassGuid,
_In_opt_ DEVINSTID_W  pDeviceID,
_In_ ULONG  ulFlags 
)

Definition at line 4458 of file cfgmgr.c.

4463{
4464 TRACE("CM_Get_Device_Interface_List_SizeW(%p %p %s 0x%08lx)\n",
4465 pulLen, InterfaceClassGuid, debugstr_w(pDeviceID), ulFlags);
4466
4468 pDeviceID, ulFlags, NULL);
4469}

◆ CM_Get_Device_Interface_ListA()

CONFIGRET WINAPI CM_Get_Device_Interface_ListA ( _In_ LPGUID  InterfaceClassGuid,
_In_opt_ DEVINSTID_A  pDeviceID,
_Out_writes_(BufferLen) PCHAR  Buffer,
_In_ ULONG  BufferLen,
_In_ ULONG  ulFlags 
)

Definition at line 4270 of file cfgmgr.c.

4276{
4277 TRACE("CM_Get_Device_Interface_ListA(%s %s %p %lu 0x%08lx)\n",
4279 Buffer, BufferLen, ulFlags);
4280
4282 Buffer, BufferLen, ulFlags, NULL);
4283}
CONFIGRET WINAPI CM_Get_Device_Interface_List_ExA(_In_ LPGUID InterfaceClassGuid, _In_opt_ DEVINSTID_A pDeviceID, _Out_writes_(BufferLen) PCHAR Buffer, _In_ ULONG BufferLen, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:4312

◆ CM_Get_Device_Interface_ListW()

CONFIGRET WINAPI CM_Get_Device_Interface_ListW ( _In_ LPGUID  InterfaceClassGuid,
_In_opt_ DEVINSTID_W  pDeviceID,
_Out_writes_(BufferLen) PWCHAR  Buffer,
_In_ ULONG  BufferLen,
_In_ ULONG  ulFlags 
)

Definition at line 4291 of file cfgmgr.c.

4297{
4298 TRACE("CM_Get_Device_Interface_ListW(%s %s %p %lu 0x%08lx)\n",
4300 Buffer, BufferLen, ulFlags);
4301
4303 Buffer, BufferLen, ulFlags, NULL);
4304}

◆ CM_Get_DevNode_Custom_Property_ExA()

CONFIGRET WINAPI CM_Get_DevNode_Custom_Property_ExA ( _In_ DEVINST  dnDevInst,
_In_ PCSTR  pszCustomPropertyName,
_Out_opt_ PULONG  pulRegDataType,
_Out_writes_bytes_opt_ *pulLength PVOID  Buffer,
_Inout_ PULONG  pulLength,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 3183 of file cfgmgr.c.

3191{
3192 LPWSTR pszPropertyNameW;
3193 PVOID BufferW;
3194 ULONG ulLengthW;
3195 ULONG ulDataType = REG_NONE;
3196 CONFIGRET ret;
3197
3198 TRACE("CM_Get_DevNode_Custom_Property_ExA(%lx %s %p %p %p %lx %p)\n",
3199 dnDevInst, pszCustomPropertyName, pulRegDataType,
3200 Buffer, pulLength, ulFlags, hMachine);
3201
3202 if (!pulLength)
3203 return CR_INVALID_POINTER;
3204
3205 ulLengthW = *pulLength * sizeof(WCHAR);
3206 BufferW = HeapAlloc(GetProcessHeap(), 0, ulLengthW);
3207 if (!BufferW)
3208 return CR_OUT_OF_MEMORY;
3209
3210 pszPropertyNameW = pSetupMultiByteToUnicode(pszCustomPropertyName,
3211 CP_ACP);
3212 if (pszPropertyNameW == NULL)
3213 {
3214 HeapFree(GetProcessHeap(), 0, BufferW);
3215 return CR_OUT_OF_MEMORY;
3216 }
3217
3219 pszPropertyNameW,
3220 &ulDataType,
3221 BufferW,
3222 &ulLengthW,
3223 ulFlags,
3224 hMachine);
3225 if (ret == CR_SUCCESS)
3226 {
3227 if (ulDataType == REG_SZ ||
3228 ulDataType == REG_EXPAND_SZ ||
3229 ulDataType == REG_MULTI_SZ)
3230 {
3231 /* Do W->A conversion */
3232 *pulLength = WideCharToMultiByte(CP_ACP,
3233 0,
3234 BufferW,
3235 lstrlenW(BufferW) + 1,
3236 Buffer,
3237 *pulLength,
3238 NULL,
3239 NULL);
3240 if (*pulLength == 0)
3241 ret = CR_FAILURE;
3242 }
3243 else
3244 {
3245 /* Directly copy the value */
3246 if (ulLengthW <= *pulLength)
3247 memcpy(Buffer, BufferW, ulLengthW);
3248 else
3249 {
3250 *pulLength = ulLengthW;
3252 }
3253 }
3254 }
3255
3256 if (pulRegDataType)
3257 *pulRegDataType = ulDataType;
3258
3259 HeapFree(GetProcessHeap(), 0, BufferW);
3260 MyFree(pszPropertyNameW);
3261
3262 return ret;
3263}
CONFIGRET WINAPI CM_Get_DevNode_Custom_Property_ExW(_In_ DEVINST dnDevInst, _In_ PCWSTR pszCustomPropertyName, _Out_opt_ PULONG pulRegDataType, _Out_writes_bytes_opt_(*pulLength) PVOID Buffer, _Inout_ PULONG pulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:3271
LPWSTR WINAPI pSetupMultiByteToUnicode(LPCSTR lpMultiByteStr, UINT uCodePage)
Definition: misc.c:281
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
#define REG_NONE
Definition: nt_native.h:1492
#define REG_EXPAND_SZ
Definition: nt_native.h:1494

Referenced by CM_Get_DevNode_Custom_PropertyA().

◆ CM_Get_DevNode_Custom_Property_ExW()

CONFIGRET WINAPI CM_Get_DevNode_Custom_Property_ExW ( _In_ DEVINST  dnDevInst,
_In_ PCWSTR  pszCustomPropertyName,
_Out_opt_ PULONG  pulRegDataType,
_Out_writes_bytes_opt_ *pulLength PVOID  Buffer,
_Inout_ PULONG  pulLength,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 3271 of file cfgmgr.c.

3279{
3281 HSTRING_TABLE StringTable = NULL;
3282 LPWSTR lpDevInst;
3283 ULONG ulDataType = REG_NONE;
3284 ULONG ulTransferLength;
3286
3287 TRACE("CM_Get_DevNode_Custom_Property_ExW(%lx %s %p %p %p %lx %p)\n",
3288 dnDevInst, debugstr_w(pszCustomPropertyName), pulRegDataType,
3289 Buffer, pulLength, ulFlags, hMachine);
3290
3291 if (dnDevInst == 0)
3292 return CR_INVALID_DEVNODE;
3293
3294 if (pszCustomPropertyName == NULL ||
3295 pulLength == NULL ||
3296 *pulLength == 0)
3297 return CR_INVALID_POINTER;
3298
3299 if (ulFlags & ~CM_CUSTOMDEVPROP_BITS)
3300 return CR_INVALID_FLAG;
3301
3302 if (hMachine != NULL)
3303 {
3304 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
3305 if (BindingHandle == NULL)
3306 return CR_FAILURE;
3307
3308 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
3309 if (StringTable == 0)
3310 return CR_FAILURE;
3311 }
3312 else
3313 {
3314 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
3315 return CR_FAILURE;
3316 }
3317
3318 lpDevInst = pSetupStringTableStringFromId(StringTable, dnDevInst);
3319 if (lpDevInst == NULL)
3320 return CR_INVALID_DEVNODE;
3321
3322 ulTransferLength = *pulLength;
3323
3325 {
3327 lpDevInst,
3328 (LPWSTR)pszCustomPropertyName,
3329 &ulDataType,
3330 Buffer,
3331 &ulTransferLength,
3332 pulLength,
3333 ulFlags);
3334 }
3336 {
3338 }
3340
3341 if (ret == CR_SUCCESS)
3342 {
3343 if (pulRegDataType != NULL)
3344 *pulRegDataType = ulDataType;
3345 }
3346
3347 return ret;
3348}
DWORD WINAPI PNP_GetCustomDevProp(handle_t hBinding, LPWSTR pDeviceID, LPWSTR CustomPropName, DWORD *pulRegDataType, BYTE *Buffer, PNP_RPC_STRING_LEN *pulTransferLen, PNP_RPC_STRING_LEN *pulLength, DWORD ulFlags)
Definition: rpcserver.c:4807
#define CM_CUSTOMDEVPROP_BITS
Definition: cfgmgr32.h:836

Referenced by CM_Get_DevNode_Custom_Property_ExA(), and CM_Get_DevNode_Custom_PropertyW().

◆ CM_Get_DevNode_Custom_PropertyA()

CONFIGRET WINAPI CM_Get_DevNode_Custom_PropertyA ( _In_ DEVINST  dnDevInst,
_In_ PCSTR  pszCustomPropertyName,
_Out_opt_ PULONG  pulRegDataType,
_Out_writes_bytes_opt_ *pulLength PVOID  Buffer,
_Inout_ PULONG  pulLength,
_In_ ULONG  ulFlags 
)

Definition at line 3137 of file cfgmgr.c.

3144{
3145 TRACE("CM_Get_DevNode_Custom_PropertyA(%lx %s %p %p %p %lx)\n",
3146 dnDevInst, pszCustomPropertyName, pulRegDataType,
3147 Buffer, pulLength, ulFlags);
3148
3149 return CM_Get_DevNode_Custom_Property_ExA(dnDevInst, pszCustomPropertyName,
3150 pulRegDataType, Buffer,
3151 pulLength, ulFlags, NULL);
3152}
CONFIGRET WINAPI CM_Get_DevNode_Custom_Property_ExA(_In_ DEVINST dnDevInst, _In_ PCSTR pszCustomPropertyName, _Out_opt_ PULONG pulRegDataType, _Out_writes_bytes_opt_(*pulLength) PVOID Buffer, _Inout_ PULONG pulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:3183

◆ CM_Get_DevNode_Custom_PropertyW()

CONFIGRET WINAPI CM_Get_DevNode_Custom_PropertyW ( _In_ DEVINST  dnDevInst,
_In_ PCWSTR  pszCustomPropertyName,
_Out_opt_ PULONG  pulRegDataType,
_Out_writes_bytes_opt_ *pulLength PVOID  Buffer,
_Inout_ PULONG  pulLength,
_In_ ULONG  ulFlags 
)

Definition at line 3160 of file cfgmgr.c.

3167{
3168 TRACE("CM_Get_DevNode_Custom_PropertyW(%lx %s %p %p %p %lx)\n",
3169 dnDevInst, debugstr_w(pszCustomPropertyName), pulRegDataType,
3170 Buffer, pulLength, ulFlags);
3171
3172 return CM_Get_DevNode_Custom_Property_ExW(dnDevInst, pszCustomPropertyName,
3173 pulRegDataType, Buffer,
3174 pulLength, ulFlags, NULL);
3175}

◆ CM_Get_DevNode_Registry_Property_ExA()

CONFIGRET WINAPI CM_Get_DevNode_Registry_Property_ExA ( _In_ DEVINST  dnDevInst,
_In_ ULONG  ulProperty,
_Out_opt_ PULONG  pulRegDataType,
_Out_writes_bytes_opt_ *pulLength PVOID  Buffer,
_Inout_ PULONG  pulLength,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 3400 of file cfgmgr.c.

3408{
3409 PVOID BufferW;
3410 ULONG LengthW;
3411 ULONG ulDataType = REG_NONE;
3412 CONFIGRET ret;
3413
3414 TRACE("CM_Get_DevNode_Registry_Property_ExA(%lx %lu %p %p %p %lx %p)\n",
3415 dnDevInst, ulProperty, pulRegDataType, Buffer, pulLength,
3416 ulFlags, hMachine);
3417
3418 if (!pulLength)
3419 return CR_INVALID_POINTER;
3420
3421 LengthW = *pulLength * sizeof(WCHAR);
3422 BufferW = HeapAlloc(GetProcessHeap(), 0, LengthW);
3423 if (!BufferW)
3424 return CR_OUT_OF_MEMORY;
3425
3427 ulProperty,
3428 &ulDataType,
3429 BufferW,
3430 &LengthW,
3431 ulFlags,
3432 hMachine);
3433
3434 if (ret == CR_SUCCESS)
3435 {
3436 if (ulDataType == REG_SZ ||
3437 ulDataType == REG_EXPAND_SZ ||
3438 ulDataType == REG_MULTI_SZ)
3439 {
3440 /* Do W->A conversion */
3441 *pulLength = WideCharToMultiByte(CP_ACP,
3442 0,
3443 BufferW,
3444 lstrlenW(BufferW) + 1,
3445 Buffer,
3446 *pulLength,
3447 NULL,
3448 NULL);
3449 if (*pulLength == 0)
3450 ret = CR_FAILURE;
3451 }
3452 else
3453 {
3454 /* Directly copy the value */
3455 if (LengthW <= *pulLength)
3456 memcpy(Buffer, BufferW, LengthW);
3457 else
3458 {
3459 *pulLength = LengthW;
3461 }
3462 }
3463 }
3464
3465 if (pulRegDataType)
3466 *pulRegDataType = ulDataType;
3467
3468 HeapFree(GetProcessHeap(), 0, BufferW);
3469
3470 return ret;
3471}
CONFIGRET WINAPI CM_Get_DevNode_Registry_Property_ExW(_In_ DEVINST dnDevInst, _In_ ULONG ulProperty, _Out_opt_ PULONG pulRegDataType, _Out_writes_bytes_opt_(*pulLength) PVOID Buffer, _Inout_ PULONG pulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:3479

Referenced by CM_Get_DevNode_Registry_PropertyA().

◆ CM_Get_DevNode_Registry_Property_ExW()

CONFIGRET WINAPI CM_Get_DevNode_Registry_Property_ExW ( _In_ DEVINST  dnDevInst,
_In_ ULONG  ulProperty,
_Out_opt_ PULONG  pulRegDataType,
_Out_writes_bytes_opt_ *pulLength PVOID  Buffer,
_Inout_ PULONG  pulLength,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 3479 of file cfgmgr.c.

3487{
3489 HSTRING_TABLE StringTable = NULL;
3491 LPWSTR lpDevInst;
3492 ULONG ulDataType = REG_NONE;
3493 ULONG ulTransferLength = 0;
3494
3495 TRACE("CM_Get_DevNode_Registry_Property_ExW(%lx %lu %p %p %p %lx %p)\n",
3496 dnDevInst, ulProperty, pulRegDataType, Buffer, pulLength,
3497 ulFlags, hMachine);
3498
3499 if (dnDevInst == 0)
3500 return CR_INVALID_DEVNODE;
3501
3502 if (ulProperty < CM_DRP_MIN || ulProperty > CM_DRP_MAX)
3503 return CR_INVALID_PROPERTY;
3504
3505 /* pulRegDataType is optional */
3506
3507 /* Buffer is optional */
3508
3509 if (pulLength == NULL)
3510 return CR_INVALID_POINTER;
3511
3512 if (*pulLength == 0)
3513 return CR_INVALID_POINTER;
3514
3515 if (ulFlags != 0)
3516 return CR_INVALID_FLAG;
3517
3518 if (hMachine != NULL)
3519 {
3520 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
3521 if (BindingHandle == NULL)
3522 return CR_FAILURE;
3523
3524 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
3525 if (StringTable == 0)
3526 return CR_FAILURE;
3527 }
3528 else
3529 {
3530 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
3531 return CR_FAILURE;
3532 }
3533
3534 lpDevInst = pSetupStringTableStringFromId(StringTable, dnDevInst);
3535 if (lpDevInst == NULL)
3536 return CR_INVALID_DEVNODE;
3537
3538 ulTransferLength = *pulLength;
3539
3541 {
3543 lpDevInst,
3544 ulProperty,
3545 &ulDataType,
3546 Buffer,
3547 &ulTransferLength,
3548 pulLength,
3549 ulFlags);
3550 }
3552 {
3554 }
3556
3557 if (ret == CR_SUCCESS)
3558 {
3559 if (pulRegDataType != NULL)
3560 *pulRegDataType = ulDataType;
3561 }
3562
3563 return ret;
3564}
DWORD WINAPI PNP_GetDeviceRegProp(handle_t hBinding, LPWSTR pDeviceID, DWORD ulProperty, DWORD *pulRegDataType, BYTE *Buffer, PNP_PROP_SIZE *pulTransferLen, PNP_PROP_SIZE *pulLength, DWORD ulFlags)
Definition: rpcserver.c:1835
#define CM_DRP_MAX
Definition: cfgmgr32.h:732

Referenced by CM_Get_DevNode_Registry_Property_ExA(), CM_Get_DevNode_Registry_PropertyW(), DisplayDevNodeEnumerator(), SETUP_CreateDevicesList(), and SetupDiGetDeviceRegistryPropertyW().

◆ CM_Get_DevNode_Registry_PropertyA()

CONFIGRET WINAPI CM_Get_DevNode_Registry_PropertyA ( _In_ DEVINST  dnDevInst,
_In_ ULONG  ulProperty,
_Out_opt_ PULONG  pulRegDataType,
_Out_writes_bytes_opt_ *pulLength PVOID  Buffer,
_Inout_ PULONG  pulLength,
_In_ ULONG  ulFlags 
)

Definition at line 3356 of file cfgmgr.c.

3363{
3364 TRACE("CM_Get_DevNode_Registry_PropertyA(%lx %lu %p %p %p %lx)\n",
3365 dnDevInst, ulProperty, pulRegDataType, Buffer, pulLength, ulFlags);
3366
3367 return CM_Get_DevNode_Registry_Property_ExA(dnDevInst, ulProperty,
3368 pulRegDataType, Buffer,
3369 pulLength, ulFlags, NULL);
3370}
CONFIGRET WINAPI CM_Get_DevNode_Registry_Property_ExA(_In_ DEVINST dnDevInst, _In_ ULONG ulProperty, _Out_opt_ PULONG pulRegDataType, _Out_writes_bytes_opt_(*pulLength) PVOID Buffer, _Inout_ PULONG pulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:3400

◆ CM_Get_DevNode_Registry_PropertyW()

CONFIGRET WINAPI CM_Get_DevNode_Registry_PropertyW ( _In_ DEVINST  dnDevInst,
_In_ ULONG  ulProperty,
_Out_opt_ PULONG  pulRegDataType,
_Out_writes_bytes_opt_ *pulLength PVOID  Buffer,
_Inout_ PULONG  pulLength,
_In_ ULONG  ulFlags 
)

Definition at line 3378 of file cfgmgr.c.

3385{
3386 TRACE("CM_Get_DevNode_Registry_PropertyW(%lx %lu %p %p %p %lx)\n",
3387 dnDevInst, ulProperty, pulRegDataType, Buffer, pulLength, ulFlags);
3388
3389 return CM_Get_DevNode_Registry_Property_ExW(dnDevInst, ulProperty,
3390 pulRegDataType, Buffer,
3391 pulLength, ulFlags, NULL);
3392}

Referenced by GetDeviceDisplayInfo(), and CDeviceNode::SetupNode().

◆ CM_Get_DevNode_Status()

CONFIGRET WINAPI CM_Get_DevNode_Status ( _Out_ PULONG  pulStatus,
_Out_ PULONG  pulProblemNumber,
_In_ DEVINST  dnDevInst,
_In_ ULONG  ulFlags 
)

Definition at line 3572 of file cfgmgr.c.

3577{
3578 TRACE("CM_Get_DevNode_Status(%p %p %lx %lx)\n",
3579 pulStatus, pulProblemNumber, dnDevInst, ulFlags);
3580
3581 return CM_Get_DevNode_Status_Ex(pulStatus, pulProblemNumber, dnDevInst,
3582 ulFlags, NULL);
3583}
CONFIGRET WINAPI CM_Get_DevNode_Status_Ex(_Out_ PULONG pulStatus, _Out_ PULONG pulProblemNumber, _In_ DEVINST dnDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:3591

Referenced by EnumHotpluggedDevices(), and StorageCoInstaller().

◆ CM_Get_DevNode_Status_Ex()

CONFIGRET WINAPI CM_Get_DevNode_Status_Ex ( _Out_ PULONG  pulStatus,
_Out_ PULONG  pulProblemNumber,
_In_ DEVINST  dnDevInst,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 3591 of file cfgmgr.c.

3597{
3599 HSTRING_TABLE StringTable = NULL;
3600 LPWSTR lpDevInst;
3601 CONFIGRET ret;
3602
3603 TRACE("CM_Get_DevNode_Status_Ex(%p %p %lx %lx %p)\n",
3604 pulStatus, pulProblemNumber, dnDevInst, ulFlags, hMachine);
3605
3606 if (pulStatus == NULL || pulProblemNumber == NULL)
3607 return CR_INVALID_POINTER;
3608
3609 if (dnDevInst == 0)
3610 return CR_INVALID_DEVINST;
3611
3612 if (ulFlags != 0)
3613 return CR_INVALID_FLAG;
3614
3615 if (hMachine != NULL)
3616 {
3617 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
3618 if (BindingHandle == NULL)
3619 return CR_FAILURE;
3620
3621 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
3622 if (StringTable == 0)
3623 return CR_FAILURE;
3624 }
3625 else
3626 {
3627 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
3628 return CR_FAILURE;
3629 }
3630
3631 lpDevInst = pSetupStringTableStringFromId(StringTable, dnDevInst);
3632 if (lpDevInst == NULL)
3633 return CR_INVALID_DEVNODE;
3634
3636 {
3638 lpDevInst,
3639 pulStatus,
3640 pulProblemNumber,
3641 ulFlags);
3642 }
3644 {
3646 }
3648
3649 return ret;
3650}
DWORD WINAPI PNP_GetDeviceStatus(handle_t hBinding, LPWSTR pDeviceID, DWORD *pulStatus, DWORD *pulProblem, DWORD ulFlags)
Definition: rpcserver.c:3411

Referenced by CDeviceNode::CanDisable(), CanDisableDevice(), CDeviceNode::CanUninstall(), CM_Get_DevNode_Status(), DisplayDevNodeFlags(), GetDeviceStatusString(), CDeviceNode::HasProblem(), InitProbeListPage(), IsDeviceHidden(), IsDeviceStarted(), CDeviceNode::IsDisabled(), IsDriverInstalled(), CDeviceNode::IsHidden(), CDeviceNode::IsInstalled(), CDeviceNode::IsStarted(), ShowDeviceProblemWizard(), UpdateDevInfo(), and UpdateDriverDlg().

◆ CM_Get_First_Log_Conf()

CONFIGRET WINAPI CM_Get_First_Log_Conf ( _Out_opt_ PLOG_CONF  plcLogConf,
_In_ DEVINST  dnDevInst,
_In_ ULONG  ulFlags 
)

Definition at line 4572 of file cfgmgr.c.

4576{
4577 TRACE("CM_Get_First_Log_Conf(%p %lx %lx)\n",
4578 plcLogConf, dnDevInst, ulFlags);
4579
4580 return CM_Get_First_Log_Conf_Ex(plcLogConf, dnDevInst, ulFlags, NULL);
4581}
CONFIGRET WINAPI CM_Get_First_Log_Conf_Ex(_Out_opt_ PLOG_CONF plcLogConf, _In_ DEVINST dnDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:4589

◆ CM_Get_First_Log_Conf_Ex()

CONFIGRET WINAPI CM_Get_First_Log_Conf_Ex ( _Out_opt_ PLOG_CONF  plcLogConf,
_In_ DEVINST  dnDevInst,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 4589 of file cfgmgr.c.

4594{
4596 HSTRING_TABLE StringTable = NULL;
4597 LPWSTR lpDevInst = NULL;
4599 ULONG ulTag;
4600 PLOG_CONF_INFO pLogConfInfo;
4601
4602 FIXME("CM_Get_First_Log_Conf_Ex(%p %lx %lx %p)\n",
4603 plcLogConf, dnDevInst, ulFlags, hMachine);
4604
4605 if (dnDevInst == 0)
4606 return CR_INVALID_DEVINST;
4607
4608 if (ulFlags & ~LOG_CONF_BITS)
4609 return CR_INVALID_FLAG;
4610
4611 if (plcLogConf)
4612 *plcLogConf = 0;
4613
4614 if (hMachine != NULL)
4615 {
4616 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
4617 if (BindingHandle == NULL)
4618 return CR_FAILURE;
4619
4620 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
4621 if (StringTable == 0)
4622 return CR_FAILURE;
4623 }
4624 else
4625 {
4626 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
4627 return CR_FAILURE;
4628 }
4629
4630 lpDevInst = pSetupStringTableStringFromId(StringTable, dnDevInst);
4631 if (lpDevInst == NULL)
4632 return CR_INVALID_DEVNODE;
4633
4635 {
4637 lpDevInst,
4638 ulFlags,
4639 &ulTag,
4640 ulFlags);
4641 }
4643 {
4645 }
4647
4648 if (ret != CR_SUCCESS)
4649 return ret;
4650
4651 if (plcLogConf)
4652 {
4653 pLogConfInfo = HeapAlloc(GetProcessHeap(), 0, sizeof(LOG_CONF_INFO));
4654 if (pLogConfInfo == NULL)
4655 return CR_OUT_OF_MEMORY;
4656
4657 pLogConfInfo->ulMagic = LOG_CONF_MAGIC;
4658 pLogConfInfo->dnDevInst = dnDevInst;
4659 pLogConfInfo->ulType = ulFlags;
4660 pLogConfInfo->ulTag = ulTag;
4661
4662 *plcLogConf = (LOG_CONF)pLogConfInfo;
4663 }
4664
4665 return CR_SUCCESS;
4666}
DWORD WINAPI PNP_GetFirstLogConf(handle_t hBinding, LPWSTR pDeviceID, DWORD ulLogConfType, DWORD *pulLogConfTag, DWORD ulFlags)
Definition: rpcserver.c:4191
_In_ ULONG _In_ ULONG ulTag
Definition: winddi.h:3942

Referenced by CM_Get_First_Log_Conf().

◆ CM_Get_Global_State()

CONFIGRET WINAPI CM_Get_Global_State ( _Out_ PULONG  pulState,
_In_ ULONG  ulFlags 
)

Definition at line 4674 of file cfgmgr.c.

4677{
4678 TRACE("CM_Get_Global_State(%p %lx)\n",
4679 pulState, ulFlags);
4680
4681 return CM_Get_Global_State_Ex(pulState, ulFlags, NULL);
4682}
CONFIGRET WINAPI CM_Get_Global_State_Ex(_Out_ PULONG pulState, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:4690

◆ CM_Get_Global_State_Ex()

CONFIGRET WINAPI CM_Get_Global_State_Ex ( _Out_ PULONG  pulState,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 4690 of file cfgmgr.c.

4694{
4696 CONFIGRET ret;
4697
4698 TRACE("CM_Get_Global_State_Ex(%p %lx %p)\n",
4699 pulState, ulFlags, hMachine);
4700
4701 if (pulState == NULL)
4702 return CR_INVALID_POINTER;
4703
4704 if (ulFlags != 0)
4705 return CR_INVALID_FLAG;
4706
4707 if (hMachine != NULL)
4708 {
4709 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
4710 if (BindingHandle == NULL)
4711 return CR_FAILURE;
4712 }
4713 else
4714 {
4716 return CR_FAILURE;
4717 }
4718
4720 {
4721 ret = PNP_GetGlobalState(BindingHandle, pulState, ulFlags);
4722 }
4724 {
4726 }
4728
4729 return ret;
4730}
DWORD WINAPI PNP_GetGlobalState(handle_t hBinding, DWORD *pulState, DWORD ulFlags)
Definition: rpcserver.c:675

Referenced by CM_Get_Global_State().

◆ CM_Get_Hardware_Profile_Info_ExA()

CONFIGRET WINAPI CM_Get_Hardware_Profile_Info_ExA ( _In_ ULONG  ulIndex,
_Out_ PHWPROFILEINFO_A  pHWProfileInfo,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 4899 of file cfgmgr.c.

4904{
4905 HWPROFILEINFO_W LocalProfileInfo;
4906 CONFIGRET ret;
4907
4908 TRACE("CM_Get_Hardware_Profile_Info_ExA(%lu %p %lx %p)\n",
4909 ulIndex, pHWProfileInfo, ulFlags, hMachine);
4910
4911 if (pHWProfileInfo == NULL)
4912 return CR_INVALID_POINTER;
4913
4914 ret = CM_Get_Hardware_Profile_Info_ExW(ulIndex, &LocalProfileInfo,
4915 ulFlags, hMachine);
4916 if (ret == CR_SUCCESS)
4917 {
4918 pHWProfileInfo->HWPI_ulHWProfile = LocalProfileInfo.HWPI_ulHWProfile;
4919 pHWProfileInfo->HWPI_dwFlags = LocalProfileInfo.HWPI_dwFlags;
4920
4922 0,
4923 LocalProfileInfo.HWPI_szFriendlyName,
4924 lstrlenW(LocalProfileInfo.HWPI_szFriendlyName) + 1,
4925 pHWProfileInfo->HWPI_szFriendlyName,
4927 NULL,
4928 NULL) == 0)
4929 ret = CR_FAILURE;
4930 }
4931
4932 return ret;
4933}
#define MAX_PROFILE_LEN
Definition: cfgmgr32.h:54
CONFIGRET WINAPI CM_Get_Hardware_Profile_Info_ExW(_In_ ULONG ulIndex, _Out_ PHWPROFILEINFO_W pHWProfileInfo, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:4941
ULONG HWPI_ulHWProfile
Definition: cfgmgr32.h:560
DWORD HWPI_dwFlags
Definition: cfgmgr32.h:562
WCHAR HWPI_szFriendlyName[MAX_PROFILE_LEN]
Definition: cfgmgr32.h:561

Referenced by CM_Get_Hardware_Profile_InfoA().

◆ CM_Get_Hardware_Profile_Info_ExW()

CONFIGRET WINAPI CM_Get_Hardware_Profile_Info_ExW ( _In_ ULONG  ulIndex,
_Out_ PHWPROFILEINFO_W  pHWProfileInfo,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 4941 of file cfgmgr.c.

4946{
4948 CONFIGRET ret;
4949
4950 TRACE("CM_Get_Hardware_Profile_Info_ExW(%lu %p %lx %p)\n",
4951 ulIndex, pHWProfileInfo, ulFlags, hMachine);
4952
4953 if (pHWProfileInfo == NULL)
4954 return CR_INVALID_POINTER;
4955
4956 if (ulFlags != 0)
4957 return CR_INVALID_FLAG;
4958
4959 if (hMachine != NULL)
4960 {
4961 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
4962 if (BindingHandle == NULL)
4963 return CR_FAILURE;
4964 }
4965 else
4966 {
4968 return CR_FAILURE;
4969 }
4970
4972 {
4973 ret = PNP_GetHwProfInfo(BindingHandle, ulIndex, pHWProfileInfo,
4974 sizeof(HWPROFILEINFO_W), 0);
4975 }
4977 {
4979 }
4981
4982 return ret;
4983}
DWORD WINAPI PNP_GetHwProfInfo(handle_t hBinding, DWORD ulIndex, HWPROFILEINFO *pHWProfileInfo, DWORD ulProfileInfoSize, DWORD ulFlags)
Definition: rpcserver.c:4026

Referenced by CM_Get_Hardware_Profile_Info_ExA(), and CM_Get_Hardware_Profile_InfoW().

◆ CM_Get_Hardware_Profile_InfoA()

CONFIGRET WINAPI CM_Get_Hardware_Profile_InfoA ( _In_ ULONG  ulIndex,
_Out_ PHWPROFILEINFO_A  pHWProfileInfo,
_In_ ULONG  ulFlags 
)

Definition at line 4863 of file cfgmgr.c.

4867{
4868 TRACE("CM_Get_Hardware_Profile_InfoA(%lu %p %lx)\n",
4869 ulIndex, pHWProfileInfo, ulFlags);
4870
4871 return CM_Get_Hardware_Profile_Info_ExA(ulIndex, pHWProfileInfo,
4872 ulFlags, NULL);
4873}
CONFIGRET WINAPI CM_Get_Hardware_Profile_Info_ExA(_In_ ULONG ulIndex, _Out_ PHWPROFILEINFO_A pHWProfileInfo, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:4899

◆ CM_Get_Hardware_Profile_InfoW()

CONFIGRET WINAPI CM_Get_Hardware_Profile_InfoW ( _In_ ULONG  ulIndex,
_Out_ PHWPROFILEINFO_W  pHWProfileInfo,
_In_ ULONG  ulFlags 
)

Definition at line 4881 of file cfgmgr.c.

4885{
4886 TRACE("CM_Get_Hardware_Profile_InfoW(%lu %p %lx)\n",
4887 ulIndex, pHWProfileInfo, ulFlags);
4888
4889 return CM_Get_Hardware_Profile_Info_ExW(ulIndex, pHWProfileInfo,
4890 ulFlags, NULL);
4891}

◆ CM_Get_HW_Prof_Flags_ExA()

CONFIGRET WINAPI CM_Get_HW_Prof_Flags_ExA ( _In_ DEVINSTID_A  szDevInstName,
_In_ ULONG  ulHardwareProfile,
_Out_ PULONG  pulValue,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 4776 of file cfgmgr.c.

4782{
4783 DEVINSTID_W pszDevIdW = NULL;
4785
4786 TRACE("CM_Get_HW_Prof_Flags_ExA(%s %lu %p %lx %p)\n",
4787 debugstr_a(szDevInstName), ulHardwareProfile, pulValue, ulFlags, hMachine);
4788
4789 if (szDevInstName != NULL)
4790 {
4791 if (pSetupCaptureAndConvertAnsiArg(szDevInstName, &pszDevIdW))
4792 return CR_INVALID_DEVICE_ID;
4793 }
4794
4795 ret = CM_Get_HW_Prof_Flags_ExW(pszDevIdW, ulHardwareProfile,
4796 pulValue, ulFlags, hMachine);
4797
4798 if (pszDevIdW != NULL)
4799 MyFree(pszDevIdW);
4800
4801 return ret;
4802}
CONFIGRET WINAPI CM_Get_HW_Prof_Flags_ExW(_In_ DEVINSTID_W szDevInstName, _In_ ULONG ulHardwareProfile, _Out_ PULONG pulValue, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:4810

Referenced by CM_Get_HW_Prof_FlagsA().

◆ CM_Get_HW_Prof_Flags_ExW()

CONFIGRET WINAPI CM_Get_HW_Prof_Flags_ExW ( _In_ DEVINSTID_W  szDevInstName,
_In_ ULONG  ulHardwareProfile,
_Out_ PULONG  pulValue,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 4810 of file cfgmgr.c.

4816{
4818 CONFIGRET ret;
4819
4820 FIXME("CM_Get_HW_Prof_Flags_ExW(%s %lu %p %lx %p)\n",
4821 debugstr_w(szDevInstName), ulHardwareProfile, pulValue, ulFlags, hMachine);
4822
4823 if ((szDevInstName == NULL) || (pulValue == NULL))
4824 return CR_INVALID_POINTER;
4825
4826 if (ulFlags != 0)
4827 return CR_INVALID_FLAG;
4828
4829 /* FIXME: Check whether szDevInstName is valid */
4830
4831 if (hMachine != NULL)
4832 {
4833 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
4834 if (BindingHandle == NULL)
4835 return CR_FAILURE;
4836 }
4837 else
4838 {
4840 return CR_FAILURE;
4841 }
4842
4844 {
4845 ret = PNP_HwProfFlags(BindingHandle, PNP_GET_HWPROFFLAGS, szDevInstName,
4846 ulHardwareProfile, pulValue, NULL, NULL, 0, 0);
4847 }
4849 {
4851 }
4853
4854 return ret;
4855}
DWORD WINAPI PNP_HwProfFlags(handle_t hBinding, DWORD ulAction, LPWSTR pDeviceID, DWORD ulConfig, DWORD *pulValue, PPNP_VETO_TYPE pVetoType, LPWSTR pszVetoName, DWORD ulNameLength, DWORD ulFlags)
Definition: rpcserver.c:3942

Referenced by CM_Get_HW_Prof_Flags_ExA(), and CM_Get_HW_Prof_FlagsW().

◆ CM_Get_HW_Prof_FlagsA()

CONFIGRET WINAPI CM_Get_HW_Prof_FlagsA ( _In_ DEVINSTID_A  szDevInstName,
_In_ ULONG  ulHardwareProfile,
_Out_ PULONG  pulValue,
_In_ ULONG  ulFlags 
)

Definition at line 4738 of file cfgmgr.c.

4743{
4744 TRACE("CM_Get_HW_Prof_FlagsA(%s %lu %p %lx)\n",
4745 debugstr_a(szDevInstName), ulHardwareProfile, pulValue, ulFlags);
4746
4747 return CM_Get_HW_Prof_Flags_ExA(szDevInstName, ulHardwareProfile,
4748 pulValue, ulFlags, NULL);
4749}
CONFIGRET WINAPI CM_Get_HW_Prof_Flags_ExA(_In_ DEVINSTID_A szDevInstName, _In_ ULONG ulHardwareProfile, _Out_ PULONG pulValue, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:4776

◆ CM_Get_HW_Prof_FlagsW()

CONFIGRET WINAPI CM_Get_HW_Prof_FlagsW ( _In_ DEVINSTID_W  szDevInstName,
_In_ ULONG  ulHardwareProfile,
_Out_ PULONG  pulValue,
_In_ ULONG  ulFlags 
)

Definition at line 4757 of file cfgmgr.c.

4762{
4763 TRACE("CM_Get_HW_Prof_FlagsW(%s %lu %p %lx)\n",
4764 debugstr_w(szDevInstName), ulHardwareProfile, pulValue, ulFlags);
4765
4766 return CM_Get_HW_Prof_Flags_ExW(szDevInstName, ulHardwareProfile,
4767 pulValue, ulFlags, NULL);
4768}

◆ CM_Get_Log_Conf_Priority()

CONFIGRET WINAPI CM_Get_Log_Conf_Priority ( _In_ LOG_CONF  lcLogConf,
_Out_ PPRIORITY  pPriority,
_In_ ULONG  ulFlags 
)

Definition at line 4991 of file cfgmgr.c.

4995{
4996 TRACE("CM_Get_Log_Conf_Priority(%p %p %lx)\n",
4997 lcLogConf, pPriority, ulFlags);
4998
4999 return CM_Get_Log_Conf_Priority_Ex(lcLogConf, pPriority, ulFlags, NULL);
5000}
CONFIGRET WINAPI CM_Get_Log_Conf_Priority_Ex(_In_ LOG_CONF lcLogConf, _Out_ PPRIORITY pPriority, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:5008

◆ CM_Get_Log_Conf_Priority_Ex()

CONFIGRET WINAPI CM_Get_Log_Conf_Priority_Ex ( _In_ LOG_CONF  lcLogConf,
_Out_ PPRIORITY  pPriority,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 5008 of file cfgmgr.c.

5013{
5015 HSTRING_TABLE StringTable = NULL;
5016 PLOG_CONF_INFO pLogConfInfo;
5017 LPWSTR lpDevInst;
5018 CONFIGRET ret;
5019
5020 FIXME("CM_Get_Log_Conf_Priority_Ex(%p %p %lx %p)\n",
5021 lcLogConf, pPriority, ulFlags, hMachine);
5022
5023 pLogConfInfo = (PLOG_CONF_INFO)lcLogConf;
5024 if (!IsValidLogConf(pLogConfInfo))
5025 return CR_INVALID_LOG_CONF;
5026
5027 if (pPriority == NULL)
5028 return CR_INVALID_POINTER;
5029
5030 if (ulFlags != 0)
5031 return CR_INVALID_FLAG;
5032
5033 if (hMachine != NULL)
5034 {
5035 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
5036 if (BindingHandle == NULL)
5037 return CR_FAILURE;
5038
5039 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
5040 if (StringTable == 0)
5041 return CR_FAILURE;
5042 }
5043 else
5044 {
5045 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
5046 return CR_FAILURE;
5047 }
5048
5049 lpDevInst = pSetupStringTableStringFromId(StringTable, pLogConfInfo->dnDevInst);
5050 if (lpDevInst == NULL)
5051 return CR_INVALID_DEVNODE;
5052
5054 {
5056 lpDevInst,
5057 pLogConfInfo->ulType,
5058 pLogConfInfo->ulTag,
5059 pPriority,
5060 0);
5061 }
5063 {
5065 }
5067
5068 return ret;
5069}
DWORD WINAPI PNP_GetLogConfPriority(handle_t hBinding, LPWSTR pDeviceID, DWORD ulType, DWORD ulTag, DWORD *pPriority, DWORD ulFlags)
Definition: rpcserver.c:4390

Referenced by CM_Get_Log_Conf_Priority().

◆ CM_Get_Next_Log_Conf()

CONFIGRET WINAPI CM_Get_Next_Log_Conf ( _Out_opt_ PLOG_CONF  plcLogConf,
_In_ LOG_CONF  lcLogConf,
_In_ ULONG  ulFlags 
)

Definition at line 5077 of file cfgmgr.c.

5081{
5082 TRACE("CM_Get_Next_Log_Conf(%p %p %lx)\n",
5083 plcLogConf, lcLogConf, ulFlags);
5084
5085 return CM_Get_Next_Log_Conf_Ex(plcLogConf, lcLogConf, ulFlags, NULL);
5086}
CONFIGRET WINAPI CM_Get_Next_Log_Conf_Ex(_Out_opt_ PLOG_CONF plcLogConf, _In_ LOG_CONF lcLogConf, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:5094

◆ CM_Get_Next_Log_Conf_Ex()

CONFIGRET WINAPI CM_Get_Next_Log_Conf_Ex ( _Out_opt_ PLOG_CONF  plcLogConf,
_In_ LOG_CONF  lcLogConf,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 5094 of file cfgmgr.c.

5099{
5101 HSTRING_TABLE StringTable = NULL;
5102 PLOG_CONF_INFO pLogConfInfo;
5103 PLOG_CONF_INFO pNewLogConfInfo;
5104 ULONG ulNewTag;
5105 LPWSTR lpDevInst;
5106 CONFIGRET ret;
5107
5108 FIXME("CM_Get_Next_Log_Conf_Ex(%p %p %lx %p)\n",
5109 plcLogConf, lcLogConf, ulFlags, hMachine);
5110
5111 if (plcLogConf)
5112 *plcLogConf = 0;
5113
5114 pLogConfInfo = (PLOG_CONF_INFO)lcLogConf;
5115 if (!IsValidLogConf(pLogConfInfo))
5116 return CR_INVALID_LOG_CONF;
5117
5118 if (ulFlags != 0)
5119 return CR_INVALID_FLAG;
5120
5121 if (hMachine != NULL)
5122 {
5123 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
5124 if (BindingHandle == NULL)
5125 return CR_FAILURE;
5126
5127 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
5128 if (StringTable == 0)
5129 return CR_FAILURE;
5130 }
5131 else
5132 {
5133 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
5134 return CR_FAILURE;
5135 }
5136
5137 lpDevInst = pSetupStringTableStringFromId(StringTable, pLogConfInfo->dnDevInst);
5138 if (lpDevInst == NULL)
5139 return CR_INVALID_DEVNODE;
5140
5142 {
5144 lpDevInst,
5145 pLogConfInfo->ulType,
5146 pLogConfInfo->ulTag,
5147 &ulNewTag,
5148 0);
5149 }
5151 {
5153 }
5155
5156 if (ret != CR_SUCCESS)
5157 return ret;
5158
5159 if (plcLogConf)
5160 {
5161 pNewLogConfInfo = HeapAlloc(GetProcessHeap(), 0, sizeof(LOG_CONF_INFO));
5162 if (pNewLogConfInfo == NULL)
5163 return CR_OUT_OF_MEMORY;
5164
5165 pNewLogConfInfo->ulMagic = LOG_CONF_MAGIC;
5166 pNewLogConfInfo->dnDevInst = pLogConfInfo->dnDevInst;
5167 pNewLogConfInfo->ulType = pLogConfInfo->ulType;
5168 pNewLogConfInfo->ulTag = ulNewTag;
5169
5170 *plcLogConf = (LOG_CONF)pNewLogConfInfo;
5171 }
5172
5173 return CR_SUCCESS;
5174}
DWORD WINAPI PNP_GetNextLogConf(handle_t hBinding, LPWSTR pDeviceID, DWORD ulLogConfType, DWORD ulCurrentTag, DWORD *pulNextTag, DWORD ulFlags)
Definition: rpcserver.c:4285

Referenced by CM_Get_Next_Log_Conf().

◆ CM_Get_Next_Res_Des()

CONFIGRET WINAPI CM_Get_Next_Res_Des ( _Out_ PRES_DES  prdResDes,
_In_ RES_DES  rdResDes,
_In_ RESOURCEID  ForResource,
_Out_opt_ PRESOURCEID  pResourceID,
_In_ ULONG  ulFlags 
)

Definition at line 5182 of file cfgmgr.c.

5188{
5189 TRACE("CM_Get_Next_Res_Des(%p %p %lu %p %lx)\n",
5190 prdResDes, rdResDes, ForResource, pResourceID, ulFlags);
5191
5192 return CM_Get_Next_Res_Des_Ex(prdResDes, rdResDes, ForResource,
5193 pResourceID, ulFlags, NULL);
5194}
CONFIGRET WINAPI CM_Get_Next_Res_Des_Ex(_Out_ PRES_DES prdResDes, _In_ RES_DES rdResDes, _In_ RESOURCEID ForResource, _Out_opt_ PRESOURCEID pResourceID, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:5202

◆ CM_Get_Next_Res_Des_Ex()

CONFIGRET WINAPI CM_Get_Next_Res_Des_Ex ( _Out_ PRES_DES  prdResDes,
_In_ RES_DES  rdResDes,
_In_ RESOURCEID  ForResource,
_Out_opt_ PRESOURCEID  pResourceID,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 5202 of file cfgmgr.c.

5209{
5211 HSTRING_TABLE StringTable = NULL;
5212 ULONG ulInTag, ulOutTag = 0;
5213 ULONG ulInType, ulOutType = 0;
5214 LPWSTR lpDevInst;
5215 DEVINST dnDevInst;
5216 CONFIGRET ret;
5217
5218 FIXME("CM_Get_Next_Res_Des_Ex(%p %p %lu %p %lx %p)\n",
5219 prdResDes, rdResDes, ForResource, pResourceID, ulFlags, hMachine);
5220
5221 if (prdResDes == NULL)
5222 return CR_INVALID_POINTER;
5223
5224 if (IsValidLogConf((PLOG_CONF_INFO)rdResDes))
5225 {
5226 FIXME("LogConf found!\n");
5227 dnDevInst = ((PLOG_CONF_INFO)rdResDes)->dnDevInst;
5228 ulInTag = ((PLOG_CONF_INFO)rdResDes)->ulTag;
5229 ulInType = ((PLOG_CONF_INFO)rdResDes)->ulType;
5230 }
5231#if 0
5232 else if (IsValidResDes((PRES_DES_INFO)rdResDes))
5233 {
5234 FIXME("ResDes found!\n");
5235 dnDevInst = ((PRES_DES_INFO)rdResDes)->dnDevInst;
5236 ulInTag = ((PRES_DES_INFO)rdResDes)->ulTag;
5237 ulInType = ((PRES_DES_INFO)rdResDes)->ulType;
5238 }
5239#endif
5240 else
5241 {
5242 return CR_INVALID_RES_DES;
5243 }
5244
5245 if (hMachine != NULL)
5246 {
5247 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
5248 if (BindingHandle == NULL)
5249 return CR_FAILURE;
5250
5251 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
5252 if (StringTable == 0)
5253 return CR_FAILURE;
5254 }
5255 else
5256 {
5257 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
5258 return CR_FAILURE;
5259 }
5260
5261 lpDevInst = pSetupStringTableStringFromId(StringTable, dnDevInst);
5262 if (lpDevInst == NULL)
5263 return CR_INVALID_DEVNODE;
5264
5266 {
5268 lpDevInst,
5269 ulInTag,
5270 ulInType,
5271 ForResource,
5272 0, /* unsigned long ulResourceTag, */
5273 &ulOutTag,
5274 &ulOutType,
5275 0);
5276 }
5278 {
5280 }
5282
5283 if (ret != CR_SUCCESS)
5284 return ret;
5285
5286 /* FIXME: Create the ResDes handle */
5287
5288 return CR_SUCCESS;
5289}
DWORD WINAPI PNP_GetNextResDes(handle_t hBinding, LPWSTR pDeviceID, DWORD ulLogConfTag, DWORD ulLogConfType, RESOURCEID ResourceID, DWORD ulResourceTag, DWORD *pulNextResType, DWORD *pulNextResTag, DWORD ulFlags)
Definition: rpcserver.c:4444
#define CR_INVALID_RES_DES
Definition: cfgmgr32.h:849
DWORD DEVINST
Definition: cfgmgr32.h:76

Referenced by CM_Get_Next_Res_Des().

◆ CM_Get_Parent()

CONFIGRET WINAPI CM_Get_Parent ( _Out_ PDEVINST  pdnDevInst,
_In_ DEVINST  dnDevInst,
_In_ ULONG  ulFlags 
)

Definition at line 5297 of file cfgmgr.c.

5301{
5302 TRACE("CM_Get_Parent(%p %p %lx)\n",
5303 pdnDevInst, dnDevInst, ulFlags);
5304
5305 return CM_Get_Parent_Ex(pdnDevInst, dnDevInst, ulFlags, NULL);
5306}
CONFIGRET WINAPI CM_Get_Parent_Ex(_Out_ PDEVINST pdnDevInst, _In_ DEVINST dnDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:5314

◆ CM_Get_Parent_Ex()

CONFIGRET WINAPI CM_Get_Parent_Ex ( _Out_ PDEVINST  pdnDevInst,
_In_ DEVINST  dnDevInst,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 5314 of file cfgmgr.c.

5319{
5320 WCHAR szRelatedDevInst[MAX_DEVICE_ID_LEN];
5322 HSTRING_TABLE StringTable = NULL;
5323 LPWSTR lpDevInst;
5324 DWORD dwIndex, dwLength = MAX_DEVICE_ID_LEN;
5325 CONFIGRET ret;
5326
5327 TRACE("CM_Get_Parent_Ex(%p %lx %lx %p)\n",
5328 pdnDevInst, dnDevInst, ulFlags, hMachine);
5329
5330 if (pdnDevInst == NULL)
5331 return CR_INVALID_POINTER;
5332
5333 if (dnDevInst == 0)
5334 return CR_INVALID_DEVINST;
5335
5336 if (ulFlags != 0)
5337 return CR_INVALID_FLAG;
5338
5339 *pdnDevInst = -1;
5340
5341 if (hMachine != NULL)
5342 {
5343 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
5344 if (BindingHandle == NULL)
5345 return CR_FAILURE;
5346
5347 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
5348 if (StringTable == 0)
5349 return CR_FAILURE;
5350 }
5351 else
5352 {
5353 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
5354 return CR_FAILURE;
5355 }
5356
5357 lpDevInst = pSetupStringTableStringFromId(StringTable, dnDevInst);
5358 if (lpDevInst == NULL)
5359 return CR_INVALID_DEVNODE;
5360
5362 {
5364 PNP_GET_PARENT_DEVICE_INSTANCE,
5365 lpDevInst,
5366 szRelatedDevInst,
5367 &dwLength,
5368 0);
5369 }
5371 {
5373 }
5375
5376 if (ret != CR_SUCCESS)
5377 return ret;
5378
5379 TRACE("szRelatedDevInst: %s\n", debugstr_w(szRelatedDevInst));
5380
5381 dwIndex = pSetupStringTableAddString(StringTable, szRelatedDevInst, 1);
5382 if (dwIndex == -1)
5383 return CR_FAILURE;
5384
5385 *pdnDevInst = dwIndex;
5386
5387 return CR_SUCCESS;
5388}

Referenced by CM_Get_Parent(), SetupDiRegisterDeviceInfo(), and UpdateDevInfo().

◆ CM_Get_Res_Des_Data()

CONFIGRET WINAPI CM_Get_Res_Des_Data ( _In_ RES_DES  rdResDes,
_Out_writes_bytes_(BufferLen) PVOID  Buffer,
_In_ ULONG  BufferLen,
_In_ ULONG  ulFlags 
)

Definition at line 5396 of file cfgmgr.c.

5401{
5402 TRACE("CM_Get_Res_Des_Data(%p %p %lu %lx)\n",
5403 rdResDes, Buffer, BufferLen, ulFlags);
5404
5405 return CM_Get_Res_Des_Data_Ex(rdResDes, Buffer, BufferLen, ulFlags, NULL);
5406}
CONFIGRET WINAPI CM_Get_Res_Des_Data_Ex(_In_ RES_DES rdResDes, _Out_writes_bytes_(BufferLen) PVOID Buffer, _In_ ULONG BufferLen, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:5414

◆ CM_Get_Res_Des_Data_Ex()

CONFIGRET WINAPI CM_Get_Res_Des_Data_Ex ( _In_ RES_DES  rdResDes,
_Out_writes_bytes_(BufferLen) PVOID  Buffer,
_In_ ULONG  BufferLen,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 5414 of file cfgmgr.c.

5420{
5421 FIXME("CM_Get_Res_Des_Data_Ex(%p %p %lu %lx %p)\n",
5422 rdResDes, Buffer, BufferLen, ulFlags, hMachine);
5423
5425}

Referenced by CM_Get_Res_Des_Data().

◆ CM_Get_Res_Des_Data_Size()

CONFIGRET WINAPI CM_Get_Res_Des_Data_Size ( _Out_ PULONG  pulSize,
_In_ RES_DES  rdResDes,
_In_ ULONG  ulFlags 
)

Definition at line 5433 of file cfgmgr.c.

5437{
5438 TRACE("CM_Get_Res_Des_Data_Size(%p %p %lx)\n",
5439 pulSize, rdResDes, ulFlags);
5440
5441 return CM_Get_Res_Des_Data_Size_Ex(pulSize, rdResDes, ulFlags, NULL);
5442}
CONFIGRET WINAPI CM_Get_Res_Des_Data_Size_Ex(_Out_ PULONG pulSize, _In_ RES_DES rdResDes, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:5450
_Check_return_ _Out_ PULONG pulSize
Definition: winddi.h:2120

◆ CM_Get_Res_Des_Data_Size_Ex()

CONFIGRET WINAPI CM_Get_Res_Des_Data_Size_Ex ( _Out_ PULONG  pulSize,
_In_ RES_DES  rdResDes,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 5450 of file cfgmgr.c.

5455{
5456 TRACE("CM_Get_Res_Des_Data_Size_Ex(%p %p %lx %p)\n",
5457 pulSize, rdResDes, ulFlags, hMachine);
5458
5460}

Referenced by CM_Get_Res_Des_Data_Size().

◆ CM_Get_Resource_Conflict_Count()

CONFIGRET WINAPI CM_Get_Resource_Conflict_Count ( _In_ CONFLICT_LIST  clConflictList,
_Out_ PULONG  pulCount 
)

Definition at line 5468 of file cfgmgr.c.

5471{
5472 PCONFLICT_DATA pConflictData;
5473
5474 FIXME("CM_Get_Resource_Conflict_Count(%p %p)\n",
5475 clConflictList, pulCount);
5476
5477 pConflictData = (PCONFLICT_DATA)clConflictList;
5478 if (!IsValidConflictData(pConflictData))
5480
5481 if (pulCount == NULL)
5482 return CR_INVALID_POINTER;
5483
5484 *pulCount = pConflictData->pConflictList->ConflictsListed;
5485
5486 return CR_SUCCESS;
5487}
DWORD ConflictsListed
Definition: pnp.idl:240

◆ CM_Get_Resource_Conflict_DetailsA()

CONFIGRET WINAPI CM_Get_Resource_Conflict_DetailsA ( _In_ CONFLICT_LIST  clConflictList,
_In_ ULONG  ulIndex,
_Inout_ PCONFLICT_DETAILS_A  pConflictDetails 
)

Definition at line 5495 of file cfgmgr.c.

5499{
5500 FIXME("CM_Get_Resource_Conflict_CountA(%p %lu %p)\n",
5501 clConflictList, ulIndex, pConflictDetails);
5502
5504}

◆ CM_Get_Resource_Conflict_DetailsW()

CONFIGRET WINAPI CM_Get_Resource_Conflict_DetailsW ( _In_ CONFLICT_LIST  clConflictList,
_In_ ULONG  ulIndex,
_Inout_ PCONFLICT_DETAILS_W  pConflictDetails 
)

Definition at line 5512 of file cfgmgr.c.

5516{
5517 FIXME("CM_Get_Resource_Conflict_CountW(%p %lu %p)\n",
5518 clConflictList, ulIndex, pConflictDetails);
5519
5521}

◆ CM_Get_Sibling()

CONFIGRET WINAPI CM_Get_Sibling ( _Out_ PDEVINST  pdnDevInst,
_In_ DEVINST  dnDevInst,
_In_ ULONG  ulFlags 
)

Definition at line 5529 of file cfgmgr.c.

5533{
5534 TRACE("CM_Get_Sibling(%p %p %lx)\n",
5535 pdnDevInst, dnDevInst, ulFlags);
5536
5537 return CM_Get_Sibling_Ex(pdnDevInst, dnDevInst, ulFlags, NULL);
5538}
CONFIGRET WINAPI CM_Get_Sibling_Ex(_Out_ PDEVINST pdnDevInst, _In_ DEVINST dnDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:5546

Referenced by CfmListRecursiveInsertSubDevices(), DevTreeRecursiveInsertSubDevices(), GetMonitorDevInstID(), and CDeviceView::GetSiblingDevice().

◆ CM_Get_Sibling_Ex()

CONFIGRET WINAPI CM_Get_Sibling_Ex ( _Out_ PDEVINST  pdnDevInst,
_In_ DEVINST  dnDevInst,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 5546 of file cfgmgr.c.

5551{
5552 WCHAR szRelatedDevInst[MAX_DEVICE_ID_LEN];
5554 HSTRING_TABLE StringTable = NULL;
5555 LPWSTR lpDevInst;
5556 DWORD dwIndex, dwLength = MAX_DEVICE_ID_LEN;
5557 CONFIGRET ret;
5558
5559 TRACE("CM_Get_Sibling_Ex(%p %lx %lx %p)\n",
5560 pdnDevInst, dnDevInst, ulFlags, hMachine);
5561
5562 if (pdnDevInst == NULL)
5563 return CR_INVALID_POINTER;
5564
5565 if (dnDevInst == 0)
5566 return CR_INVALID_DEVINST;
5567
5568 if (ulFlags != 0)
5569 return CR_INVALID_FLAG;
5570
5571 *pdnDevInst = -1;
5572
5573 if (hMachine != NULL)
5574 {
5575 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
5576 if (BindingHandle == NULL)
5577 return CR_FAILURE;
5578
5579 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
5580 if (StringTable == 0)
5581 return CR_FAILURE;
5582 }
5583 else
5584 {
5585 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
5586 return CR_FAILURE;
5587 }
5588
5589 lpDevInst = pSetupStringTableStringFromId(StringTable, dnDevInst);
5590 if (lpDevInst == NULL)
5591 return CR_INVALID_DEVNODE;
5592
5594 {
5596 PNP_GET_SIBLING_DEVICE_INSTANCE,
5597 lpDevInst,
5598 szRelatedDevInst,
5599 &dwLength,
5600 0);
5601 }
5603 {
5605 }
5607
5608 if (ret != CR_SUCCESS)
5609 return ret;
5610
5611 TRACE("szRelatedDevInst: %s\n", debugstr_w(szRelatedDevInst));
5612
5613 dwIndex = pSetupStringTableAddString(StringTable, szRelatedDevInst, 1);
5614 if (dwIndex == -1)
5615 return CR_FAILURE;
5616
5617 *pdnDevInst = dwIndex;
5618
5619 return CR_SUCCESS;
5620}

Referenced by CM_Get_Sibling().

◆ CM_Get_Version()

WORD WINAPI CM_Get_Version ( VOID  )

Definition at line 5628 of file cfgmgr.c.

5629{
5630 TRACE("CM_Get_Version()\n");
5631
5632 return CM_Get_Version_Ex(NULL);
5633}
WORD WINAPI CM_Get_Version_Ex(_In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:5641

Referenced by test_CM_Get_Version().

◆ CM_Get_Version_Ex()

WORD WINAPI CM_Get_Version_Ex ( _In_opt_ HMACHINE  hMachine)

Definition at line 5641 of file cfgmgr.c.

5643{
5645 WORD Version = 0;
5646 CONFIGRET ret;
5647
5648 TRACE("CM_Get_Version_Ex(%p)\n", hMachine);
5649
5650 if (hMachine != NULL)
5651 {
5652 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
5653 if (BindingHandle == NULL)
5654 return 0;
5655 }
5656 else
5657 {
5659 return CR_FAILURE;
5660 }
5661
5663 {
5665 }
5667 {
5669 }
5671
5672 if (ret != CR_SUCCESS)
5673 return 0;
5674
5675 return Version;
5676}
DWORD WINAPI PNP_GetVersion(handle_t hBinding, WORD *pVersion)
Definition: rpcserver.c:657
unsigned short WORD
Definition: ntddk_ex.h:93
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE _In_ USHORT _In_ USHORT Version
Definition: wdffdo.h:469

Referenced by CM_Get_Version().

◆ CM_Intersect_Range_List()

CONFIGRET WINAPI CM_Intersect_Range_List ( _In_ RANGE_LIST  rlhOld1,
_In_ RANGE_LIST  rlhOld2,
_In_ RANGE_LIST  rlhNew,
_In_ ULONG  ulFlags 
)

Definition at line 5684 of file cfgmgr.c.

5689{
5690 FIXME("CM_Intersect_Range_List(%p %p %p %lx)\n",
5691 rlhOld1, rlhOld2, rlhNew, ulFlags);
5692
5694}

◆ CM_Invert_Range_List()

CONFIGRET WINAPI CM_Invert_Range_List ( _In_ RANGE_LIST  rlhOld,
_In_ RANGE_LIST  rlhNew,
_In_ DWORDLONG  ullMaxValue,
_In_ ULONG  ulFlags 
)

Definition at line 5702 of file cfgmgr.c.

5707{
5708 FIXME("CM_Invert_Range_List(%p %p %I64u %lx)\n",
5709 rlhOld, rlhNew, ullMaxValue, ulFlags);
5710
5712}

◆ CM_Is_Dock_Station_Present()

CONFIGRET WINAPI CM_Is_Dock_Station_Present ( _Out_ PBOOL  pbPresent)

Definition at line 5720 of file cfgmgr.c.

5722{
5723 TRACE("CM_Is_Dock_Station_Present(%p)\n",
5724 pbPresent);
5725
5726 return CM_Is_Dock_Station_Present_Ex(pbPresent, NULL);
5727}
CONFIGRET WINAPI CM_Is_Dock_Station_Present_Ex(_Out_ PBOOL pbPresent, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:5735

◆ CM_Is_Dock_Station_Present_Ex()

CONFIGRET WINAPI CM_Is_Dock_Station_Present_Ex ( _Out_ PBOOL  pbPresent,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 5735 of file cfgmgr.c.

5738{
5740 CONFIGRET ret;
5741
5742 TRACE("CM_Is_Dock_Station_Present_Ex(%p %p)\n",
5743 pbPresent, hMachine);
5744
5745 if (pbPresent == NULL)
5746 return CR_INVALID_POINTER;
5747
5748 *pbPresent = FALSE;
5749
5750 if (hMachine != NULL)
5751 {
5752 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
5753 if (BindingHandle == NULL)
5754 return CR_FAILURE;
5755 }
5756 else
5757 {
5759 return CR_FAILURE;
5760 }
5761
5763 {
5765 pbPresent);
5766 }
5768 {
5770 }
5772
5773 return ret;
5774}
CONFIGRET WINAPI PNP_IsDockStationPresent(handle_t hBinding, BOOL *Present)
Definition: rpcserver.c:3854

Referenced by CM_Is_Dock_Station_Present().

◆ CM_Is_Version_Available()

BOOL WINAPI CM_Is_Version_Available ( _In_ WORD  wVersion)

Definition at line 5782 of file cfgmgr.c.

5784{
5785 TRACE("CM_Is_Version_Available(%hu)\n",
5786 wVersion);
5787
5788 return CM_Is_Version_Available_Ex(wVersion, NULL);
5789}
BOOL WINAPI CM_Is_Version_Available_Ex(_In_ WORD wVersion, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:5797

◆ CM_Is_Version_Available_Ex()

BOOL WINAPI CM_Is_Version_Available_Ex ( _In_ WORD  wVersion,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 5797 of file cfgmgr.c.

5800{
5802 WORD wServerVersion;
5803 CONFIGRET ret;
5804
5805 TRACE("CM_Is_Version_Available_Ex(%hu %p)\n",
5806 wVersion, hMachine);
5807
5808 if (wVersion <= 0x400)
5809 return TRUE;
5810
5811 if (hMachine != NULL)
5812 {
5813 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
5814 if (BindingHandle == NULL)
5815 return FALSE;
5816 }
5817 else
5818 {
5820 return FALSE;
5821 }
5822
5824 {
5825 ret = PNP_GetVersion(BindingHandle, &wServerVersion);
5826 }
5828 {
5830 }
5832
5833 if (ret != CR_SUCCESS)
5834 return FALSE;
5835
5836 return (wServerVersion >= wVersion);
5837}

Referenced by CM_Is_Version_Available().

◆ CM_Locate_DevNode_ExA()

CONFIGRET WINAPI CM_Locate_DevNode_ExA ( _Out_ PDEVINST  pdnDevInst,
_In_opt_ DEVINSTID_A  pDeviceID,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 5879 of file cfgmgr.c.

5884{
5885 DEVINSTID_W pDevIdW = NULL;
5887
5888 TRACE("CM_Locate_DevNode_ExA(%p %s %lx %p)\n",
5889 pdnDevInst, debugstr_a(pDeviceID), ulFlags, hMachine);
5890
5891 if (pDeviceID != NULL)
5892 {
5893 if (pSetupCaptureAndConvertAnsiArg(pDeviceID, &pDevIdW))
5894 return CR_INVALID_DEVICE_ID;
5895 }
5896
5897 ret = CM_Locate_DevNode_ExW(pdnDevInst, pDevIdW, ulFlags, hMachine);
5898
5899 if (pDevIdW != NULL)
5900 MyFree(pDevIdW);
5901
5902 return ret;
5903}
CONFIGRET WINAPI CM_Locate_DevNode_ExW(_Out_ PDEVINST pdnDevInst, _In_opt_ DEVINSTID_W pDeviceID, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:5911

Referenced by CM_Locate_DevNodeA().

◆ CM_Locate_DevNode_ExW()

CONFIGRET WINAPI CM_Locate_DevNode_ExW ( _Out_ PDEVINST  pdnDevInst,
_In_opt_ DEVINSTID_W  pDeviceID,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 5911 of file cfgmgr.c.

5916{
5917 WCHAR DeviceIdBuffer[MAX_DEVICE_ID_LEN];
5919 HSTRING_TABLE StringTable = NULL;
5921
5922 TRACE("CM_Locate_DevNode_ExW(%p %s %lx %p)\n",
5923 pdnDevInst, debugstr_w(pDeviceID), ulFlags, hMachine);
5924
5925 if (pdnDevInst == NULL)
5926 return CR_INVALID_POINTER;
5927
5928 if (ulFlags & ~CM_LOCATE_DEVNODE_BITS)
5929 return CR_INVALID_FLAG;
5930
5931 if (hMachine != NULL)
5932 {
5933 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
5934 if (BindingHandle == NULL)
5935 return CR_FAILURE;
5936
5937 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
5938 if (StringTable == 0)
5939 return CR_FAILURE;
5940 }
5941 else
5942 {
5943 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
5944 return CR_FAILURE;
5945 }
5946
5947 if (pDeviceID != NULL && lstrlenW(pDeviceID) != 0)
5948 {
5949 lstrcpyW(DeviceIdBuffer, pDeviceID);
5950
5952 {
5953 /* Validate the device ID */
5955 DeviceIdBuffer,
5956 ulFlags);
5957 }
5959 {
5961 }
5963 }
5964 else
5965 {
5967 {
5968 /* Get the root device ID */
5970 DeviceIdBuffer,
5972 }
5974 {
5976 }
5978 }
5979
5980 TRACE("DeviceIdBuffer: %s\n", debugstr_w(DeviceIdBuffer));
5981
5982 if (ret == CR_SUCCESS)
5983 {
5984 *pdnDevInst = pSetupStringTableAddString(StringTable, DeviceIdBuffer, 1);
5985 if (*pdnDevInst == -1)
5986 ret = CR_FAILURE;
5987 }
5988
5989 return ret;
5990}
DWORD WINAPI PNP_GetRootDeviceInstance(handle_t hBinding, LPWSTR pDeviceID, PNP_RPC_STRING_LEN ulLength)
Definition: rpcserver.c:810
DWORD WINAPI PNP_ValidateDeviceInstance(handle_t hBinding, LPWSTR pDeviceID, DWORD ulFlags)
Definition: rpcserver.c:767
#define CM_LOCATE_DEVNODE_BITS
Definition: cfgmgr32.h:764

Referenced by CM_Locate_DevNode_ExA(), CM_Locate_DevNodeW(), and CreateDeviceInfo().

◆ CM_Locate_DevNodeA()

CONFIGRET WINAPI CM_Locate_DevNodeA ( _Out_ PDEVINST  pdnDevInst,
_In_opt_ DEVINSTID_A  pDeviceID,
_In_ ULONG  ulFlags 
)

Definition at line 5845 of file cfgmgr.c.

5849{
5850 TRACE("CM_Locate_DevNodeA(%p %s %lx)\n",
5851 pdnDevInst, debugstr_a(pDeviceID), ulFlags);
5852
5853 return CM_Locate_DevNode_ExA(pdnDevInst, pDeviceID, ulFlags, NULL);
5854}
CONFIGRET WINAPI CM_Locate_DevNode_ExA(_Out_ PDEVINST pdnDevInst, _In_opt_ DEVINSTID_A pDeviceID, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:5879

◆ CM_Locate_DevNodeW()

CONFIGRET WINAPI CM_Locate_DevNodeW ( _Out_ PDEVINST  pdnDevInst,
_In_opt_ DEVINSTID_W  pDeviceID,
_In_ ULONG  ulFlags 
)

Definition at line 5862 of file cfgmgr.c.

5866{
5867 TRACE("CM_Locate_DevNodeW(%p %s %lx)\n",
5868 pdnDevInst, debugstr_w(pDeviceID), ulFlags);
5869
5870 return CM_Locate_DevNode_ExW(pdnDevInst, pDeviceID, ulFlags, NULL);
5871}

Referenced by CRootNode::SetupNode().

◆ CM_Merge_Range_List()

CONFIGRET WINAPI CM_Merge_Range_List ( _In_ RANGE_LIST  rlhOld1,
_In_ RANGE_LIST  rlhOld2,
_In_ RANGE_LIST  rlhNew,
_In_ ULONG  ulFlags 
)

Definition at line 5998 of file cfgmgr.c.

6003{
6004 FIXME("CM_Merge_Range_List(%p %p %p %lx)\n",
6005 rlhOld1, rlhOld2, rlhNew, ulFlags);
6006
6008}

◆ CM_Modify_Res_Des()

CONFIGRET WINAPI CM_Modify_Res_Des ( _Out_ PRES_DES  prdResDes,
_In_ RES_DES  rdResDes,
_In_ RESOURCEID  ResourceID,
_In_reads_bytes_(ResourceLen) PCVOID  ResourceData,
_In_ ULONG  ResourceLen,
_In_ ULONG  ulFlags 
)

Definition at line 6016 of file cfgmgr.c.

6023{
6024 TRACE("CM_Modify_Res_Des(%p %p %lx %p %lu %lx)\n",
6025 prdResDes, rdResDes, ResourceID, ResourceData,
6026 ResourceLen, ulFlags);
6027
6028 return CM_Modify_Res_Des_Ex(prdResDes, rdResDes, ResourceID, ResourceData,
6029 ResourceLen, ulFlags, NULL);
6030}
CONFIGRET WINAPI CM_Modify_Res_Des_Ex(_Out_ PRES_DES prdResDes, _In_ RES_DES rdResDes, _In_ RESOURCEID ResourceID, _In_reads_bytes_(ResourceLen) PCVOID ResourceData, _In_ ULONG ResourceLen, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:6038

◆ CM_Modify_Res_Des_Ex()

CONFIGRET WINAPI CM_Modify_Res_Des_Ex ( _Out_ PRES_DES  prdResDes,
_In_ RES_DES  rdResDes,
_In_ RESOURCEID  ResourceID,
_In_reads_bytes_(ResourceLen) PCVOID  ResourceData,
_In_ ULONG  ResourceLen,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 6038 of file cfgmgr.c.

6046{
6047 FIXME("CM_Modify_Res_Des_Ex(%p %p %lx %p %lu %lx %p)\n",
6048 prdResDes, rdResDes, ResourceID, ResourceData,
6049 ResourceLen, ulFlags, hMachine);
6050
6052}

Referenced by CM_Modify_Res_Des().

◆ CM_Move_DevNode()

CONFIGRET WINAPI CM_Move_DevNode ( _In_ DEVINST  dnFromDevInst,
_In_ DEVINST  dnToDevInst,
_In_ ULONG  ulFlags 
)

Definition at line 6060 of file cfgmgr.c.

6064{
6065 TRACE("CM_Move_DevNode(%lx %lx %lx)\n",
6066 dnFromDevInst, dnToDevInst, ulFlags);
6067
6068 return CM_Move_DevNode_Ex(dnFromDevInst, dnToDevInst, ulFlags, NULL);
6069}
CONFIGRET WINAPI CM_Move_DevNode_Ex(_In_ DEVINST dnFromDevInst, _In_ DEVINST dnToDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:6077

◆ CM_Move_DevNode_Ex()

CONFIGRET WINAPI CM_Move_DevNode_Ex ( _In_ DEVINST  dnFromDevInst,
_In_ DEVINST  dnToDevInst,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 6077 of file cfgmgr.c.

6082{
6084 HSTRING_TABLE StringTable = NULL;
6085 LPWSTR lpFromDevInst;
6086 LPWSTR lpToDevInst;
6087 CONFIGRET ret;
6088
6089 FIXME("CM_Move_DevNode_Ex(%lx %lx %lx %p)\n",
6090 dnFromDevInst, dnToDevInst, ulFlags, hMachine);
6091
6092 if (!pSetupIsUserAdmin())
6093 return CR_ACCESS_DENIED;
6094
6095 if (dnFromDevInst == 0 || dnToDevInst == 0)
6096 return CR_INVALID_DEVNODE;
6097
6098 if (ulFlags != 0)
6099 return CR_INVALID_FLAG;
6100
6101 if (hMachine != NULL)
6102 {
6103 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
6104 if (BindingHandle == NULL)
6105 return CR_FAILURE;
6106
6107 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
6108 if (StringTable == 0)
6109 return CR_FAILURE;
6110 }
6111 else
6112 {
6113 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
6114 return CR_FAILURE;
6115 }
6116
6117 lpFromDevInst = pSetupStringTableStringFromId(StringTable, dnFromDevInst);
6118 if (lpFromDevInst == NULL)
6119 return CR_INVALID_DEVNODE;
6120
6121 lpToDevInst = pSetupStringTableStringFromId(StringTable, dnToDevInst);
6122 if (lpToDevInst == NULL)
6123 return CR_INVALID_DEVNODE;
6124
6126 {
6128 PNP_DEVINST_MOVE,
6129 ulFlags,
6130 lpFromDevInst,
6131 lpToDevInst);
6132 }
6134 {
6136 }
6138
6139 return ret;
6140}

Referenced by CM_Move_DevNode().

◆ CM_Next_Range()

CONFIGRET WINAPI CM_Next_Range ( _Inout_ PRANGE_ELEMENT  preElement,
_Out_ PDWORDLONG  pullStart,
_Out_ PDWORDLONG  pullEnd,
_In_ ULONG  ulFlags 
)

Definition at line 6148 of file cfgmgr.c.

6153{
6154 PINTERNAL_RANGE_LIST pRangeList;
6155 PINTERNAL_RANGE pRange;
6156 PLIST_ENTRY ListEntry;
6158
6159 FIXME("CM_Next_Range(%p %p %p %lx)\n",
6160 preElement, pullStart, pullEnd, ulFlags);
6161
6162 pRange = (PINTERNAL_RANGE)preElement;
6163
6164 if (pRange == NULL || pRange->pRangeList == NULL)
6165 return CR_FAILURE;
6166
6167 if (pullStart == NULL || pullEnd == NULL)
6168 return CR_INVALID_POINTER;
6169
6170 if (ulFlags != 0)
6171 return CR_INVALID_FLAG;
6172
6173 pRangeList = pRange->pRangeList;
6174
6175 /* Lock the range list */
6176 WaitForSingleObject(pRangeList->hMutex, INFINITE);
6177
6178 /* Fail, if we reached the end of the list */
6179 if (pRange->ListEntry.Flink == &pRangeList->ListHead)
6180 {
6181 ret = CR_FAILURE;
6182 goto done;
6183 }
6184
6185 /* Get the next range */
6186 ListEntry = pRangeList->ListHead.Flink;
6187 pRange = CONTAINING_RECORD(ListEntry, INTERNAL_RANGE, ListEntry);
6188
6189 /* Return the range data */
6190 *pullStart = pRange->ullStart;
6191 *pullEnd = pRange->ullEnd;
6192 *preElement = (RANGE_ELEMENT)pRange;
6193
6194done:
6195 /* Unlock the range list */
6196 ReleaseMutex(pRangeList->hMutex);
6197
6198 return ret;
6199}
struct _INTERNAL_RANGE * PINTERNAL_RANGE

◆ CM_Open_Class_Key_ExA()

CONFIGRET WINAPI CM_Open_Class_Key_ExA ( _In_opt_ LPGUID  pClassGuid,
_In_opt_ LPCSTR  pszClassName,
_In_ REGSAM  samDesired,
_In_ REGDISPOSITION  Disposition,
_Out_ PHKEY  phkClass,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 6251 of file cfgmgr.c.

6259{
6260 LPWSTR pszClassNameW = NULL;
6261 CONFIGRET ret;
6262
6263 TRACE("CM_Open_Class_Key_ExA(%p %s %lx %lx %p %lx %p)\n",
6264 debugstr_guid(pClassGuid), debugstr_a(pszClassName),
6265 samDesired, Disposition, phkClass, ulFlags, hMachine);
6266
6267 if (pszClassName != NULL)
6268 {
6269 if (pSetupCaptureAndConvertAnsiArg(pszClassName, &pszClassNameW))
6270 return CR_INVALID_DATA;
6271 }
6272
6273 ret = CM_Open_Class_Key_ExW(pClassGuid, pszClassNameW, samDesired,
6274 Disposition, phkClass, ulFlags, hMachine);
6275
6276 if (pszClassNameW != NULL)
6277 MyFree(pszClassNameW);
6278
6279 return ret;
6280}
CONFIGRET WINAPI CM_Open_Class_Key_ExW(_In_opt_ LPGUID pClassGuid, _In_opt_ LPCWSTR pszClassName, _In_ REGSAM samDesired, _In_ REGDISPOSITION Disposition, _Out_ PHKEY phkClass, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:6288
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Reserved_ ULONG _In_opt_ PUNICODE_STRING _In_ ULONG _Out_opt_ PULONG Disposition
Definition: cmfuncs.h:56

Referenced by CM_Open_Class_KeyA().

◆ CM_Open_Class_Key_ExW()

CONFIGRET WINAPI CM_Open_Class_Key_ExW ( _In_opt_ LPGUID  pClassGuid,
_In_opt_ LPCWSTR  pszClassName,
_In_ REGSAM  samDesired,
_In_ REGDISPOSITION  Disposition,
_Out_ PHKEY  phkClass,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 6288 of file cfgmgr.c.

6296{
6297 WCHAR szKeyName[MAX_PATH];
6298 LPWSTR lpGuidString;
6299 DWORD dwDisposition;
6300 DWORD dwError;
6301 HKEY hKey;
6302
6303 TRACE("CM_Open_Class_Key_ExW(%p %s %lx %lx %p %lx %p)\n",
6304 debugstr_guid(pClassGuid), debugstr_w(pszClassName),
6305 samDesired, Disposition, phkClass, ulFlags, hMachine);
6306
6307 /* Check Disposition and ulFlags */
6309 (ulFlags & ~CM_OPEN_CLASS_KEY_BITS))
6310 return CR_INVALID_FLAG;
6311
6312 /* Check phkClass */
6313 if (phkClass == NULL)
6314 return CR_INVALID_POINTER;
6315
6316 *phkClass = NULL;
6317
6318 if (ulFlags == CM_OPEN_CLASS_KEY_INTERFACE &&
6319 pszClassName != NULL)
6320 return CR_INVALID_DATA;
6321
6322 if (hMachine == NULL)
6323 {
6325 }
6326 else
6327 {
6328 if (RegConnectRegistryW(((PMACHINE_INFO)hMachine)->szMachineName,
6330 &hKey))
6331 return CR_REGISTRY_ERROR;
6332 }
6333
6334 if (ulFlags & CM_OPEN_CLASS_KEY_INTERFACE)
6335 {
6336 lstrcpyW(szKeyName, DeviceClasses);
6337 }
6338 else
6339 {
6340 lstrcpyW(szKeyName, ControlClass);
6341 }
6342
6343 if (pClassGuid != NULL)
6344 {
6345 if (UuidToStringW((UUID*)pClassGuid, &lpGuidString) != RPC_S_OK)
6346 {
6348 return CR_INVALID_DATA;
6349 }
6350
6351 lstrcatW(szKeyName, BackslashOpenBrace);
6352 lstrcatW(szKeyName, lpGuidString);
6353 lstrcatW(szKeyName, CloseBrace);
6354 }
6355
6357 {
6358 dwError = RegCreateKeyExW(hKey, szKeyName, 0, NULL, 0, samDesired,
6359 NULL, phkClass, &dwDisposition);
6360 }
6361 else
6362 {
6363 dwError = RegOpenKeyExW(hKey, szKeyName, 0, samDesired, phkClass);
6364 }
6365
6367
6368 if (pClassGuid != NULL)
6369 RpcStringFreeW(&lpGuidString);
6370
6371 if (dwError != ERROR_SUCCESS)
6372 {
6373 *phkClass = NULL;
6375 }
6376
6377 if (pszClassName != NULL)
6378 {
6379 RegSetValueExW(*phkClass, Class, 0, REG_SZ, (LPBYTE)pszClassName,
6380 (lstrlenW(pszClassName) + 1) * sizeof(WCHAR));
6381 }
6382
6383 return CR_SUCCESS;
6384}
#define RegCloseKey(hKey)
Definition: registry.h:49
#define CM_OPEN_CLASS_KEY_INTERFACE
Definition: cfgmgr32.h:773
#define RegDisposition_Bits
Definition: cfgmgr32.h:611
#define CM_OPEN_CLASS_KEY_BITS
Definition: cfgmgr32.h:774
#define RegDisposition_OpenAlways
Definition: cfgmgr32.h:609
#define CR_NO_SUCH_REGISTRY_KEY
Definition: cfgmgr32.h:892
#define CR_REGISTRY_ERROR
Definition: cfgmgr32.h:875
static const WCHAR ControlClass[]
Definition: cfgmgr.c:44
static const WCHAR BackslashOpenBrace[]
Definition: cfgmgr.c:40
static const WCHAR DeviceClasses[]
Definition: cfgmgr.c:49
static const WCHAR CloseBrace[]
Definition: cfgmgr.c:41
#define ERROR_SUCCESS
Definition: deptool.c:10
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
Definition: reg.c:1096
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3333
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
Definition: reg.c:4882
LONG WINAPI RegConnectRegistryW(LPCWSTR lpMachineName, HKEY hKey, PHKEY phkResult)
Definition: reg.c:874
#define MAX_PATH
Definition: compat.h:34
FxAutoRegKey hKey
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:274
RPC_STATUS WINAPI UuidToStringW(UUID *Uuid, RPC_WSTR *StringUuid)
Definition: rpcrt4_main.c:540
RPC_STATUS WINAPI RpcStringFreeW(RPC_WSTR *String)
Definition: rpcrt4_main.c:175
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12

Referenced by CM_Open_Class_Key_ExA(), CM_Open_Class_KeyW(), and SetupDiBuildClassInfoListExW().

◆ CM_Open_Class_KeyA()

CONFIGRET WINAPI CM_Open_Class_KeyA ( _In_opt_ LPGUID  pClassGuid,
_In_opt_ LPCSTR  pszClassName,
_In_ REGSAM  samDesired,
_In_ REGDISPOSITION  Disposition,
_Out_ PHKEY  phkClass,
_In_ ULONG  ulFlags 
)

Definition at line 6207 of file cfgmgr.c.

6214{
6215 TRACE("CM_Open_Class_KeyA(%p %s %lx %lx %p %lx)\n",
6216 debugstr_guid(pClassGuid), debugstr_a(pszClassName),
6217 samDesired, Disposition, phkClass, ulFlags);
6218
6219 return CM_Open_Class_Key_ExA(pClassGuid, pszClassName, samDesired,
6220 Disposition, phkClass, ulFlags, NULL);
6221}
CONFIGRET WINAPI CM_Open_Class_Key_ExA(_In_opt_ LPGUID pClassGuid, _In_opt_ LPCSTR pszClassName, _In_ REGSAM samDesired, _In_ REGDISPOSITION Disposition, _Out_ PHKEY phkClass, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:6251

◆ CM_Open_Class_KeyW()

CONFIGRET WINAPI CM_Open_Class_KeyW ( _In_opt_ LPGUID  pClassGuid,
_In_opt_ LPCWSTR  pszClassName,
_In_ REGSAM  samDesired,
_In_ REGDISPOSITION  Disposition,
_Out_ PHKEY  phkClass,
_In_ ULONG  ulFlags 
)

Definition at line 6229 of file cfgmgr.c.

6236{
6237 TRACE("CM_Open_Class_KeyW(%p %s %lx %lx %p %lx)\n",
6238 debugstr_guid(pClassGuid), debugstr_w(pszClassName),
6239 samDesired, Disposition, phkClass, ulFlags);
6240
6241 return CM_Open_Class_Key_ExW(pClassGuid, pszClassName, samDesired,
6242 Disposition, phkClass, ulFlags, NULL);
6243}

◆ CM_Open_DevNode_Key()

CONFIGRET WINAPI CM_Open_DevNode_Key ( _In_ DEVINST  dnDevNode,
_In_ REGSAM  samDesired,
_In_ ULONG  ulHardwareProfile,
_In_ REGDISPOSITION  Disposition,
_Out_ PHKEY  phkDevice,
_In_ ULONG  ulFlags 
)

Definition at line 6392 of file cfgmgr.c.

6399{
6400 TRACE("CM_Open_DevNode_Key(%lx %lx %lu %lx %p %lx)\n",
6401 dnDevNode, samDesired, ulHardwareProfile, Disposition, phkDevice, ulFlags);
6402
6403 return CM_Open_DevNode_Key_Ex(dnDevNode, samDesired, ulHardwareProfile,
6404 Disposition, phkDevice, ulFlags, NULL);
6405}
CONFIGRET WINAPI CM_Open_DevNode_Key_Ex(_In_ DEVINST dnDevNode, _In_ REGSAM samDesired, _In_ ULONG ulHardwareProfile, _In_ REGDISPOSITION Disposition, _Out_ PHKEY phkDevice, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:6413

◆ CM_Open_DevNode_Key_Ex()

CONFIGRET WINAPI CM_Open_DevNode_Key_Ex ( _In_ DEVINST  dnDevNode,
_In_ REGSAM  samDesired,
_In_ ULONG  ulHardwareProfile,
_In_ REGDISPOSITION  Disposition,
_Out_ PHKEY  phkDevice,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 6413 of file cfgmgr.c.

6421{
6423 HSTRING_TABLE StringTable = NULL;
6424 LPWSTR pszDevInst, pszKeyPath = NULL, pszInstancePath = NULL;
6425 LONG lError;
6426 DWORD dwDisposition;
6427 HKEY hRootKey = NULL;
6429
6430 TRACE("CM_Open_DevNode_Key_Ex(%lx %lx %lu %lx %p %lx %p)\n",
6431 dnDevNode, samDesired, ulHardwareProfile, Disposition, phkDevice, ulFlags, hMachine);
6432
6433 if (phkDevice == NULL)
6434 return CR_INVALID_POINTER;
6435
6436 *phkDevice = NULL;
6437
6438 if (dnDevNode == 0)
6439 return CR_INVALID_DEVNODE;
6440
6441 if (ulFlags & ~CM_REGISTRY_BITS)
6442 return CR_INVALID_FLAG;
6443
6445 return CR_INVALID_DATA;
6446
6447 if (hMachine != NULL)
6448 {
6449 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
6450 if (BindingHandle == NULL)
6451 return CR_FAILURE;
6452
6453 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
6454 if (StringTable == 0)
6455 return CR_FAILURE;
6456 }
6457 else
6458 {
6459 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
6460 return CR_FAILURE;
6461 }
6462
6463 pszDevInst = pSetupStringTableStringFromId(StringTable, dnDevNode);
6464 if (pszDevInst == NULL)
6465 return CR_INVALID_DEVNODE;
6466
6467 TRACE("pszDevInst: %S\n", pszDevInst);
6468
6469 pszKeyPath = MyMalloc(512 * sizeof(WCHAR));
6470 if (pszKeyPath == NULL)
6471 {
6473 goto done;
6474 }
6475
6476 pszInstancePath = MyMalloc(512 * sizeof(WCHAR));
6477 if (pszInstancePath == NULL)
6478 {
6480 goto done;
6481 }
6482
6484 pszDevInst,
6485 pszKeyPath,
6486 pszInstancePath,
6487 ulHardwareProfile,
6488 ulFlags);
6489 if (ret != CR_SUCCESS)
6490 goto done;
6491
6492 TRACE("pszKeyPath: %S\n", pszKeyPath);
6493 TRACE("pszInstancePath: %S\n", pszInstancePath);
6494
6495 wcscat(pszKeyPath, L"\\");
6496 wcscat(pszKeyPath, pszInstancePath);
6497
6498 TRACE("pszKeyPath: %S\n", pszKeyPath);
6499
6500 if (hMachine == NULL)
6501 {
6502 hRootKey = HKEY_LOCAL_MACHINE;
6503 }
6504 else
6505 {
6506 if (RegConnectRegistryW(((PMACHINE_INFO)hMachine)->szMachineName,
6508 &hRootKey))
6509 {
6511 goto done;
6512 }
6513 }
6514
6516 {
6517 lError = RegCreateKeyExW(hRootKey,
6518 pszKeyPath,
6519 0,
6520 NULL,
6521 0,
6522 samDesired,
6523 NULL,
6524 phkDevice,
6525 &dwDisposition);
6526 }
6527 else
6528 {
6529 lError = RegOpenKeyExW(hRootKey,
6530 pszKeyPath,
6531 0,
6532 samDesired,
6533 phkDevice);
6534 }
6535
6536 if (lError != ERROR_SUCCESS)
6537 {
6538 *phkDevice = NULL;
6540 }
6541
6542done:
6543 if ((hRootKey != NULL) && (hRootKey != HKEY_LOCAL_MACHINE))
6544 RegCloseKey(hRootKey);
6545
6546 if (pszInstancePath != NULL)
6547 MyFree(pszInstancePath);
6548
6549 if (pszKeyPath != NULL)
6550 MyFree(pszKeyPath);
6551
6552 return ret;
6553}
long LONG
Definition: pedump.c:60
_CRTIMP wchar_t *__cdecl wcscat(_Inout_updates_z_(_String_length_(_Dest)+_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)

Referenced by CM_Open_DevNode_Key().

◆ CM_Query_And_Remove_SubTree_ExA()

CONFIGRET WINAPI CM_Query_And_Remove_SubTree_ExA ( _In_ DEVINST  dnAncestor,
_Out_opt_ PPNP_VETO_TYPE  pVetoType,
_Out_writes_opt_(ulNameLength) LPSTR  pszVetoName,
_In_ ULONG  ulNameLength,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 6601 of file cfgmgr.c.

6608{
6609 LPWSTR lpLocalVetoName;
6610 CONFIGRET ret;
6611
6612 TRACE("CM_Query_And_Remove_SubTree_ExA(%lx %p %p %lu %lx %p)\n",
6613 dnAncestor, pVetoType, pszVetoName, ulNameLength,
6614 ulFlags, hMachine);
6615
6616 if (pszVetoName == NULL && ulNameLength == 0)
6617 return CR_INVALID_POINTER;
6618
6619 lpLocalVetoName = HeapAlloc(GetProcessHeap(), 0, ulNameLength * sizeof(WCHAR));
6620 if (lpLocalVetoName == NULL)
6621 return CR_OUT_OF_MEMORY;
6622
6623 ret = CM_Query_And_Remove_SubTree_ExW(dnAncestor, pVetoType, lpLocalVetoName,
6624 ulNameLength, ulFlags, hMachine);
6625 if (ret == CR_REMOVE_VETOED)
6626 {
6628 0,
6629 lpLocalVetoName,
6630 ulNameLength,
6631 pszVetoName,
6632 ulNameLength,
6633 NULL,
6634 NULL) == 0)
6635 ret = CR_FAILURE;
6636 }
6637
6638 HeapFree(GetProcessHeap(), 0, lpLocalVetoName);
6639
6640 return ret;
6641}
#define CR_REMOVE_VETOED
Definition: cfgmgr32.h:869
CONFIGRET WINAPI CM_Query_And_Remove_SubTree_ExW(_In_ DEVINST dnAncestor, _Out_opt_ PPNP_VETO_TYPE pVetoType, _Out_writes_opt_(ulNameLength) LPWSTR pszVetoName, _In_ ULONG ulNameLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:6649

Referenced by CM_Query_And_Remove_SubTreeA().

◆ CM_Query_And_Remove_SubTree_ExW()

CONFIGRET WINAPI CM_Query_And_Remove_SubTree_ExW ( _In_ DEVINST  dnAncestor,
_Out_opt_ PPNP_VETO_TYPE  pVetoType,
_Out_writes_opt_(ulNameLength) LPWSTR  pszVetoName,
_In_ ULONG  ulNameLength,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 6649 of file cfgmgr.c.

6656{
6658 HSTRING_TABLE StringTable = NULL;
6659 LPWSTR lpDevInst;
6660 CONFIGRET ret;
6661
6662 TRACE("CM_Query_And_Remove_SubTree_ExW(%lx %p %p %lu %lx %p)\n",
6663 dnAncestor, pVetoType, pszVetoName, ulNameLength,
6664 ulFlags, hMachine);
6665
6666 if (dnAncestor == 0)
6667 return CR_INVALID_DEVNODE;
6668
6669 if (ulFlags & ~CM_REMOVE_BITS)
6670 return CR_INVALID_FLAG;
6671
6672 if (pszVetoName == NULL && ulNameLength == 0)
6673 return CR_INVALID_POINTER;
6674
6675 if (hMachine != NULL)
6676 {
6677 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
6678 if (BindingHandle == NULL)
6679 return CR_FAILURE;
6680
6681 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
6682 if (StringTable == 0)
6683 return CR_FAILURE;
6684 }
6685 else
6686 {
6687 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
6688 return CR_FAILURE;
6689 }
6690
6691 lpDevInst = pSetupStringTableStringFromId(StringTable, dnAncestor);
6692 if (lpDevInst == NULL)
6693 return CR_INVALID_DEVNODE;
6694
6696 {
6698 lpDevInst,
6699 pVetoType,
6700 pszVetoName,
6701 ulNameLength,
6702 ulFlags);
6703 }
6705 {
6707 }
6709
6710 return ret;
6711}
DWORD WINAPI PNP_QueryRemove(handle_t hBinding, LPWSTR pszDeviceID, PPNP_VETO_TYPE pVetoType, LPWSTR pszVetoName, DWORD ulNameLength, DWORD ulFlags)
Definition: rpcserver.c:3757
#define CM_REMOVE_BITS
Definition: cfgmgr32.h:780

Referenced by CM_Query_And_Remove_SubTree_ExA(), and CM_Query_And_Remove_SubTreeW().

◆ CM_Query_And_Remove_SubTreeA()

CONFIGRET WINAPI CM_Query_And_Remove_SubTreeA ( _In_ DEVINST  dnAncestor,
_Out_opt_ PPNP_VETO_TYPE  pVetoType,
_Out_writes_opt_(ulNameLength) LPSTR  pszVetoName,
_In_ ULONG  ulNameLength,
_In_ ULONG  ulFlags 
)

Definition at line 6561 of file cfgmgr.c.

6567{
6568 TRACE("CM_Query_And_Remove_SubTreeA(%lx %p %p %lu %lx)\n",
6569 dnAncestor, pVetoType, pszVetoName, ulNameLength, ulFlags);
6570
6571 return CM_Query_And_Remove_SubTree_ExA(dnAncestor, pVetoType, pszVetoName,
6572 ulNameLength, ulFlags, NULL);
6573}
CONFIGRET WINAPI CM_Query_And_Remove_SubTree_ExA(_In_ DEVINST dnAncestor, _Out_opt_ PPNP_VETO_TYPE pVetoType, _Out_writes_opt_(ulNameLength) LPSTR pszVetoName, _In_ ULONG ulNameLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:6601

◆ CM_Query_And_Remove_SubTreeW()

CONFIGRET WINAPI CM_Query_And_Remove_SubTreeW ( _In_ DEVINST  dnAncestor,
_Out_opt_ PPNP_VETO_TYPE  pVetoType,
_Out_writes_opt_(ulNameLength) LPWSTR  pszVetoName,
_In_ ULONG  ulNameLength,
_In_ ULONG  ulFlags 
)

Definition at line 6581 of file cfgmgr.c.

6587{
6588 TRACE("CM_Query_And_Remove_SubTreeW(%lx %p %p %lu %lx)\n",
6589 dnAncestor, pVetoType, pszVetoName, ulNameLength, ulFlags);
6590
6591 return CM_Query_And_Remove_SubTree_ExW(dnAncestor, pVetoType, pszVetoName,
6592 ulNameLength, ulFlags, NULL);
6593}

◆ CM_Query_Arbitrator_Free_Data()

CONFIGRET WINAPI CM_Query_Arbitrator_Free_Data ( _Out_writes_bytes_(DataLen) PVOID  pData,
_In_ ULONG  DataLen,
_In_ DEVINST  dnDevInst,
_In_ RESOURCEID  ResourceID,
_In_ ULONG  ulFlags 
)

Definition at line 6719 of file cfgmgr.c.

6725{
6726 TRACE("CM_Query_Arbitrator_Free_Data(%p %lu %lx %lu 0x%08lx)\n",
6727 pData, DataLen, dnDevInst, ResourceID, ulFlags);
6728
6729 return CM_Query_Arbitrator_Free_Data_Ex(pData, DataLen, dnDevInst,
6730 ResourceID, ulFlags, NULL);
6731}
CONFIGRET WINAPI CM_Query_Arbitrator_Free_Data_Ex(_Out_writes_bytes_(DataLen) PVOID pData, _In_ ULONG DataLen, _In_ DEVINST dnDevInst, _In_ RESOURCEID ResourceID, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:6739
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
Definition: twain.h:1830

◆ CM_Query_Arbitrator_Free_Data_Ex()

CONFIGRET WINAPI CM_Query_Arbitrator_Free_Data_Ex ( _Out_writes_bytes_(DataLen) PVOID  pData,
_In_ ULONG  DataLen,
_In_ DEVINST  dnDevInst,
_In_ RESOURCEID  ResourceID,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 6739 of file cfgmgr.c.

6746{
6748 HSTRING_TABLE StringTable = NULL;
6749 LPWSTR lpDevInst;
6750 CONFIGRET ret;
6751
6752 TRACE("CM_Query_Arbitrator_Free_Data_Ex(%p %lu %lx %lu 0x%08lx %p)\n",
6753 pData, DataLen, dnDevInst, ResourceID, ulFlags, hMachine);
6754
6755 if (pData == NULL || DataLen == 0)
6756 return CR_INVALID_POINTER;
6757
6758 if (dnDevInst == 0)
6759 return CR_INVALID_DEVINST;
6760
6761 if (ulFlags & ~CM_QUERY_ARBITRATOR_BITS)
6762 return CR_INVALID_FLAG;
6763
6764 if (hMachine != NULL)
6765 {
6766 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
6767 if (BindingHandle == NULL)
6768 return CR_FAILURE;
6769
6770 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
6771 if (StringTable == 0)
6772 return CR_FAILURE;
6773 }
6774 else
6775 {
6776 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
6777 return CR_FAILURE;
6778 }
6779
6780 lpDevInst = pSetupStringTableStringFromId(StringTable, dnDevInst);
6781 if (lpDevInst == NULL)
6782 return CR_INVALID_DEVNODE;
6783
6785 {
6787 pData,
6788 DataLen,
6789 lpDevInst,
6790 ResourceID,
6791 ulFlags);
6792 }
6794 {
6796 }
6798
6799 return ret;
6800}
DWORD WINAPI PNP_QueryArbitratorFreeData(handle_t hBinding, BYTE *pData, DWORD DataLen, LPWSTR pDeviceID, RESOURCEID ResourceID, DWORD ulFlags)
Definition: rpcserver.c:4647
#define CM_QUERY_ARBITRATOR_BITS
Definition: cfgmgr32.h:832

Referenced by CM_Query_Arbitrator_Free_Data().

◆ CM_Query_Arbitrator_Free_Size()

CONFIGRET WINAPI CM_Query_Arbitrator_Free_Size ( _Out_ PULONG  pulSize,
_In_ DEVINST  dnDevInst,
_In_ RESOURCEID  ResourceID,
_In_ ULONG  ulFlags 
)

Definition at line 6808 of file cfgmgr.c.

6813{
6814 TRACE("CM_Query_Arbitrator_Free_Size(%p %lu %lx 0x%08lx)\n",
6815 pulSize, dnDevInst,ResourceID, ulFlags);
6816
6817 return CM_Query_Arbitrator_Free_Size_Ex(pulSize, dnDevInst, ResourceID,
6818 ulFlags, NULL);
6819}
CONFIGRET WINAPI CM_Query_Arbitrator_Free_Size_Ex(_Out_ PULONG pulSize, _In_ DEVINST dnDevInst, _In_ RESOURCEID ResourceID, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:6827

◆ CM_Query_Arbitrator_Free_Size_Ex()

CONFIGRET WINAPI CM_Query_Arbitrator_Free_Size_Ex ( _Out_ PULONG  pulSize,
_In_ DEVINST  dnDevInst,
_In_ RESOURCEID  ResourceID,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 6827 of file cfgmgr.c.

6833{
6835 HSTRING_TABLE StringTable = NULL;
6836 LPWSTR lpDevInst;
6837 CONFIGRET ret;
6838
6839 TRACE("CM_Query_Arbitrator_Free_Size_Ex(%p %lu %lx 0x%08lx %p)\n",
6840 pulSize, dnDevInst,ResourceID, ulFlags, hMachine);
6841
6842 if (pulSize == NULL)
6843 return CR_INVALID_POINTER;
6844
6845 if (dnDevInst == 0)
6846 return CR_INVALID_DEVINST;
6847
6848 if (ulFlags & ~CM_QUERY_ARBITRATOR_BITS)
6849 return CR_INVALID_FLAG;
6850
6851 if (hMachine != NULL)
6852 {
6853 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
6854 if (BindingHandle == NULL)
6855 return CR_FAILURE;
6856
6857 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
6858 if (StringTable == 0)
6859 return CR_FAILURE;
6860 }
6861 else
6862 {
6863 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
6864 return CR_FAILURE;
6865 }
6866
6867 lpDevInst = pSetupStringTableStringFromId(StringTable, dnDevInst);
6868 if (lpDevInst == NULL)
6869 return CR_INVALID_DEVNODE;
6870
6872 {
6874 pulSize,
6875 lpDevInst,
6876 ResourceID,
6877 ulFlags);
6878 }
6880 {
6882 }
6884
6885 return ret;
6886}
DWORD WINAPI PNP_QueryArbitratorFreeSize(handle_t hBinding, DWORD *pulSize, LPWSTR pDeviceID, RESOURCEID ResourceID, DWORD ulFlags)
Definition: rpcserver.c:4662

Referenced by CM_Query_Arbitrator_Free_Size().

◆ CM_Query_Remove_SubTree()

CONFIGRET WINAPI CM_Query_Remove_SubTree ( _In_ DEVINST  dnAncestor,
_In_ ULONG  ulFlags 
)

Definition at line 6896 of file cfgmgr.c.

6899{
6900 TRACE("CM_Query_Remove_SubTree(%lx %lx)\n",
6901 dnAncestor, ulFlags);
6902
6904}

◆ CM_Query_Remove_SubTree_Ex()

CONFIGRET WINAPI CM_Query_Remove_SubTree_Ex ( _In_ DEVINST  dnAncestor,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 6914 of file cfgmgr.c.

6918{
6919 TRACE("CM_Query_Remove_SubTree_Ex(%lx %lx %p)\n",
6920 dnAncestor, ulFlags, hMachine);
6921
6923}

◆ CM_Query_Resource_Conflict_List()

CONFIGRET WINAPI CM_Query_Resource_Conflict_List ( _Out_ PCONFLICT_LIST  pclConflictList,
_In_ DEVINST  dnDevInst,
_In_ RESOURCEID  ResourceID,
_In_ PCVOID  ResourceData,
_In_ ULONG  ResourceLen,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 6931 of file cfgmgr.c.

6939{
6941 HSTRING_TABLE StringTable = NULL;
6942 PPNP_CONFLICT_LIST pConflictBuffer = NULL;
6943 PCONFLICT_DATA pConflictData = NULL;
6944 ULONG ulBufferLength;
6945 LPWSTR lpDevInst;
6946 CONFIGRET ret;
6947
6948 FIXME("CM_Query_Resource_Conflict_List(%p %lx %lu %p %lu %lx %p)\n",
6949 pclConflictList, dnDevInst, ResourceID, ResourceData,
6950 ResourceLen, ulFlags, hMachine);
6951
6952 if (dnDevInst == 0)
6953 return CR_INVALID_DEVNODE;
6954
6955 if (ulFlags & ~CM_RESDES_WIDTH_BITS)
6956 return CR_INVALID_FLAG;
6957
6958 if (pclConflictList == NULL ||
6959 ResourceData == NULL ||
6960 ResourceLen == 0)
6961 return CR_INVALID_POINTER;
6962
6963 if (ResourceID == 0)
6964 return CR_INVALID_RESOURCEID;
6965
6966 *pclConflictList = 0;
6967
6968 if (hMachine != NULL)
6969 {
6970 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
6971 if (BindingHandle == NULL)
6972 return CR_FAILURE;
6973
6974 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
6975 if (StringTable == 0)
6976 return CR_FAILURE;
6977 }
6978 else
6979 {
6980 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
6981 return CR_FAILURE;
6982 }
6983
6984 lpDevInst = pSetupStringTableStringFromId(StringTable, dnDevInst);
6985 if (lpDevInst == NULL)
6986 return CR_INVALID_DEVNODE;
6987
6988 pConflictData = MyMalloc(sizeof(CONFLICT_DATA));
6989 if (pConflictData == NULL)
6990 {
6992 goto done;
6993 }
6994
6995 ulBufferLength = sizeof(PNP_CONFLICT_LIST) +
6996 sizeof(PNP_CONFLICT_STRINGS) +
6997 (sizeof(wchar_t) * 200);
6998 pConflictBuffer = MyMalloc(ulBufferLength);
6999 if (pConflictBuffer == NULL)
7000 {
7002 goto done;
7003 }
7004
7006 {
7008 lpDevInst,
7009 ResourceID,
7010 (PBYTE)ResourceData,
7011 ResourceLen,
7012 (PBYTE)pConflictBuffer,
7013 ulBufferLength,
7014 ulFlags);
7015 }
7017 {
7019 }
7021
7022 if (ret != CR_SUCCESS)
7023 goto done;
7024
7025 pConflictData->ulMagic = CONFLICT_MAGIC;
7026 pConflictData->pConflictList = pConflictBuffer;
7027
7028 *pclConflictList = (CONFLICT_LIST)pConflictData;
7029
7030done:
7031 if (ret != CR_SUCCESS)
7032 {
7033 if (pConflictBuffer != NULL)
7034 MyFree(pConflictBuffer);
7035
7036 if (pConflictData != NULL)
7037 MyFree(pConflictData);
7038 }
7039
7040 return ret;
7041}
DWORD WINAPI PNP_QueryResConfList(handle_t hBinding, LPWSTR pDeviceID, RESOURCEID ResourceID, BYTE *ResourceData, PNP_RPC_BUFFER_SIZE ResourceLen, BYTE *Buffer, PNP_RPC_BUFFER_SIZE BufferLen, DWORD ulFlags)
Definition: rpcserver.c:4617
ULONG_PTR CONFLICT_LIST
Definition: cfgmgr32.h:111
#define CR_INVALID_RESOURCEID
Definition: cfgmgr32.h:855
#define CM_RESDES_WIDTH_BITS
Definition: cfgmgr32.h:402
#define CONFLICT_MAGIC
Definition: cfgmgr.c:106
BYTE * PBYTE
Definition: pedump.c:66
struct _PNP_CONFLICT_LIST PNP_CONFLICT_LIST
ULONG ulMagic
Definition: cfgmgr.c:102
#define wchar_t
Definition: wchar.h:102

◆ CM_Reenumerate_DevNode()

CONFIGRET WINAPI CM_Reenumerate_DevNode ( _In_ DEVINST  dnDevInst,
_In_ ULONG  ulFlags 
)

Definition at line 7049 of file cfgmgr.c.

7052{
7053 TRACE("CM_Reenumerate_DevNode(%lx %lx)\n",
7054 dnDevInst, ulFlags);
7055
7056 return CM_Reenumerate_DevNode_Ex(dnDevInst, ulFlags, NULL);
7057}
CONFIGRET WINAPI CM_Reenumerate_DevNode_Ex(_In_ DEVINST dnDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:7064

◆ CM_Reenumerate_DevNode_Ex()

CONFIGRET WINAPI CM_Reenumerate_DevNode_Ex ( _In_ DEVINST  dnDevInst,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 7064 of file cfgmgr.c.

7068{
7070 HSTRING_TABLE StringTable = NULL;
7071 LPWSTR lpDevInst;
7072 CONFIGRET ret;
7073
7074 FIXME("CM_Reenumerate_DevNode_Ex(%lx %lx %p)\n",
7075 dnDevInst, ulFlags, hMachine);
7076
7077 if (dnDevInst == 0)
7078 return CR_INVALID_DEVNODE;
7079
7080 if (ulFlags & ~CM_REENUMERATE_BITS)
7081 return CR_INVALID_FLAG;
7082
7083 if (hMachine != NULL)
7084 {
7085 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
7086 if (BindingHandle == NULL)
7087 return CR_FAILURE;
7088
7089 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
7090 if (StringTable == 0)
7091 return CR_FAILURE;
7092 }
7093 else
7094 {
7095 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
7096 return CR_FAILURE;
7097 }
7098
7099 lpDevInst = pSetupStringTableStringFromId(StringTable, dnDevInst);
7100 if (lpDevInst == NULL)
7101 return CR_INVALID_DEVNODE;
7102
7104 {
7106 PNP_DEVINST_REENUMERATE,
7107 ulFlags,
7108 lpDevInst,
7109 NULL);
7110 }
7112 {
7114 }
7116
7117 return ret;
7118}
#define CM_REENUMERATE_BITS
Definition: cfgmgr32.h:793

Referenced by CM_Reenumerate_DevNode().

◆ CM_Register_Device_Driver()

CONFIGRET WINAPI CM_Register_Device_Driver ( _In_ DEVINST  dnDevInst,
_In_ ULONG  ulFlags 
)

Definition at line 7126 of file cfgmgr.c.

7129{
7130 TRACE("CM_Register_Device_Driver(%lx 0x%08lx)\n",
7131 dnDevInst, ulFlags);
7132
7133 return CM_Register_Device_Driver_Ex(dnDevInst, ulFlags, NULL);
7134}
CONFIGRET WINAPI CM_Register_Device_Driver_Ex(_In_ DEVINST dnDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:7142

◆ CM_Register_Device_Driver_Ex()

CONFIGRET WINAPI CM_Register_Device_Driver_Ex ( _In_ DEVINST  dnDevInst,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 7142 of file cfgmgr.c.

7146{
7148 HSTRING_TABLE StringTable = NULL;
7149 LPWSTR lpDevInst;
7150 CONFIGRET ret;
7151
7152 TRACE("CM_Register_Device_Driver_Ex(%lx 0x%08lx %p)\n",
7153 dnDevInst, ulFlags, hMachine);
7154
7155 if (dnDevInst == 0)
7156 return CR_INVALID_DEVNODE;
7157
7158 if (ulFlags & ~CM_REGISTER_DEVICE_DRIVER_BITS)
7159 return CR_INVALID_FLAG;
7160
7161 if (hMachine != NULL)
7162 {
7163 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
7164 if (BindingHandle == NULL)
7165 return CR_FAILURE;
7166
7167 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
7168 if (StringTable == 0)
7169 return CR_FAILURE;
7170 }
7171 else
7172 {
7173 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
7174 return CR_FAILURE;
7175 }
7176
7177 lpDevInst = pSetupStringTableStringFromId(StringTable, dnDevInst);
7178 if (lpDevInst == NULL)
7179 return CR_INVALID_DEVNODE;
7180
7182 {
7184 lpDevInst,
7185 ulFlags);
7186 }
7188 {
7190 }
7192
7193 return ret;
7194}
DWORD WINAPI PNP_RegisterDriver(handle_t hBinding, LPWSTR pszDeviceID, DWORD ulFlags)
Definition: rpcserver.c:3734
#define CM_REGISTER_DEVICE_DRIVER_BITS
Definition: cfgmgr32.h:798

Referenced by CM_Register_Device_Driver().

◆ CM_Register_Device_Interface_ExA()

CONFIGRET WINAPI CM_Register_Device_Interface_ExA ( _In_ DEVINST  dnDevInst,
_In_ LPGUID  InterfaceClassGuid,
_In_opt_ LPCSTR  pszReference,
_Out_writes_ *pulLength LPSTR  pszDeviceInterface,
_Inout_ PULONG  pulLength,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 7248 of file cfgmgr.c.

7256{
7257 LPWSTR pszReferenceW = NULL;
7258 LPWSTR pszDeviceInterfaceW;
7259 ULONG ulLength;
7260 CONFIGRET ret;
7261
7262 TRACE("CM_Register_Device_Interface_ExA(%lx %s %s %p %p %lx %p)\n",
7263 dnDevInst, debugstr_guid(InterfaceClassGuid), debugstr_a(pszReference),
7264 pszDeviceInterface, pulLength, ulFlags, hMachine);
7265
7266 if (pulLength == NULL || pszDeviceInterface == NULL)
7267 return CR_INVALID_POINTER;
7268
7269 if (pszReference != NULL)
7270 {
7271 if (pSetupCaptureAndConvertAnsiArg(pszReference, &pszReferenceW))
7272 return CR_INVALID_DATA;
7273 }
7274
7275 ulLength = *pulLength;
7276
7277 pszDeviceInterfaceW = HeapAlloc(GetProcessHeap(), 0, ulLength * sizeof(WCHAR));
7278 if (pszDeviceInterfaceW == NULL)
7279 {
7281 goto Done;
7282 }
7283
7286 pszReferenceW,
7287 pszDeviceInterfaceW,
7288 &ulLength,
7289 ulFlags,
7290 hMachine);
7291 if (ret == CR_SUCCESS)
7292 {
7294 0,
7295 pszDeviceInterfaceW,
7296 ulLength,
7297 pszDeviceInterface,
7298 *pulLength,
7299 NULL,
7300 NULL) == 0)
7301 ret = CR_FAILURE;
7302 }
7303
7304 *pulLength = ulLength;
7305
7306Done:
7307 if (pszDeviceInterfaceW != NULL)
7308 HeapFree(GetProcessHeap(), 0, pszDeviceInterfaceW);
7309
7310 if (pszReferenceW != NULL)
7311 MyFree(pszReferenceW);
7312
7313 return ret;
7314}
CONFIGRET WINAPI CM_Register_Device_Interface_ExW(_In_ DEVINST dnDevInst, _In_ LPGUID InterfaceClassGuid, _In_opt_ LPCWSTR pszReference, _Out_writes_(*pulLength) LPWSTR pszDeviceInterface, _Inout_ PULONG pulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:7322

Referenced by CM_Register_Device_InterfaceA().

◆ CM_Register_Device_Interface_ExW()

CONFIGRET WINAPI CM_Register_Device_Interface_ExW ( _In_ DEVINST  dnDevInst,
_In_ LPGUID  InterfaceClassGuid,
_In_opt_ LPCWSTR  pszReference,
_Out_writes_ *pulLength LPWSTR  pszDeviceInterface,
_Inout_ PULONG  pulLength,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 7322 of file cfgmgr.c.

7330{
7332 HSTRING_TABLE StringTable = NULL;
7333 LPWSTR lpDevInst;
7334 ULONG ulTransferLength;
7335 CONFIGRET ret;
7336
7337 TRACE("CM_Register_Device_Interface_ExW(%lx %s %s %p %p %lx %p)\n",
7338 dnDevInst, debugstr_guid(InterfaceClassGuid), debugstr_w(pszReference),
7339 pszDeviceInterface, pulLength, ulFlags, hMachine);
7340
7341 if (dnDevInst == 0)
7342 return CR_INVALID_DEVNODE;
7343
7344 if (InterfaceClassGuid == NULL ||
7345 pszDeviceInterface == NULL ||
7346 pulLength == NULL)
7347 return CR_INVALID_POINTER;
7348
7349 if (ulFlags != 0)
7350 return CR_INVALID_FLAG;
7351
7352 if (hMachine != NULL)
7353 {
7354 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
7355 if (BindingHandle == NULL)
7356 return CR_FAILURE;
7357
7358 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
7359 if (StringTable == 0)
7360 return CR_FAILURE;
7361 }
7362 else
7363 {
7364 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
7365 return CR_FAILURE;
7366 }
7367
7368 lpDevInst = pSetupStringTableStringFromId(StringTable, dnDevInst);
7369 if (lpDevInst == NULL)
7370 return CR_INVALID_DEVNODE;
7371
7372 ulTransferLength = *pulLength;
7373
7375 {
7377 lpDevInst,
7379 (LPWSTR)pszReference,
7380 pszDeviceInterface,
7381 pulLength,
7382 &ulTransferLength,
7383 0);
7384 }
7386 {
7388 }
7390
7391 return ret;
7392}
DWORD WINAPI PNP_RegisterDeviceClassAssociation(handle_t hBinding, LPWSTR pszDeviceID, GUID *InterfaceGuid, LPWSTR pszReference, LPWSTR pszSymLink, PNP_RPC_STRING_LEN *pulLength, PNP_RPC_STRING_LEN *pulTransferLen, DWORD ulFlags)
Definition: rpcserver.c:2696

Referenced by CM_Register_Device_Interface_ExA(), and CM_Register_Device_InterfaceW().

◆ CM_Register_Device_InterfaceA()

CONFIGRET WINAPI CM_Register_Device_InterfaceA ( _In_ DEVINST  dnDevInst,
_In_ LPGUID  InterfaceClassGuid,
_In_opt_ LPCSTR  pszReference,
_Out_writes_ *pulLength LPSTR  pszDeviceInterface,
_Inout_ PULONG  pulLength,
_In_ ULONG  ulFlags 
)

Definition at line 7202 of file cfgmgr.c.

7209{
7210 TRACE("CM_Register_Device_InterfaceA(%lx %s %s %p %p %lx)\n",
7212 pszReference, pszDeviceInterface, pulLength, ulFlags);
7213
7215 pszReference, pszDeviceInterface,
7216 pulLength, ulFlags, NULL);
7217}
CONFIGRET WINAPI CM_Register_Device_Interface_ExA(_In_ DEVINST dnDevInst, _In_ LPGUID InterfaceClassGuid, _In_opt_ LPCSTR pszReference, _Out_writes_(*pulLength) LPSTR pszDeviceInterface, _Inout_ PULONG pulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:7248

◆ CM_Register_Device_InterfaceW()

CONFIGRET WINAPI CM_Register_Device_InterfaceW ( _In_ DEVINST  dnDevInst,
_In_ LPGUID  InterfaceClassGuid,
_In_opt_ LPCWSTR  pszReference,
_Out_writes_ *pulLength LPWSTR  pszDeviceInterface,
_Inout_ PULONG  pulLength,
_In_ ULONG  ulFlags 
)

Definition at line 7225 of file cfgmgr.c.

7232{
7233 TRACE("CM_Register_Device_InterfaceW(%lx %s %s %p %p %lx)\n",
7235 debugstr_w(pszReference), pszDeviceInterface, pulLength, ulFlags);
7236
7238 pszReference, pszDeviceInterface,
7239 pulLength, ulFlags, NULL);
7240}

◆ CM_Remove_SubTree()

CONFIGRET WINAPI CM_Remove_SubTree ( _In_ DEVINST  dnAncestor,
_In_ ULONG  ulFlags 
)

Definition at line 7402 of file cfgmgr.c.

7405{
7406 TRACE("CM_Remove_SubTree(%lx %lx)\n",
7407 dnAncestor, ulFlags);
7408
7410}

◆ CM_Remove_SubTree_Ex()

CONFIGRET WINAPI CM_Remove_SubTree_Ex ( _In_ DEVINST  dnAncestor,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 7420 of file cfgmgr.c.

7424{
7425 TRACE("CM_Remove_SubTree_Ex(%lx %lx %p)\n",
7426 dnAncestor, ulFlags, hMachine);
7427
7429}

◆ CM_Request_Device_Eject_ExA()

CONFIGRET WINAPI CM_Request_Device_Eject_ExA ( _In_ DEVINST  dnDevInst,
_Out_opt_ PPNP_VETO_TYPE  pVetoType,
_Out_writes_opt_(ulNameLength) LPSTR  pszVetoName,
_In_ ULONG  ulNameLength,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 7477 of file cfgmgr.c.

7484{
7485 LPWSTR lpLocalVetoName = NULL;
7486 CONFIGRET ret;
7487
7488 TRACE("CM_Request_Device_Eject_ExA(%lx %p %p %lu %lx %p)\n",
7489 dnDevInst, pVetoType, pszVetoName, ulNameLength, ulFlags, hMachine);
7490
7491 if (ulNameLength != 0)
7492 {
7493 if (pszVetoName == NULL)
7494 return CR_INVALID_POINTER;
7495
7496 lpLocalVetoName = HeapAlloc(GetProcessHeap(), 0, ulNameLength * sizeof(WCHAR));
7497 if (lpLocalVetoName == NULL)
7498 return CR_OUT_OF_MEMORY;
7499 }
7500
7501 ret = CM_Request_Device_Eject_ExW(dnDevInst, pVetoType, lpLocalVetoName,
7502 ulNameLength, ulFlags, hMachine);
7503 if (ret == CR_REMOVE_VETOED && ulNameLength != 0)
7504 {
7506 0,
7507 lpLocalVetoName,
7508 ulNameLength,
7509 pszVetoName,
7510 ulNameLength,
7511 NULL,
7512 NULL) == 0)
7513 ret = CR_FAILURE;
7514 }
7515
7516 HeapFree(GetProcessHeap(), 0, lpLocalVetoName);
7517
7518 return ret;
7519}
CONFIGRET WINAPI CM_Request_Device_Eject_ExW(_In_ DEVINST dnDevInst, _Out_opt_ PPNP_VETO_TYPE pVetoType, _Out_writes_opt_(ulNameLength) LPWSTR pszVetoName, _In_ ULONG ulNameLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:7527

Referenced by CM_Request_Device_EjectA().

◆ CM_Request_Device_Eject_ExW()

CONFIGRET WINAPI CM_Request_Device_Eject_ExW ( _In_ DEVINST  dnDevInst,
_Out_opt_ PPNP_VETO_TYPE  pVetoType,
_Out_writes_opt_(ulNameLength) LPWSTR  pszVetoName,
_In_ ULONG  ulNameLength,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 7527 of file cfgmgr.c.

7534{
7536 HSTRING_TABLE StringTable = NULL;
7537 LPWSTR lpDevInst;
7538 CONFIGRET ret;
7539
7540 TRACE("CM_Request_Device_Eject_ExW(%lx %p %p %lu %lx %p)\n",
7541 dnDevInst, pVetoType, pszVetoName, ulNameLength, ulFlags, hMachine);
7542
7543 if (dnDevInst == 0)
7544 return CR_INVALID_DEVNODE;
7545
7546 if (ulFlags != 0)
7547 return CR_INVALID_FLAG;
7548
7549 if (pszVetoName == NULL && ulNameLength != 0)
7550 return CR_INVALID_POINTER;
7551
7552 /* Windows 2003 SP2 ignores pszVetoName when ulNameLength is zero
7553 * and behaves like when pszVetoName is NULL */
7554 if (ulNameLength == 0)
7555 pszVetoName = NULL;
7556
7557 if (hMachine != NULL)
7558 {
7559 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
7560 if (BindingHandle == NULL)
7561 return CR_FAILURE;
7562
7563 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
7564 if (StringTable == 0)
7565 return CR_FAILURE;
7566 }
7567 else
7568 {
7569 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
7570 return CR_FAILURE;
7571 }
7572
7573 lpDevInst = pSetupStringTableStringFromId(StringTable, dnDevInst);
7574 if (lpDevInst == NULL)
7575 return CR_INVALID_DEVNODE;
7576
7578 {
7580 lpDevInst,
7581 pVetoType,
7582 pszVetoName,
7583 ulNameLength,
7584 ulFlags);
7585 }
7587 {
7589 }
7591
7592 return ret;
7593}
DWORD WINAPI PNP_RequestDeviceEject(handle_t hBinding, LPWSTR pszDeviceID, PPNP_VETO_TYPE pVetoType, LPWSTR pszVetoName, DWORD ulNameLength, DWORD ulFlags)
Definition: rpcserver.c:3806

Referenced by CM_Request_Device_Eject_ExA(), and CM_Request_Device_EjectW().

◆ CM_Request_Device_EjectA()

CONFIGRET WINAPI CM_Request_Device_EjectA ( _In_ DEVINST  dnDevInst,
_Out_opt_ PPNP_VETO_TYPE  pVetoType,
_Out_writes_opt_(ulNameLength) LPSTR  pszVetoName,
_In_ ULONG  ulNameLength,
_In_ ULONG  ulFlags 
)

Definition at line 7437 of file cfgmgr.c.

7443{
7444 TRACE("CM_Request_Device_EjectA(%lx %p %p %lu %lx)\n",
7445 dnDevInst, pVetoType, pszVetoName, ulNameLength, ulFlags);
7446
7447 return CM_Request_Device_Eject_ExA(dnDevInst, pVetoType, pszVetoName,
7448 ulNameLength, ulFlags, NULL);
7449}
CONFIGRET WINAPI CM_Request_Device_Eject_ExA(_In_ DEVINST dnDevInst, _Out_opt_ PPNP_VETO_TYPE pVetoType, _Out_writes_opt_(ulNameLength) LPSTR pszVetoName, _In_ ULONG ulNameLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:7477

◆ CM_Request_Device_EjectW()

CONFIGRET WINAPI CM_Request_Device_EjectW ( _In_ DEVINST  dnDevInst,
_Out_opt_ PPNP_VETO_TYPE  pVetoType,
_Out_writes_opt_(ulNameLength) LPWSTR  pszVetoName,
_In_ ULONG  ulNameLength,
_In_ ULONG  ulFlags 
)

Definition at line 7457 of file cfgmgr.c.

7463{
7464 TRACE("CM_Request_Device_EjectW(%lx %p %p %lu %lx)\n",
7465 dnDevInst, pVetoType, pszVetoName, ulNameLength, ulFlags);
7466
7467 return CM_Request_Device_Eject_ExW(dnDevInst, pVetoType, pszVetoName,
7468 ulNameLength, ulFlags, NULL);
7469}

Referenced by SafeRemoveDevice().

◆ CM_Request_Eject_PC()

CONFIGRET WINAPI CM_Request_Eject_PC ( VOID  )

Definition at line 7601 of file cfgmgr.c.

7602{
7603 TRACE("CM_Request_Eject_PC()\n");
7604
7606}
CONFIGRET WINAPI CM_Request_Eject_PC_Ex(_In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:7614

◆ CM_Request_Eject_PC_Ex()

CONFIGRET WINAPI CM_Request_Eject_PC_Ex ( _In_opt_ HMACHINE  hMachine)

Definition at line 7614 of file cfgmgr.c.

7616{
7618 CONFIGRET ret;
7619
7620 TRACE("CM_Request_Eject_PC_Ex(%p)\n", hMachine);
7621
7622 if (hMachine != NULL)
7623 {
7624 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
7625 if (BindingHandle == NULL)
7626 return CR_FAILURE;
7627 }
7628 else
7629 {
7631 return CR_FAILURE;
7632 }
7633
7635 {
7637 }
7639 {
7641 }
7643
7644 return ret;
7645}
DWORD WINAPI PNP_RequestEjectPC(handle_t hBinding)
Definition: rpcserver.c:3910

Referenced by CM_Request_Eject_PC().

◆ CM_Run_Detection()

CONFIGRET WINAPI CM_Run_Detection ( _In_ ULONG  ulFlags)

Definition at line 7653 of file cfgmgr.c.

7655{
7656 TRACE("CM_Run_Detection(%lx)\n", ulFlags);
7657
7658 return CM_Run_Detection_Ex(ulFlags, NULL);
7659}
CONFIGRET WINAPI CM_Run_Detection_Ex(_In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:7667

◆ CM_Run_Detection_Ex()

CONFIGRET WINAPI CM_Run_Detection_Ex ( _In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 7667 of file cfgmgr.c.

7670{
7672 CONFIGRET ret;
7673
7674 TRACE("CM_Run_Detection_Ex(%lx %p)\n",
7675 ulFlags, hMachine);
7676
7677 if (!pSetupIsUserAdmin())
7678 return CR_ACCESS_DENIED;
7679
7680 if (ulFlags & ~CM_DETECT_BITS)
7681 return CR_INVALID_FLAG;
7682
7683 if (hMachine != NULL)
7684 {
7685 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
7686 if (BindingHandle == NULL)
7687 return CR_FAILURE;
7688 }
7689 else
7690 {
7692 return CR_FAILURE;
7693 }
7694
7696 {
7698 ulFlags);
7699 }
7701 {
7703 }
7705
7706 return ret;
7707}
CONFIGRET WINAPI PNP_RunDetection(handle_t hBinding, DWORD ulFlags)
Definition: rpcserver.c:4679
#define CM_DETECT_BITS
Definition: cfgmgr32.h:646

Referenced by CM_Run_Detection().

◆ CM_Set_Class_Registry_PropertyA()

CONFIGRET WINAPI CM_Set_Class_Registry_PropertyA ( _In_ LPGUID  ClassGuid,
_In_ ULONG  ulProperty,
_In_reads_bytes_opt_(ulLength) PCVOID  Buffer,
_In_ ULONG  ulLength,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 7715 of file cfgmgr.c.

7722{
7723 FIXME("CM_Set_Class_Registry_PropertyA(%p %lx %p %lu %lx %p)\n",
7724 ClassGuid, ulProperty, Buffer, ulLength, ulFlags, hMachine);
7725
7727}

◆ CM_Set_Class_Registry_PropertyW()

CONFIGRET WINAPI CM_Set_Class_Registry_PropertyW ( _In_ LPGUID  ClassGuid,
_In_ ULONG  ulProperty,
_In_reads_bytes_opt_(ulLength) PCVOID  Buffer,
_In_ ULONG  ulLength,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 7735 of file cfgmgr.c.

7742{
7743 FIXME("CM_Set_Class_Registry_PropertyW(%p %lx %p %lu %lx %p)\n",
7744 ClassGuid, ulProperty, Buffer, ulLength, ulFlags, hMachine);
7745
7747}

◆ CM_Set_DevNode_Problem()

CONFIGRET WINAPI CM_Set_DevNode_Problem ( _In_ DEVINST  dnDevInst,
_In_ ULONG  ulProblem,
_In_ ULONG  ulFlags 
)

Definition at line 7755 of file cfgmgr.c.

7759{
7760 TRACE("CM_Set_DevNode_Problem(%lx %lx %lx)\n",
7761 dnDevInst, ulProblem, ulFlags);
7762
7763 return CM_Set_DevNode_Problem_Ex(dnDevInst, ulProblem, ulFlags, NULL);
7764}
CONFIGRET WINAPI CM_Set_DevNode_Problem_Ex(_In_ DEVINST dnDevInst, _In_ ULONG ulProblem, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:7772

Referenced by SetFailedInstall().

◆ CM_Set_DevNode_Problem_Ex()

CONFIGRET WINAPI CM_Set_DevNode_Problem_Ex ( _In_ DEVINST  dnDevInst,
_In_ ULONG  ulProblem,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 7772 of file cfgmgr.c.

7777{
7779 HSTRING_TABLE StringTable = NULL;
7780 LPWSTR lpDevInst;
7781 CONFIGRET ret;
7782
7783 TRACE("CM_Set_DevNode_Problem_Ex(%lx %lx %lx %p)\n",
7784 dnDevInst, ulProblem, ulFlags, hMachine);
7785
7786 if (dnDevInst == 0)
7787 return CR_INVALID_DEVNODE;
7788
7789 if (ulFlags & ~CM_SET_DEVNODE_PROBLEM_BITS)
7790 return CR_INVALID_FLAG;
7791
7792 if (hMachine != NULL)
7793 {
7794 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
7795 if (BindingHandle == NULL)
7796 return CR_FAILURE;
7797
7798 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
7799 if (StringTable == 0)
7800 return CR_FAILURE;
7801 }
7802 else
7803 {
7804 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
7805 return CR_FAILURE;
7806 }
7807
7808 lpDevInst = pSetupStringTableStringFromId(StringTable, dnDevInst);
7809 if (lpDevInst == NULL)
7810 return CR_INVALID_DEVNODE;
7811
7813 {
7815 lpDevInst,
7816 ulProblem,
7817 ulFlags);
7818 }
7820 {
7822 }
7824
7825 return ret;
7826}
DWORD WINAPI PNP_SetDeviceProblem(handle_t hBinding, LPWSTR pDeviceID, DWORD ulProblem, DWORD ulFlags)
Definition: rpcserver.c:3489
#define CM_SET_DEVNODE_PROBLEM_BITS
Definition: cfgmgr32.h:808

Referenced by CM_Set_DevNode_Problem().

◆ CM_Set_DevNode_Registry_Property_ExA()

CONFIGRET WINAPI CM_Set_DevNode_Registry_Property_ExA ( _In_ DEVINST  dnDevInst,
_In_ ULONG  ulProperty,
_In_reads_bytes_opt_(ulLength) PCVOID  Buffer,
_In_ ULONG  ulLength,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 7876 of file cfgmgr.c.

7883{
7886 ULONG ulType;
7887
7888 FIXME("CM_Set_DevNode_Registry_Property_ExA(%lx %lu %p %lx %lx %p)\n",
7889 dnDevInst, ulProperty, Buffer, ulLength, ulFlags, hMachine);
7890
7891 if (Buffer == NULL && ulLength != 0)
7892 return CR_INVALID_POINTER;
7893
7894 if (ulProperty < CM_DRP_MIN || ulProperty > CM_DRP_MAX)
7895 return CR_INVALID_PROPERTY;
7896
7897 if (Buffer == NULL)
7898 {
7900 ulProperty,
7901 NULL,
7902 0,
7903 ulFlags,
7904 hMachine);
7905 }
7906 else
7907 {
7908 /* Get property type */
7909 ulType = GetRegistryPropertyType(ulProperty);
7910
7911 /* Allocate buffer if needed */
7912 if (ulType == REG_SZ ||
7914 {
7915 lpBuffer = MyMalloc(ulLength * sizeof(WCHAR));
7916 if (lpBuffer == NULL)
7917 {
7919 }
7920 else
7921 {
7923 ulLength, lpBuffer, ulLength))
7924 {
7926 ret = CR_FAILURE;
7927 }
7928 else
7929 {
7931 ulProperty,
7932 lpBuffer,
7933 ulLength * sizeof(WCHAR),
7934 ulFlags,
7935 hMachine);
7937 }
7938 }
7939 }
7940 else
7941 {
7943 ulProperty,
7944 Buffer,
7945 ulLength,
7946 ulFlags,
7947 hMachine);
7948 }
7949
7951 }
7952
7953 return ret;
7954}
CONFIGRET WINAPI CM_Set_DevNode_Registry_Property_ExW(_In_ DEVINST dnDevInst, _In_ ULONG ulProperty, _In_reads_bytes_opt_(ulLength) PCVOID Buffer, _In_ ULONG ulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:7962
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
Definition: db.cpp:175
#define MultiByteToWideChar
Definition: compat.h:110

Referenced by CM_Set_DevNode_Registry_PropertyA().

◆ CM_Set_DevNode_Registry_Property_ExW()

CONFIGRET WINAPI CM_Set_DevNode_Registry_Property_ExW ( _In_ DEVINST  dnDevInst,
_In_ ULONG  ulProperty,
_In_reads_bytes_opt_(ulLength) PCVOID  Buffer,
_In_ ULONG  ulLength,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 7962 of file cfgmgr.c.

7969{
7971 HSTRING_TABLE StringTable = NULL;
7972 LPWSTR lpDevInst;
7973 ULONG ulType;
7974 CONFIGRET ret;
7975
7976 TRACE("CM_Set_DevNode_Registry_Property_ExW(%lx %lu %p %lx %lx %p)\n",
7977 dnDevInst, ulProperty, Buffer, ulLength, ulFlags, hMachine);
7978
7979 if (dnDevInst == 0)
7980 return CR_INVALID_DEVNODE;
7981
7982 if (ulProperty < CM_DRP_MIN || ulProperty > CM_DRP_MAX)
7983 return CR_INVALID_PROPERTY;
7984
7985 if (Buffer != NULL && ulLength == 0)
7986 return CR_INVALID_POINTER;
7987
7988 if (ulFlags != 0)
7989 return CR_INVALID_FLAG;
7990
7991 if (hMachine != NULL)
7992 {
7993 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
7994 if (BindingHandle == NULL)
7995 return CR_FAILURE;
7996
7997 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
7998 if (StringTable == 0)
7999 return CR_FAILURE;
8000 }
8001 else
8002 {
8003 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
8004 return CR_FAILURE;
8005 }
8006
8007 lpDevInst = pSetupStringTableStringFromId(StringTable, dnDevInst);
8008 if (lpDevInst == NULL)
8009 return CR_INVALID_DEVNODE;
8010
8011 /* Get property type */
8012 ulType = GetRegistryPropertyType(ulProperty);
8013
8015 {
8017 lpDevInst,
8018 ulProperty,
8019 ulType,
8020 (BYTE *)Buffer,
8021 ulLength,
8022 ulFlags);
8023 }
8025 {
8027 }
8029
8030 return ret;
8031}
DWORD WINAPI PNP_SetDeviceRegProp(handle_t hBinding, LPWSTR pDeviceId, DWORD ulProperty, DWORD ulDataType, BYTE *Buffer, PNP_PROP_SIZE ulLength, DWORD ulFlags)
Definition: rpcserver.c:2112
unsigned char BYTE
Definition: xxhash.c:193

Referenced by CM_Set_DevNode_Registry_Property_ExA(), and CM_Set_DevNode_Registry_PropertyW().

◆ CM_Set_DevNode_Registry_PropertyA()

CONFIGRET WINAPI CM_Set_DevNode_Registry_PropertyA ( _In_ DEVINST  dnDevInst,
_In_ ULONG  ulProperty,
_In_reads_bytes_opt_(ulLength) PCVOID  Buffer,
_In_ ULONG  ulLength,
_In_ ULONG  ulFlags 
)

Definition at line 7834 of file cfgmgr.c.

7840{
7841 TRACE("CM_Set_DevNode_Registry_PropertyA(%lx %lu %p %lx %lx)\n",
7842 dnDevInst, ulProperty, Buffer, ulLength, ulFlags);
7843
7844 return CM_Set_DevNode_Registry_Property_ExA(dnDevInst, ulProperty,
7845 Buffer, ulLength,
7846 ulFlags, NULL);
7847}
CONFIGRET WINAPI CM_Set_DevNode_Registry_Property_ExA(_In_ DEVINST dnDevInst, _In_ ULONG ulProperty, _In_reads_bytes_opt_(ulLength) PCVOID Buffer, _In_ ULONG ulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:7876

◆ CM_Set_DevNode_Registry_PropertyW()

CONFIGRET WINAPI CM_Set_DevNode_Registry_PropertyW ( _In_ DEVINST  dnDevInst,
_In_ ULONG  ulProperty,
_In_reads_bytes_opt_(ulLength) PCVOID  Buffer,
_In_ ULONG  ulLength,
_In_ ULONG  ulFlags 
)

Definition at line 7855 of file cfgmgr.c.

7861{
7862 TRACE("CM_Set_DevNode_Registry_PropertyW(%lx %lu %p %lx %lx)\n",
7863 dnDevInst, ulProperty, Buffer, ulLength, ulFlags);
7864
7865 return CM_Set_DevNode_Registry_Property_ExW(dnDevInst, ulProperty,
7866 Buffer, ulLength,
7867 ulFlags, NULL);
7868}

◆ CM_Set_HW_Prof()

CONFIGRET WINAPI CM_Set_HW_Prof ( _In_ ULONG  ulHardwareProfile,
_In_ ULONG  ulFlags 
)

Definition at line 8039 of file cfgmgr.c.

8042{
8043 TRACE("CM_Set_HW_Prof(%lu %lx)\n",
8044 ulHardwareProfile, ulFlags);
8045
8046 return CM_Set_HW_Prof_Ex(ulHardwareProfile, ulFlags, NULL);
8047}
CONFIGRET WINAPI CM_Set_HW_Prof_Ex(_In_ ULONG ulHardwareProfile, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:8055

◆ CM_Set_HW_Prof_Ex()

CONFIGRET WINAPI CM_Set_HW_Prof_Ex ( _In_ ULONG  ulHardwareProfile,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 8055 of file cfgmgr.c.

8059{
8061 CONFIGRET ret;
8062
8063 TRACE("CM_Set_HW_Prof_Ex(%lu %lx %p)\n",
8064 ulHardwareProfile, ulFlags, hMachine);
8065
8066 if (!pSetupIsUserAdmin())
8067 return CR_ACCESS_DENIED;
8068
8069 if (ulFlags != 0)
8070 return CR_INVALID_FLAG;
8071
8072 if (hMachine != NULL)
8073 {
8074 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
8075 if (BindingHandle == NULL)
8076 return CR_FAILURE;
8077 }
8078 else
8079 {
8081 return CR_FAILURE;
8082 }
8083
8085 {
8086 ret = PNP_SetHwProf(BindingHandle, ulHardwareProfile, ulFlags);
8087 }
8089 {
8091 }
8093
8094 return ret;
8095}
DWORD WINAPI PNP_SetHwProf(handle_t hBinding, DWORD ulHardwareProfile, DWORD ulFlags)
Definition: rpcserver.c:4635

Referenced by CM_Set_HW_Prof().

◆ CM_Set_HW_Prof_Flags_ExA()

CONFIGRET WINAPI CM_Set_HW_Prof_Flags_ExA ( _In_ DEVINSTID_A  szDevInstName,
_In_ ULONG  ulConfig,
_In_ ULONG  ulValue,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 8141 of file cfgmgr.c.

8147{
8148 DEVINSTID_W pszDevIdW = NULL;
8150
8151 TRACE("CM_Set_HW_Prof_Flags_ExA(%s %lu %lu %lx %p)\n",
8152 debugstr_a(szDevInstName), ulConfig, ulValue, ulFlags, hMachine);
8153
8154 if (szDevInstName != NULL)
8155 {
8156 if (pSetupCaptureAndConvertAnsiArg(szDevInstName, &pszDevIdW))
8157 return CR_INVALID_DEVICE_ID;
8158 }
8159
8160 ret = CM_Set_HW_Prof_Flags_ExW(pszDevIdW, ulConfig, ulValue,
8161 ulFlags, hMachine);
8162
8163 if (pszDevIdW != NULL)
8164 MyFree(pszDevIdW);
8165
8166 return ret;
8167}
CONFIGRET WINAPI CM_Set_HW_Prof_Flags_ExW(_In_ DEVINSTID_W szDevInstName, _In_ ULONG ulConfig, _In_ ULONG ulValue, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:8175

Referenced by CM_Set_HW_Prof_FlagsA().

◆ CM_Set_HW_Prof_Flags_ExW()

CONFIGRET WINAPI CM_Set_HW_Prof_Flags_ExW ( _In_ DEVINSTID_W  szDevInstName,
_In_ ULONG  ulConfig,
_In_ ULONG  ulValue,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 8175 of file cfgmgr.c.

8181{
8183 CONFIGRET ret;
8184
8185 FIXME("CM_Set_HW_Prof_Flags_ExW(%s %lu %lu %lx %p)\n",
8186 debugstr_w(szDevInstName), ulConfig, ulValue, ulFlags, hMachine);
8187
8188 if (szDevInstName == NULL)
8189 return CR_INVALID_POINTER;
8190
8191 if (ulFlags & ~ CM_SET_HW_PROF_FLAGS_BITS)
8192 return CR_INVALID_FLAG;
8193
8194 /* FIXME: Check whether szDevInstName is valid */
8195
8196 if (hMachine != NULL)
8197 {
8198 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
8199 if (BindingHandle == NULL)
8200 return CR_FAILURE;
8201 }
8202 else
8203 {
8205 return CR_FAILURE;
8206 }
8207
8209 {
8210 ret = PNP_HwProfFlags(BindingHandle, PNP_SET_HWPROFFLAGS, szDevInstName,
8211 ulConfig, &ulValue, NULL, NULL, 0, 0);
8212 }
8214 {
8216 }
8218
8219 return ret;
8220}
#define CM_SET_HW_PROF_FLAGS_BITS
Definition: cfgmgr32.h:816

Referenced by CM_Set_HW_Prof_Flags_ExA(), and CM_Set_HW_Prof_FlagsW().

◆ CM_Set_HW_Prof_FlagsA()

CONFIGRET WINAPI CM_Set_HW_Prof_FlagsA ( _In_ DEVINSTID_A  szDevInstName,
_In_ ULONG  ulConfig,
_In_ ULONG  ulValue,
_In_ ULONG  ulFlags 
)

Definition at line 8103 of file cfgmgr.c.

8108{
8109 TRACE("CM_Set_HW_Prof_FlagsA(%s %lu %lu %lx)\n",
8110 debugstr_a(szDevInstName), ulConfig, ulValue, ulFlags);
8111
8112 return CM_Set_HW_Prof_Flags_ExA(szDevInstName, ulConfig, ulValue,
8113 ulFlags, NULL);
8114}
CONFIGRET WINAPI CM_Set_HW_Prof_Flags_ExA(_In_ DEVINSTID_A szDevInstName, _In_ ULONG ulConfig, _In_ ULONG ulValue, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:8141

◆ CM_Set_HW_Prof_FlagsW()

CONFIGRET WINAPI CM_Set_HW_Prof_FlagsW ( _In_ DEVINSTID_W  szDevInstName,
_In_ ULONG  ulConfig,
_In_ ULONG  ulValue,
_In_ ULONG  ulFlags 
)

Definition at line 8122 of file cfgmgr.c.

8127{
8128 TRACE("CM_Set_HW_Prof_FlagsW(%s %lu %lu %lx)\n",
8129 debugstr_w(szDevInstName), ulConfig, ulValue, ulFlags);
8130
8131 return CM_Set_HW_Prof_Flags_ExW(szDevInstName, ulConfig, ulValue,
8132 ulFlags, NULL);
8133}

◆ CM_Setup_DevNode()

CONFIGRET WINAPI CM_Setup_DevNode ( _In_ DEVINST  dnDevInst,
_In_ ULONG  ulFlags 
)

Definition at line 8228 of file cfgmgr.c.

8231{
8232 TRACE("CM_Setup_DevNode(%lx %lx)\n",
8233 dnDevInst, ulFlags);
8234
8235 return CM_Setup_DevNode_Ex(dnDevInst, ulFlags, NULL);
8236}
CONFIGRET WINAPI CM_Setup_DevNode_Ex(_In_ DEVINST dnDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:8244

◆ CM_Setup_DevNode_Ex()

CONFIGRET WINAPI CM_Setup_DevNode_Ex ( _In_ DEVINST  dnDevInst,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 8244 of file cfgmgr.c.

8248{
8250 HSTRING_TABLE StringTable = NULL;
8251 LPWSTR lpDevInst;
8252 CONFIGRET ret;
8253
8254 FIXME("CM_Setup_DevNode_Ex(%lx %lx %p)\n",
8255 dnDevInst, ulFlags, hMachine);
8256
8257 if (!pSetupIsUserAdmin())
8258 return CR_ACCESS_DENIED;
8259
8260 if (dnDevInst == 0)
8261 return CR_INVALID_DEVNODE;
8262
8263 if (ulFlags & ~CM_SETUP_BITS)
8264 return CR_INVALID_FLAG;
8265
8266 if (hMachine != NULL)
8267 {
8268 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
8269 if (BindingHandle == NULL)
8270 return CR_FAILURE;
8271
8272 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
8273 if (StringTable == 0)
8274 return CR_FAILURE;
8275 }
8276 else
8277 {
8278 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
8279 return CR_FAILURE;
8280 }
8281
8282 lpDevInst = pSetupStringTableStringFromId(StringTable, dnDevInst);
8283 if (lpDevInst == NULL)
8284 return CR_INVALID_DEVNODE;
8285
8287 {
8289 PNP_DEVINST_SETUP,
8290 ulFlags,
8291 lpDevInst,
8292 NULL);
8293 }
8295 {
8297 }
8299
8300 return ret;
8301}
#define CM_SETUP_BITS
Definition: cfgmgr32.h:828

Referenced by CM_Setup_DevNode().

◆ CM_Test_Range_Available()

CONFIGRET WINAPI CM_Test_Range_Available ( _In_ DWORDLONG  ullStartValue,
_In_ DWORDLONG  ullEndValue,
_In_ RANGE_LIST  rlh,
_In_ ULONG  ulFlags 
)

Definition at line 8309 of file cfgmgr.c.

8314{
8315 FIXME("CM_Test_Range_Available(%I64u %I64u %p %lx)\n",
8316 ullStartValue, ullEndValue, rlh, ulFlags);
8318}

◆ CM_Uninstall_DevNode()

CONFIGRET WINAPI CM_Uninstall_DevNode ( _In_ DEVINST  dnPhantom,
_In_ ULONG  ulFlags 
)

Definition at line 8326 of file cfgmgr.c.

8329{
8330 TRACE("CM_Uninstall_DevNode(%lx %lx)\n",
8331 dnPhantom, ulFlags);
8332
8333 return CM_Uninstall_DevNode_Ex(dnPhantom, ulFlags, NULL);
8334}
CONFIGRET WINAPI CM_Uninstall_DevNode_Ex(_In_ DEVINST dnPhantom, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:8342

◆ CM_Uninstall_DevNode_Ex()

CONFIGRET WINAPI CM_Uninstall_DevNode_Ex ( _In_ DEVINST  dnPhantom,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 8342 of file cfgmgr.c.

8346{
8348 HSTRING_TABLE StringTable = NULL;
8349 LPWSTR lpDevInst;
8350 CONFIGRET ret;
8351
8352 TRACE("CM_Uninstall_DevNode_Ex(%lx %lx %p)\n",
8353 dnPhantom, ulFlags, hMachine);
8354
8355 if (dnPhantom == 0)
8356 return CR_INVALID_DEVNODE;
8357
8358 if (ulFlags != 0)
8359 return CR_INVALID_FLAG;
8360
8361 if (hMachine != NULL)
8362 {
8363 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
8364 if (BindingHandle == NULL)
8365 return CR_FAILURE;
8366
8367 StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
8368 if (StringTable == 0)
8369 return CR_FAILURE;
8370 }
8371 else
8372 {
8373 if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
8374 return CR_FAILURE;
8375 }
8376
8377 lpDevInst = pSetupStringTableStringFromId(StringTable, dnPhantom);
8378 if (lpDevInst == NULL)
8379 return CR_INVALID_DEVNODE;
8380
8382 {
8384 lpDevInst,
8385 ulFlags);
8386 }
8388 {
8390 }
8392
8393 return ret;
8394}
DWORD WINAPI PNP_UninstallDevInst(handle_t hBinding, LPWSTR pDeviceID, DWORD ulFlags)
Definition: rpcserver.c:3572

Referenced by CM_Uninstall_DevNode().

◆ CM_Unregister_Device_Interface_ExA()

CONFIGRET WINAPI CM_Unregister_Device_Interface_ExA ( _In_ LPCSTR  pszDeviceInterface,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 8436 of file cfgmgr.c.

8440{
8441 LPWSTR pszDeviceInterfaceW = NULL;
8442 CONFIGRET ret;
8443
8444 TRACE("CM_Unregister_Device_Interface_ExA(%s %lx %p)\n",
8445 debugstr_a(pszDeviceInterface), ulFlags, hMachine);
8446
8447 if (pszDeviceInterface == NULL)
8448 return CR_INVALID_POINTER;
8449
8450 if (pSetupCaptureAndConvertAnsiArg(pszDeviceInterface, &pszDeviceInterfaceW))
8451 return CR_INVALID_DATA;
8452
8453 ret = CM_Unregister_Device_Interface_ExW(pszDeviceInterfaceW,
8454 ulFlags, hMachine);
8455
8456 if (pszDeviceInterfaceW != NULL)
8457 MyFree(pszDeviceInterfaceW);
8458
8459 return ret;
8460}
CONFIGRET WINAPI CM_Unregister_Device_Interface_ExW(_In_ LPCWSTR pszDeviceInterface, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:8468

Referenced by CM_Unregister_Device_InterfaceA().

◆ CM_Unregister_Device_Interface_ExW()

CONFIGRET WINAPI CM_Unregister_Device_Interface_ExW ( _In_ LPCWSTR  pszDeviceInterface,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 8468 of file cfgmgr.c.

8472{
8474 CONFIGRET ret;
8475
8476 TRACE("CM_Unregister_Device_Interface_ExW(%s %lx %p)\n",
8477 debugstr_w(pszDeviceInterface), ulFlags, hMachine);
8478
8479 if (pszDeviceInterface == NULL)
8480 return CR_INVALID_POINTER;
8481
8482 if (ulFlags != 0)
8483 return CR_INVALID_FLAG;
8484
8485 if (hMachine != NULL)
8486 {
8487 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
8488 if (BindingHandle == NULL)
8489 return CR_FAILURE;
8490 }
8491 else
8492 {
8494 return CR_FAILURE;
8495 }
8496
8498 {
8500 (LPWSTR)pszDeviceInterface,
8501 ulFlags);
8502 }
8504 {
8506 }
8508
8509 return ret;
8510}
DWORD WINAPI PNP_UnregisterDeviceClassAssociation(handle_t hBinding, LPWSTR pszInterfaceDevice, DWORD ulFlags)
Definition: rpcserver.c:2714

Referenced by CM_Unregister_Device_Interface_ExA(), and CM_Unregister_Device_InterfaceW().

◆ CM_Unregister_Device_InterfaceA()

CONFIGRET WINAPI CM_Unregister_Device_InterfaceA ( _In_ LPCSTR  pszDeviceInterface,
_In_ ULONG  ulFlags 
)

Definition at line 8402 of file cfgmgr.c.

8405{
8406 TRACE("CM_Unregister_Device_InterfaceA(%s %lx)\n",
8407 debugstr_a(pszDeviceInterface), ulFlags);
8408
8409 return CM_Unregister_Device_Interface_ExA(pszDeviceInterface,
8410 ulFlags, NULL);
8411}
CONFIGRET WINAPI CM_Unregister_Device_Interface_ExA(_In_ LPCSTR pszDeviceInterface, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:8436

◆ CM_Unregister_Device_InterfaceW()

CONFIGRET WINAPI CM_Unregister_Device_InterfaceW ( _In_ LPCWSTR  pszDeviceInterface,
_In_ ULONG  ulFlags 
)

Definition at line 8419 of file cfgmgr.c.

8422{
8423 TRACE("CM_Unregister_Device_InterfaceW(%s %lx)\n",
8424 debugstr_w(pszDeviceInterface), ulFlags);
8425
8426 return CM_Unregister_Device_Interface_ExW(pszDeviceInterface,
8427 ulFlags, NULL);
8428}

◆ CMP_GetBlockedDriverInfo()

CONFIGRET WINAPI CMP_GetBlockedDriverInfo ( _Out_opt_ LPWSTR  pszNames,
_Inout_ PULONG  pulLength,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 466 of file cfgmgr.c.

471{
473 ULONG ulTransferLength;
475
476 TRACE("CMP_GetBlockedDriverInfo(%p %p %lx %p)\n",
477 pszNames, pulLength, ulFlags, hMachine);
478
479 if (hMachine != NULL)
480 {
481 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
482 if (BindingHandle == NULL)
483 return CR_FAILURE;
484 }
485 else
486 {
488 return CR_FAILURE;
489 }
490
491 ulTransferLength = *pulLength;
492
494 {
496 (PBYTE)pszNames,
497 &ulTransferLength,
498 pulLength,
499 ulFlags);
500 }
502 {
504 }
506
507 return ret;
508}
DWORD WINAPI PNP_GetBlockedDriverInfo(handle_t hBinding, BYTE *Buffer, PNP_RPC_BUFFER_SIZE *pulTransferLen, PNP_RPC_BUFFER_SIZE *pulLength, DWORD ulFlags)
Definition: rpcserver.c:4920

◆ CMP_GetServerSideDeviceInstallFlags()

CONFIGRET WINAPI CMP_GetServerSideDeviceInstallFlags ( _Out_ PULONG  pulSSDIFlags,
_In_ ULONG  ulFlags,
_In_opt_ HMACHINE  hMachine 
)

Definition at line 516 of file cfgmgr.c.

520{
523
524 TRACE("CMP_GetServerSideDeviceInstallFlags(%p %lx %p)\n",
525 pulSSDIFlags, ulFlags, hMachine);
526
527 if (pulSSDIFlags == NULL)
528 return CR_INVALID_POINTER;
529
530 if (ulFlags != 0)
531 return CR_INVALID_FLAG;
532
533 if (hMachine != NULL)
534 {
535 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
536 if (BindingHandle == NULL)
537 return CR_FAILURE;
538 }
539 else
540 {
542 return CR_FAILURE;
543 }
544
546 {
548 pulSSDIFlags,
549 ulFlags);
550 }
552 {
554 }
556
557 return ret;
558}
DWORD WINAPI PNP_GetServerSideDeviceInstallFlags(handle_t hBinding, DWORD *pulSSDIFlags, DWORD ulFlags)
Definition: rpcserver.c:4935

◆ CMP_Init_Detection()

CONFIGRET WINAPI CMP_Init_Detection ( _In_ ULONG  ulMagic)

Definition at line 566 of file cfgmgr.c.

568{
571
572 TRACE("CMP_Init_Detection(%lu)\n", ulMagic);
573
574 if (ulMagic != CMP_MAGIC)
575 return CR_INVALID_DATA;
576
578 return CR_FAILURE;
579
581 {
583 }
585 {
587 }
589
590 return ret;
591}
DWORD WINAPI PNP_InitDetection(handle_t hBinding)
Definition: rpcserver.c:697
#define CMP_MAGIC
Definition: userinit.c:29

◆ CMP_RegisterNotification()

CONFIGRET WINAPI CMP_RegisterNotification ( _In_ HANDLE  hRecipient,
_In_ LPVOID  lpvNotificationFilter,
_In_ ULONG  ulFlags,
_Out_ PHDEVNOTIFY  phDevNotify 
)

Definition at line 599 of file cfgmgr.c.

604{
606 PNOTIFY_DATA pNotifyData;
607 WCHAR szNameBuffer[256];
608 INT nLength;
609 DWORD ulUnknown9 = 0;
610 DWORD dwError;
612
613 FIXME("CMP_RegisterNotification(%p %p %lu %p)\n",
614 hRecipient, lpvNotificationFilter, ulFlags, phDevNotify);
615
616 if ((hRecipient == NULL) ||
617 (lpvNotificationFilter == NULL) ||
618 (phDevNotify == NULL))
619 return CR_INVALID_POINTER;
620
621 if (ulFlags & ~0x7)
622 return CR_INVALID_FLAG;
623
624 if (((PDEV_BROADCAST_HDR)lpvNotificationFilter)->dbch_size < sizeof(DEV_BROADCAST_HDR))
625 return CR_INVALID_DATA;
626
628 return CR_FAILURE;
629
630 pNotifyData = HeapAlloc(GetProcessHeap(),
632 sizeof(NOTIFY_DATA));
633 if (pNotifyData == NULL)
634 return CR_OUT_OF_MEMORY;
635
636 pNotifyData->ulMagic = NOTIFY_MAGIC;
637 pNotifyData->hNotifyHandle = NULL;
638
639 ZeroMemory(szNameBuffer, sizeof(szNameBuffer));
640
641 if ((ulFlags & DEVICE_NOTIFY_SERVICE_HANDLE) == DEVICE_NOTIFY_WINDOW_HANDLE)
642 {
643 FIXME("Register a window\n");
644
645 nLength = GetWindowTextW((HWND)hRecipient,
646 szNameBuffer,
647 ARRAYSIZE(szNameBuffer));
648 if (nLength == 0)
649 {
650 szNameBuffer[0] = UNICODE_NULL;
651 }
652
653 FIXME("Register window: %S\n", szNameBuffer);
654 }
655 else if ((ulFlags & DEVICE_NOTIFY_SERVICE_HANDLE) == DEVICE_NOTIFY_SERVICE_HANDLE)
656 {
657 FIXME("Register a service\n");
658
659 dwError = I_ScPnPGetServiceName((SERVICE_STATUS_HANDLE)hRecipient,
660 szNameBuffer,
661 ARRAYSIZE(szNameBuffer));
662 if (dwError != ERROR_SUCCESS)
663 {
664 HeapFree(GetProcessHeap(), 0, pNotifyData);
665 return CR_INVALID_DATA;
666 }
667
668 FIXME("Register service: %S\n", szNameBuffer);
669 }
670
672 {
674 (DWORD_PTR)hRecipient,
675 szNameBuffer,
676 (BYTE*)lpvNotificationFilter,
677 ((DEV_BROADCAST_HDR*)lpvNotificationFilter)->dbch_size,
678 ulFlags,
679 &pNotifyData->hNotifyHandle,
681 &ulUnknown9); /* ??? */
682 }
684 {
686 }
688
689 if (ret == CR_SUCCESS)
690 {
691 TRACE("hNotifyHandle: %p\n", pNotifyData->hNotifyHandle);
692 *phDevNotify = (HDEVNOTIFY)pNotifyData;
693 }
694 else
695 {
696 HeapFree(GetProcessHeap(), 0, pNotifyData);
697
698 *phDevNotify = (HDEVNOTIFY)NULL;
699 }
700
701 return ret;
702}
static SERVICE_STATUS_HANDLE(WINAPI *pRegisterServiceCtrlHandlerExA)(LPCSTR
DWORD WINAPI PNP_RegisterNotification(handle_t hBinding, DWORD_PTR hRecipient, LPWSTR pszName, BYTE *pNotificationFilter, DWORD ulNotificationFilterSize, DWORD ulFlags, PNP_NOTIFY_HANDLE *pNotifyHandle, DWORD ulProcessId, DWORD *pulUnknown9)
Definition: rpcserver.c:4690
#define NOTIFY_MAGIC
Definition: cfgmgr.c:80
DWORD WINAPI I_ScPnPGetServiceName(IN SERVICE_STATUS_HANDLE hServiceStatus, OUT LPWSTR lpServiceName, IN DWORD cchServiceName)
Definition: sctrl.c:869
#define ARRAYSIZE(array)
Definition: filtermapper.c:47
ULONG ulMagic
Definition: cfgmgr.c:76
PVOID hNotifyHandle
Definition: cfgmgr.c:77
uint32_t DWORD_PTR
Definition: typedefs.h:65
int32_t INT
Definition: typedefs.h:58
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
Definition: window.c:1412
#define ZeroMemory
Definition: winbase.h:1712
DWORD WINAPI GetCurrentProcessId(void)
Definition: proc.c:1158
_In_ DWORD nLength
Definition: wincon.h:473

◆ CMP_Report_LogOn()

CONFIGRET WINAPI CMP_Report_LogOn ( _In_ DWORD  dwMagic,
_In_ DWORD  dwProcessId 
)

Definition at line 710 of file cfgmgr.c.

713{
716 BOOL bAdmin;
717 DWORD i;
718
719 TRACE("CMP_Report_LogOn(%lu %lu)\n", dwMagic, dwProcessId);
720
721 if (dwMagic != CMP_MAGIC)
722 return CR_INVALID_DATA;
723
725 return CR_FAILURE;
726
727 bAdmin = pSetupIsUserAdmin();
728
729 for (i = 0; i < 30; i++)
730 {
732 {
734 bAdmin,
735 dwProcessId);
736 }
738 {
740 }
742
743 if (ret == CR_SUCCESS)
744 break;
745
746 Sleep(5000);
747 }
748
749 return ret;
750}
DWORD WINAPI PNP_ReportLogOn(handle_t hBinding, BOOL Admin, DWORD ProcessId)
Definition: rpcserver.c:712
unsigned int BOOL
Definition: ntddk_ex.h:94
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
Definition: synch.c:790

Referenced by NotifyLogon().

◆ CMP_UnregisterNotification()

CONFIGRET WINAPI CMP_UnregisterNotification ( _In_ HDEVNOTIFY  hDevNotify)

Definition at line 758 of file cfgmgr.c.

760{
762 PNOTIFY_DATA pNotifyData;
764
765 TRACE("CMP_UnregisterNotification(%p)\n", hDevNotify);
766
767 pNotifyData = (PNOTIFY_DATA)hDevNotify;
768
769 if ((pNotifyData == NULL) ||
770 (pNotifyData->ulMagic != NOTIFY_MAGIC))
771 return CR_INVALID_POINTER;
772
774 return CR_FAILURE;
775
777 {
779 &pNotifyData->hNotifyHandle);
780 }
782 {
784 }
786
787 if (ret == CR_SUCCESS)
788 {
789 pNotifyData->hNotifyHandle = NULL;
790 HeapFree(GetProcessHeap(), 0, pNotifyData);
791 }
792
793 return ret;
794}
DWORD WINAPI PNP_UnregisterNotification(handle_t hBinding, PNP_NOTIFY_HANDLE *pNotifyHandle)
Definition: rpcserver.c:4781
struct _NOTIFY_DATA * PNOTIFY_DATA

◆ CMP_WaitNoPendingInstallEvents()

DWORD WINAPI CMP_WaitNoPendingInstallEvents ( _In_ DWORD  dwTimeout)

Definition at line 802 of file cfgmgr.c.

804{
806 DWORD ret;
807
808 TRACE("CMP_WaitNoPendingInstallEvents(%lu)\n", dwTimeout);
809
810 hEvent = OpenEventW(SYNCHRONIZE, FALSE, L"Global\\PnP_No_Pending_Install_Events");
811 if (hEvent == NULL)
812 return WAIT_FAILED;
813
816 return ret;
817}
static HANDLE hEvent
Definition: comm.c:54
#define SYNCHRONIZE
Definition: nt_native.h:61
HANDLE WINAPI DECLSPEC_HOTPATCH OpenEventW(IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN LPCWSTR lpName)
Definition: synch.c:682
#define WAIT_FAILED
Definition: winbase.h:413
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD dwTimeout
Definition: wincrypt.h:6081

Referenced by CommonInstall().

◆ CMP_WaitServicesAvailable()

CONFIGRET WINAPI CMP_WaitServicesAvailable ( _In_opt_ HMACHINE  hMachine)

Definition at line 825 of file cfgmgr.c.

827{
831
832 TRACE("CMP_WaitServicesAvailable(%p)\n", hMachine);
833
834 if (hMachine != NULL)
835 {
836 BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
837 if (BindingHandle == NULL)
838 return CR_FAILURE;
839 }
840 else
841 {
843 return CR_FAILURE;
844 }
845
847 {
849 }
851 {
853 }
855
856 return ret;
857}

◆ GetDeviceInstanceKeyPath()

static CONFIGRET GetDeviceInstanceKeyPath ( _In_ RPC_BINDING_HANDLE  BindingHandle,
_In_ PWSTR  pszDeviceInst,
_Out_ PWSTR  pszKeyPath,
_Out_ PWSTR  pszInstancePath,
_In_ ULONG  ulHardwareProfile,
_In_ ULONG  ulFlags 
)
static

Definition at line 224 of file cfgmgr.c.

231{
232 PWSTR pszBuffer = NULL;
233 ULONG ulType = 0;
234 ULONG ulTransferLength, ulLength;
236
237 TRACE("GetDeviceInstanceKeyPath()\n");
238
239 /* Allocate a buffer for the device id */
240 pszBuffer = MyMalloc(300 * sizeof(WCHAR));
241 if (pszBuffer == NULL)
242 {
243 ERR("MyMalloc() failed\n");
244 return CR_OUT_OF_MEMORY;
245 }
246
247 if (ulFlags & CM_REGISTRY_SOFTWARE)
248 {
249 /* Software Key Path */
250
251 ulTransferLength = 300 * sizeof(WCHAR);
252 ulLength = 300 * sizeof(WCHAR);
253
255 {
257 pszDeviceInst,
259 &ulType,
260 (PVOID)pszBuffer,
261 &ulTransferLength,
262 &ulLength,
263 0);
264 }
266 {
268 }
270
271 if (ret != CR_SUCCESS)
272 {
274 {
276 pszDeviceInst,
277 (PVOID)pszBuffer,
278 300);
279 }
281 {
283 }
285
286 if (ret != CR_SUCCESS)
287 {
288 goto done;
289 }
290 }
291
292 TRACE("szBuffer: %S\n", pszBuffer);
293
294 SplitDeviceInstanceId(pszBuffer,
295 pszBuffer,
296 pszInstancePath);
297
298 TRACE("szBuffer: %S\n", pszBuffer);
299
300 if (ulFlags & CM_REGISTRY_CONFIG)
301 {
302 if (ulHardwareProfile == 0)
303 {
304 wsprintfW(pszKeyPath,
305 L"%s\\%s\\%s\\%s",
306 L"System\\CurrentControlSet\\Hardware Profiles",
307 L"Current",
308 L"System\\CurrentControlSet\\Control\\Class",
309 pszBuffer);
310 }
311 else
312 {
313 wsprintfW(pszKeyPath,
314 L"%s\\%04lu\\%s\\%s",
315 L"System\\CurrentControlSet\\Hardware Profiles",
316 ulHardwareProfile,
317 L"System\\CurrentControlSet\\Control\\Class",
318 pszBuffer);
319 }
320 }
321 else
322 {
323 wsprintfW(pszKeyPath,
324 L"%s\\%s",
325 L"System\\CurrentControlSet\\Control\\Class",
326 pszBuffer);
327 }
328 }
329 else
330 {
331 /* Hardware Key Path */
332
333 if (ulFlags & CM_REGISTRY_CONFIG)
334 {
335 SplitDeviceInstanceId(pszDeviceInst,
336 pszBuffer,
337 pszInstancePath);
338
339 if (ulHardwareProfile == 0)
340 {
341 wsprintfW(pszKeyPath,
342 L"%s\\%s\\%s\\%s",
343 L"System\\CurrentControlSet\\Hardware Profiles",
344 L"Current",
345 L"System\\CurrentControlSet\\Enum",
346 pszBuffer);
347 }
348 else
349 {
350 wsprintfW(pszKeyPath,
351 L"%s\\%04lu\\%s\\%s",
352 L"System\\CurrentControlSet\\Hardware Profiles",
353 ulHardwareProfile,
354 L"System\\CurrentControlSet\\Enum",
355 pszBuffer);
356 }
357 }
358 else if (ulFlags & CM_REGISTRY_USER)
359 {
360 wsprintfW(pszKeyPath,
361 L"%s\\%s",
362 L"System\\CurrentControlSet\\Enum",
363 pszDeviceInst);
364
365 wcscpy(pszInstancePath,
366 L"Device Parameters");
367 }
368 else
369 {
370 SplitDeviceInstanceId(pszDeviceInst,
371 pszBuffer,
372 pszInstancePath);
373
374 wsprintfW(pszKeyPath,
375 L"%s\\%s",
376 L"System\\CurrentControlSet\\Enum",
377 pszBuffer);
378 }
379 }
380
381done:
382 if (pszBuffer != NULL)
383 MyFree(pszBuffer);
384
385 return ret;
386}
DWORD WINAPI PNP_GetClassInstance(handle_t hBinding, LPWSTR pDeviceId, LPWSTR pszClassInstance, PNP_RPC_STRING_LEN ulLength)
Definition: rpcserver.c:2254
#define ERR(fmt,...)
Definition: debug.h:110
#define CM_DRP_DRIVER
Definition: cfgmgr32.h:685
#define CM_REGISTRY_SOFTWARE
Definition: cfgmgr32.h:801
static VOID SplitDeviceInstanceId(_In_ PWSTR pszDeviceInstanceId, _Out_ PWSTR pszDeviceId, _Out_ PWSTR pszInstanceId)
Definition: cfgmgr.c:198
int WINAPIV wsprintfW(_Out_ LPWSTR, _In_ _Printf_format_string_ LPCWSTR,...)

Referenced by CM_Delete_DevNode_Key_Ex(), and CM_Open_DevNode_Key_Ex().

◆ GetRegistryPropertyType()

static ULONG GetRegistryPropertyType ( _In_ ULONG  ulProperty)
static

Definition at line 145 of file cfgmgr.c.

147{
148 switch (ulProperty)
149 {
151 case CM_DRP_SERVICE:
152 case CM_DRP_CLASS:
153 case CM_DRP_CLASSGUID:
154 case CM_DRP_DRIVER:
155 case CM_DRP_MFG:
162 return REG_SZ;
163
168 return REG_MULTI_SZ;
169
172 case CM_DRP_UI_NUMBER:
174 case CM_DRP_BUSNUMBER:
175 case CM_DRP_DEVTYPE:
176 case CM_DRP_EXCLUSIVE:
178 case CM_DRP_ADDRESS:
183 return REG_DWORD;
184
186 case CM_DRP_SECURITY:
188 default:
189 return REG_BINARY;
190 }
191
192 return REG_NONE;
193}
#define CM_DRP_BUSNUMBER
Definition: cfgmgr32.h:703
#define CM_DRP_LOCATION_INFORMATION
Definition: cfgmgr32.h:689
#define CM_DRP_CONFIGFLAGS
Definition: cfgmgr32.h:686
#define CM_DRP_SECURITY_SDS
Definition: cfgmgr32.h:707
#define CM_DRP_REMOVAL_POLICY
Definition: cfgmgr32.h:719
#define CM_DRP_ENUMERATOR_NAME
Definition: cfgmgr32.h:704
#define CM_DRP_REMOVAL_POLICY_HW_DEFAULT
Definition: cfgmgr32.h:720
#define CM_DRP_BUSTYPEGUID
Definition: cfgmgr32.h:701
#define CM_DRP_LOWERFILTERS
Definition: cfgmgr32.h:697
#define CM_DRP_SECURITY
Definition: cfgmgr32.h:705
#define CM_DRP_MFG
Definition: cfgmgr32.h:687
#define CM_DRP_EXCLUSIVE
Definition: cfgmgr32.h:711
#define CM_DRP_REMOVAL_POLICY_OVERRIDE
Definition: cfgmgr32.h:721
#define CM_DRP_CAPABILITIES
Definition: cfgmgr32.h:691
#define CM_DRP_UPPERFILTERS
Definition: cfgmgr32.h:693
#define CM_DRP_CLASSGUID
Definition: cfgmgr32.h:684
#define CM_DRP_COMPATIBLEIDS
Definition: cfgmgr32.h:678
#define CM_DRP_DEVICEDESC
Definition: cfgmgr32.h:676
#define CM_DRP_CLASS
Definition: cfgmgr32.h:683
#define CM_DRP_LEGACYBUSTYPE
Definition: cfgmgr32.h:702
#define CM_DRP_PHYSICAL_DEVICE_OBJECT_NAME
Definition: cfgmgr32.h:690
#define CM_DRP_DEVTYPE
Definition: cfgmgr32.h:709
#define CM_DRP_FRIENDLYNAME
Definition: cfgmgr32.h:688
#define CM_DRP_INSTALL_STATE
Definition: cfgmgr32.h:722
#define CM_DRP_UI_NUMBER
Definition: cfgmgr32.h:692
#define CM_DRP_CHARACTERISTICS
Definition: cfgmgr32.h:713
#define CM_DRP_UI_NUMBER_DESC_FORMAT
Definition: cfgmgr32.h:716
#define CM_DRP_ADDRESS
Definition: cfgmgr32.h:715
#define CM_DRP_DEVICE_POWER_DATA
Definition: cfgmgr32.h:718
#define CM_DRP_HARDWAREID
Definition: cfgmgr32.h:677
#define CM_DRP_SERVICE
Definition: cfgmgr32.h:680
#define REG_BINARY
Definition: nt_native.h:1496
#define REG_DWORD
Definition: sdbapi.c:596

Referenced by CM_Get_Class_Registry_PropertyA(), CM_Set_DevNode_Registry_Property_ExA(), and CM_Set_DevNode_Registry_Property_ExW().

◆ GuidToString()

static BOOL GuidToString ( _In_ LPGUID  Guid,
_Out_ LPWSTR  String 
)
static

Definition at line 113 of file cfgmgr.c.

116{
117 LPWSTR lpString;
118
119 if (UuidToStringW(Guid, &lpString) != RPC_S_OK)
120 return FALSE;
121
122 lstrcpyW(&String[1], lpString);
123
124 String[0] = '{';
125 String[MAX_GUID_STRING_LEN - 2] = '}';
127
128 RpcStringFreeW(&lpString);
129
130 return TRUE;
131}
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFSTRING String
Definition: wdfdevice.h:2433
_Must_inspect_result_ _In_ WDFOBJECT _In_ CONST GUID * Guid
Definition: wdfobject.h:762

Referenced by CM_Delete_Class_Key_Ex(), CM_Get_Class_Key_Name_ExW(), and CM_Get_Class_Name_ExW().

◆ I_ScPnPGetServiceName()

DWORD WINAPI I_ScPnPGetServiceName ( IN SERVICE_STATUS_HANDLE  hServiceStatus,
OUT LPWSTR  lpServiceName,
IN DWORD  cchServiceName 
)

Definition at line 869 of file sctrl.c.

872{
873 DWORD i;
874
875 TRACE("I_ScPnPGetServiceName(%lu %p %lu)\n",
876 hServiceStatus, lpServiceName, cchServiceName);
877
878 for (i = 0; i < dwActiveServiceCount; i++)
879 {
881 {
882 wcscpy(lpServiceName, lpActiveServices[i].ServiceName.Buffer);
883 return ERROR_SUCCESS;
884 }
885 }
886
888}
static WCHAR ServiceName[]
Definition: browser.c:19
static DWORD dwActiveServiceCount
Definition: sctrl.c:60
static PACTIVE_SERVICE lpActiveServices
Definition: sctrl.c:61
SERVICE_STATUS_HANDLE hServiceStatus
Definition: main.c:10
#define ERROR_SERVICE_NOT_IN_EXE
Definition: winerror.h:634

Referenced by CMP_RegisterNotification().

◆ IsValidConflictData()

BOOL IsValidConflictData ( _In_opt_ PCONFLICT_DATA  pConflictData)

Definition at line 438 of file cfgmgr.c.

440{
441 BOOL bValid = TRUE;
442
443 if (pConflictData == NULL)
444 return FALSE;
445
447 {
448 if (pConflictData->ulMagic != CONFLICT_MAGIC)
449 bValid = FALSE;
450 }
452 {
453 bValid = FALSE;
454 }
455 _SEH2_END;
456
457 return bValid;
458}
#define _SEH2_END
Definition: filesup.c:22
#define _SEH2_TRY
Definition: filesup.c:19
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:34

Referenced by CM_Free_Resource_Conflict_Handle(), and CM_Get_Resource_Conflict_Count().

◆ IsValidLogConf()

BOOL IsValidLogConf ( _In_opt_ PLOG_CONF_INFO  pLogConfInfo)

Definition at line 414 of file cfgmgr.c.

416{
417 BOOL bValid = TRUE;
418
419 if (pLogConfInfo == NULL)
420 return FALSE;
421
423 {
424 if (pLogConfInfo->ulMagic != LOG_CONF_MAGIC)
425 bValid = FALSE;
426 }
428 {
429 bValid = FALSE;
430 }
431 _SEH2_END;
432
433 return bValid;
434}

Referenced by CM_Free_Log_Conf_Ex(), CM_Free_Log_Conf_Handle(), CM_Get_Log_Conf_Priority_Ex(), CM_Get_Next_Log_Conf_Ex(), and CM_Get_Next_Res_Des_Ex().

◆ IsValidRangeList()

BOOL IsValidRangeList ( _In_opt_ PINTERNAL_RANGE_LIST  pRangeList)

Definition at line 390 of file cfgmgr.c.

392{
393 BOOL bValid = TRUE;
394
395 if (pRangeList == NULL)
396 return FALSE;
397
399 {
400 if (pRangeList->ulMagic != RANGE_LIST_MAGIC)
401 bValid = FALSE;
402 }
404 {
405 bValid = FALSE;
406 }
407 _SEH2_END;
408
409 return bValid;
410}

Referenced by CM_Add_Range(), CM_First_Range(), and CM_Free_Range_List().

◆ RpcStatusToCmStatus()

static CONFIGRET RpcStatusToCmStatus ( _In_ RPC_STATUS  Status)
static

Definition at line 136 of file cfgmgr.c.

138{
139 return CR_FAILURE;
140}

Referenced by CM_Add_Empty_Log_Conf_Ex(), CM_Add_ID_ExW(), CM_Create_DevNode_ExW(), CM_Delete_Class_Key_Ex(), CM_Delete_DevNode_Key_Ex(), CM_Disable_DevNode_Ex(), CM_Enable_DevNode_Ex(), CM_Enumerate_Classes_Ex(), CM_Enumerate_Enumerators_ExW(), CM_Free_Log_Conf_Ex(), CM_Get_Child_Ex(), CM_Get_Class_Name_ExW(), CM_Get_Class_Registry_PropertyW(), CM_Get_Depth_Ex(), CM_Get_Device_ID_List_ExW(), CM_Get_Device_ID_List_Size_ExW(), CM_Get_Device_Interface_Alias_ExW(), CM_Get_Device_Interface_List_ExW(), CM_Get_Device_Interface_List_Size_ExW(), CM_Get_DevNode_Custom_Property_ExW(), CM_Get_DevNode_Registry_Property_ExW(), CM_Get_DevNode_Status_Ex(), CM_Get_First_Log_Conf_Ex(), CM_Get_Global_State_Ex(), CM_Get_Hardware_Profile_Info_ExW(), CM_Get_HW_Prof_Flags_ExW(), CM_Get_Log_Conf_Priority_Ex(), CM_Get_Next_Log_Conf_Ex(), CM_Get_Next_Res_Des_Ex(), CM_Get_Parent_Ex(), CM_Get_Sibling_Ex(), CM_Get_Version_Ex(), CM_Is_Dock_Station_Present_Ex(), CM_Is_Version_Available_Ex(), CM_Locate_DevNode_ExW(), CM_Move_DevNode_Ex(), CM_Query_And_Remove_SubTree_ExW(), CM_Query_Arbitrator_Free_Data_Ex(), CM_Query_Arbitrator_Free_Size_Ex(), CM_Query_Resource_Conflict_List(), CM_Reenumerate_DevNode_Ex(), CM_Register_Device_Driver_Ex(), CM_Register_Device_Interface_ExW(), CM_Request_Device_Eject_ExW(), CM_Request_Eject_PC_Ex(), CM_Run_Detection_Ex(), CM_Set_DevNode_Problem_Ex(), CM_Set_DevNode_Registry_Property_ExW(), CM_Set_HW_Prof_Ex(), CM_Set_HW_Prof_Flags_ExW(), CM_Setup_DevNode_Ex(), CM_Uninstall_DevNode_Ex(), CM_Unregister_Device_Interface_ExW(), CMP_GetBlockedDriverInfo(), CMP_GetServerSideDeviceInstallFlags(), CMP_Init_Detection(), CMP_RegisterNotification(), CMP_Report_LogOn(), CMP_UnregisterNotification(), CMP_WaitServicesAvailable(), and GetDeviceInstanceKeyPath().

◆ SplitDeviceInstanceId()

static VOID SplitDeviceInstanceId ( _In_ PWSTR  pszDeviceInstanceId,
_Out_ PWSTR  pszDeviceId,
_Out_ PWSTR  pszInstanceId 
)
static

Definition at line 198 of file cfgmgr.c.

202{
203 PWCHAR ptr;
204
205 wcscpy(pszDeviceId, pszDeviceInstanceId);
206
207 ptr = wcschr(pszDeviceId, L'\\');
208 if (ptr != NULL)
209 {
210 *ptr = UNICODE_NULL;
211 ptr++;
212
213 wcscpy(pszInstanceId, ptr);
214 }
215 else
216 {
217 *pszInstanceId = UNICODE_NULL;
218 }
219}
#define wcschr
Definition: compat.h:17
static PVOID ptr
Definition: dispmode.c:27

Referenced by GetDeviceInstanceKeyPath().

Variable Documentation

◆ BackslashOpenBrace

const WCHAR BackslashOpenBrace[] = {'\\', '{', 0}
static

Definition at line 40 of file cfgmgr.c.

Referenced by CM_Open_Class_Key_ExW().

◆ Class

const WCHAR Class[] = {'C','l','a','s','s',0}
static

Definition at line 42 of file cfgmgr.c.

◆ CloseBrace

const WCHAR CloseBrace[] = {'}', 0}
static

Definition at line 41 of file cfgmgr.c.

Referenced by CM_Open_Class_Key_ExW().

◆ ControlClass

const WCHAR ControlClass[]
static
Initial value:
= {'S','y','s','t','e','m','\\',
'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\',
'C','o','n','t','r','o','l','\\',
'C','l','a','s','s',0}

Definition at line 44 of file cfgmgr.c.

Referenced by BeginFile(), CM_Open_Class_Key_ExW(), and PiControlSyncDeviceAction().

◆ DeviceClasses

const WCHAR DeviceClasses[]
static
Initial value:
= {'S','y','s','t','e','m','\\',
'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\',
'C','o','n','t','r','o','l','\\',
'D','e','v','i','c','e','C','l','a','s','s','e','s',0}

Definition at line 49 of file cfgmgr.c.

Referenced by CM_Open_Class_Key_ExW().