Implement CM_Set_HW_Prof[_Ex].

svn path=/trunk/; revision=45107
This commit is contained in:
Eric Kohl 2010-01-16 16:31:58 +00:00
parent 24d37d7161
commit b060fb3ebf
6 changed files with 78 additions and 6 deletions

View file

@ -1809,7 +1809,9 @@ DWORD PNP_QueryResConfList(
/* Function 55 */ /* Function 55 */
DWORD PNP_SetHwProf( DWORD PNP_SetHwProf(
handle_t hBinding) handle_t hBinding,
DWORD ulHardwareProfile,
DWORD ulFlags)
{ {
UNIMPLEMENTED; UNIMPLEMENTED;
return CR_CALL_NOT_IMPLEMENTED; return CR_CALL_NOT_IMPLEMENTED;

View file

@ -3774,6 +3774,60 @@ CONFIGRET WINAPI CM_Set_DevNode_Registry_Property_ExW(
} }
/***********************************************************************
* CM_Set_HW_Prof [SETUPAPI.@]
*/
CONFIGRET WINAPI CM_Set_HW_Prof(
ULONG ulHardwareProfile, ULONG ulFlags)
{
TRACE("%lu %lu\n", ulHardwareProfile, ulFlags);
return CM_Set_HW_Prof_Ex(ulHardwareProfile, ulFlags, NULL);
}
/***********************************************************************
* CM_Set_HW_Prof_Ex [SETUPAPI.@]
*/
CONFIGRET WINAPI CM_Set_HW_Prof_Ex(
ULONG ulHardwareProfile, ULONG ulFlags, HMACHINE hMachine)
{
RPC_BINDING_HANDLE BindingHandle = NULL;
CONFIGRET ret;
TRACE("%lu %lu %lx\n", ulHardwareProfile, ulFlags, hMachine);
if (!IsUserAdmin())
return CR_ACCESS_DENIED;
if (ulFlags != 0)
return CR_INVALID_FLAG;
if (hMachine != NULL)
{
BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
if (BindingHandle == NULL)
return CR_FAILURE;
}
else
{
if (!PnpGetLocalHandles(&BindingHandle, NULL))
return CR_FAILURE;
}
RpcTryExcept
{
ret = PNP_SetHwProf(BindingHandle, ulHardwareProfile, ulFlags);
}
RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
ret = RpcStatusToCmStatus(RpcExceptionCode());
}
RpcEndExcept;
return ret;
}
/*********************************************************************** /***********************************************************************
* CM_Set_HW_Prof_FlagsA [SETUPAPI.@] * CM_Set_HW_Prof_FlagsA [SETUPAPI.@]
*/ */

View file

@ -192,8 +192,8 @@
@ stdcall CM_Set_DevNode_Registry_PropertyW(long long ptr long long) @ stdcall CM_Set_DevNode_Registry_PropertyW(long long ptr long long)
@ stdcall CM_Set_DevNode_Registry_Property_ExA(long long ptr long long long) @ stdcall CM_Set_DevNode_Registry_Property_ExA(long long ptr long long long)
@ stdcall CM_Set_DevNode_Registry_Property_ExW(long long ptr long long long) @ stdcall CM_Set_DevNode_Registry_Property_ExW(long long ptr long long long)
@ stub CM_Set_HW_Prof @ stdcall CM_Set_HW_Prof(long long)
@ stub CM_Set_HW_Prof_Ex @ stdcall CM_Set_HW_Prof_Ex(long long long)
@ stdcall CM_Set_HW_Prof_FlagsA(str long long long) @ stdcall CM_Set_HW_Prof_FlagsA(str long long long)
@ stdcall CM_Set_HW_Prof_FlagsW(wstr long long long) @ stdcall CM_Set_HW_Prof_FlagsW(wstr long long long)
@ stdcall CM_Set_HW_Prof_Flags_ExA(str long long long long) @ stdcall CM_Set_HW_Prof_Flags_ExA(str long long long long)

View file

@ -2117,8 +2117,20 @@ CM_Set_DevNode_Registry_Property_ExW(
#define CM_Set_DevNode_Registry_Property_Ex CM_Set_DevNode_Registry_Property_ExA #define CM_Set_DevNode_Registry_Property_Ex CM_Set_DevNode_Registry_Property_ExA
#endif /* UNICODE */ #endif /* UNICODE */
/* FIXME: Obsolete CM_Set_HW_Prof */ CMAPI
/* FIXME: Obsolete CM_Set_HW_Prof_Ex */ CONFIGRET
WINAPI
CM_Set_HW_Prof(
IN ULONG ulHardwareProfile,
IN ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Set_HW_Prof_Ex(
IN ULONG ulHardwareProfile,
IN ULONG ulFlags,
IN HMACHINE hMachine);
/* CM_Set_HW_Prof_Flags[_Ex].ulFlags constants */ /* CM_Set_HW_Prof_Flags[_Ex].ulFlags constants */
#define CM_SET_HW_PROF_FLAGS_UI_NOT_OK (0x00000001) #define CM_SET_HW_PROF_FLAGS_UI_NOT_OK (0x00000001)

View file

@ -724,7 +724,9 @@ interface pnp
/* Function 55 */ /* Function 55 */
DWORD PNP_SetHwProf( DWORD PNP_SetHwProf(
[in] handle_t hBinding); [in] handle_t hBinding,
[in] DWORD ulHardwareProfile,
[in] DWORD ulFlags);
/* Function 56 */ /* Function 56 */
DWORD PNP_QueryArbitratorFreeData( DWORD PNP_QueryArbitratorFreeData(

View file

@ -301,6 +301,8 @@ CONFIGRET WINAPI CM_Get_First_Log_Conf( PLOG_CONF, DEVINST, ULONG );
CONFIGRET WINAPI CM_Get_First_Log_Conf_Ex( PLOG_CONF, DEVINST, ULONG, HMACHINE ); CONFIGRET WINAPI CM_Get_First_Log_Conf_Ex( PLOG_CONF, DEVINST, ULONG, HMACHINE );
CONFIGRET WINAPI CM_Get_Global_State( PULONG, ULONG ); CONFIGRET WINAPI CM_Get_Global_State( PULONG, ULONG );
CONFIGRET WINAPI CM_Get_Global_State_Ex( PULONG, ULONG, HMACHINE ); CONFIGRET WINAPI CM_Get_Global_State_Ex( PULONG, ULONG, HMACHINE );
CONFIGRET WINAPI CM_Set_HW_Prof( ULONG, ULONG );
CONFIGRET WINAPI CM_Set_HW_Prof_Ex( ULONG, ULONG, HMACHINE );
CONFIGRET WINAPI CM_Get_HW_Prof_FlagsA( DEVINSTID_A, ULONG, PULONG, ULONG ); CONFIGRET WINAPI CM_Get_HW_Prof_FlagsA( DEVINSTID_A, ULONG, PULONG, ULONG );
CONFIGRET WINAPI CM_Get_HW_Prof_FlagsW( DEVINSTID_W, ULONG, PULONG, ULONG ); CONFIGRET WINAPI CM_Get_HW_Prof_FlagsW( DEVINSTID_W, ULONG, PULONG, ULONG );
#define CM_Get_HW_Prof_Flags WINELIB_NAME_AW(CM_Get_HW_Prof_Flags) #define CM_Get_HW_Prof_Flags WINELIB_NAME_AW(CM_Get_HW_Prof_Flags)