Implement CM_Get_Next_Log_Conf[_Ex] and add PNP_GetNextLogConf stub.

svn path=/trunk/; revision=23225
This commit is contained in:
Eric Kohl 2006-07-22 14:45:14 +00:00
parent 7f907bd0ac
commit e553dd4145
6 changed files with 123 additions and 9 deletions

View file

@ -1284,7 +1284,7 @@ PNP_FreeLogConf(handle_t BindingHandle,
}
/* Function 42 */
/* Function 44 */
CONFIGRET
PNP_GetFirstLogConf(handle_t BindingHandle,
wchar_t *DeviceInstance,
@ -1304,6 +1304,27 @@ PNP_GetFirstLogConf(handle_t BindingHandle,
}
/* Function 45 */
CONFIGRET
PNP_GetNextLogConf(handle_t BindingHandle,
wchar_t *DeviceInstance,
ULONG ulLogConfType,
ULONG ulCurrentTag,
ULONG *pulNextTag,
ULONG ulFlags)
{
CONFIGRET ret = CR_SUCCESS;
DPRINT1("PNP_GetNextLogConf() called\n");
*pulNextTag = 0; /* FIXME */
DPRINT1("PNP_GetNextLogConf() done (returns %lx)\n", ret);
return ret;
}
/* Function 58 */
CONFIGRET
PNP_RunDetection(handle_t BindingHandle,

View file

@ -25,14 +25,12 @@ CMP_Report_LogOn = SETUPAPI.CMP_Report_LogOn
;CMP_UnregisterNotification
;CMP_WaitNoPendingInstallEvents
;CMP_WaitServices
;CM_Add_Empty_Log_Conf=SETUPAPI.CM_Add_Empty_Log_Conf
;CM_Add_Empty_Log_Conf_Ex=SETUPAPI.CM_Add_Empty_Log_Conf_Ex
CM_Add_Empty_Log_Conf=SETUPAPI.CM_Add_Empty_Log_Conf
CM_Add_Empty_Log_Conf_Ex=SETUPAPI.CM_Add_Empty_Log_Conf_Ex
CM_Add_IDA=SETUPAPI.CM_Add_IDA
CM_Add_IDW=SETUPAPI.CM_Add_IDW
CM_Add_ID_ExA=SETUPAPI.CM_Add_ID_ExA
CM_Add_ID_ExW=SETUPAPI.CM_Add_ID_ExW
CM_Add_Empty_Log_Conf=SETUPAPI.CM_Add_Empty_Log_Conf
CM_Add_Empty_Log_Conf_Ex=SETUPAPI.CM_Add_Empty_Log_Conf_Ex
CM_Add_IDA=SETUPAPI.CM_Add_IDA
CM_Add_IDW=SETUPAPI.CM_Add_IDW
CM_Add_ID_ExA=SETUPAPI.CM_Add_ID_ExA
@ -133,8 +131,8 @@ CM_Get_HW_Prof_Flags_ExW=SETUPAPI.CM_Get_HW_Prof_Flags_ExW
;CM_Get_Hardware_Profile_Info_ExW
;CM_Get_Log_Conf_Priority
;CM_Get_Log_Conf_Priority_Ex
;CM_Get_Next_Log_Conf
;CM_Get_Next_Log_Conf_Ex
CM_Get_Next_Log_Conf=SETUPAPI.CM_Get_Next_Log_Conf
CM_Get_Next_Log_Conf_Ex=SETUPAPI.CM_Get_Next_Log_Conf_Ex
;CM_Get_Next_Res_Des
;CM_Get_Next_Res_Des_Ex
CM_Get_Parent=SETUPAPI.CM_Get_Parent

View file

@ -2162,6 +2162,91 @@ CONFIGRET WINAPI CM_Get_HW_Prof_Flags_ExW(
}
/***********************************************************************
* CM_Get_Next_Log_Conf [SETUPAPI.@]
*/
CONFIGRET WINAPI CM_Get_Next_Log_Conf(
PLOG_CONF plcLogConf, LOG_CONF lcLogConf, ULONG ulFlags)
{
TRACE("%p %p %lx\n", plcLogConf, lcLogConf, ulFlags);
return CM_Get_Next_Log_Conf_Ex(plcLogConf, lcLogConf, ulFlags, NULL);
}
/***********************************************************************
* CM_Get_Next_Log_Conf_Ex [SETUPAPI.@]
*/
CONFIGRET WINAPI CM_Get_Next_Log_Conf_Ex(
PLOG_CONF plcLogConf, LOG_CONF lcLogConf, ULONG ulFlags,
HMACHINE hMachine)
{
RPC_BINDING_HANDLE BindingHandle = NULL;
HSTRING_TABLE StringTable = NULL;
PLOG_CONF_INFO pLogConfInfo;
PLOG_CONF_INFO pNewLogConfInfo;
ULONG ulNewTag;
LPWSTR lpDevInst;
CONFIGRET ret;
FIXME("%p %p %lx %lx\n", plcLogConf, lcLogConf, ulFlags, hMachine);
if (plcLogConf)
*plcLogConf = 0;
pLogConfInfo = (PLOG_CONF_INFO)lcLogConf;
if (pLogConfInfo == NULL || pLogConfInfo->ulMagic != LOG_CONF_MAGIC)
return CR_INVALID_LOG_CONF;
if (ulFlags != 0)
return CR_INVALID_FLAG;
if (hMachine != NULL)
{
BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
if (BindingHandle == NULL)
return CR_FAILURE;
StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
if (StringTable == 0)
return CR_FAILURE;
}
else
{
if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
return CR_FAILURE;
}
lpDevInst = StringTableStringFromId(StringTable, pLogConfInfo->dnDevInst);
if (lpDevInst == NULL)
return CR_INVALID_DEVNODE;
ret = PNP_GetNextLogConf(BindingHandle,
lpDevInst,
pLogConfInfo->ulFlags,
pLogConfInfo->ulTag,
&ulNewTag,
0);
if (ret != CR_SUCCESS)
return ret;
if (plcLogConf)
{
pNewLogConfInfo = HeapAlloc(GetProcessHeap(), 0, sizeof(LOG_CONF_INFO));
if (pNewLogConfInfo == NULL)
return CR_OUT_OF_MEMORY;
pNewLogConfInfo->ulMagic = LOG_CONF_MAGIC;
pNewLogConfInfo->dnDevInst = pLogConfInfo->dnDevInst;
pNewLogConfInfo->ulFlags = pLogConfInfo->ulFlags;
pNewLogConfInfo->ulTag = ulNewTag;
*plcLogConf = (LOG_CONF)pNewLogConfInfo;
}
return CR_SUCCESS;
}
/***********************************************************************
* CM_Get_Parent [SETUPAPI.@]
*/

View file

@ -111,8 +111,8 @@
@ stub CM_Get_Hardware_Profile_Info_ExW
@ stub CM_Get_Log_Conf_Priority
@ stub CM_Get_Log_Conf_Priority_Ex
@ stub CM_Get_Next_Log_Conf
@ stub CM_Get_Next_Log_Conf_Ex
@ stdcall CM_Get_Next_Log_Conf(ptr ptr long)
@ stdcall CM_Get_Next_Log_Conf_Ex(ptr ptr long long)
@ stub CM_Get_Next_Res_Des
@ stub CM_Get_Next_Res_Des_Ex
@ stdcall CM_Get_Parent(ptr long long)

View file

@ -219,6 +219,14 @@ interface pnp
[out] ULONG *pulLogConfTag,
[in] ULONG ulFlags);
/* Function 45 */
CONFIGRET PNP_GetNextLogConf(handle_t BindingHandle,
[in, string] wchar_t *DeviceInstance,
[in] ULONG ulLogConfType,
[in] ULONG ulCurrentTag,
[out] ULONG *pulNextTag,
[in] ULONG ulFlags);
/* Function 58 */
CONFIGRET PNP_RunDetection(handle_t BindingHandle,
[in] unsigned long Flags);

View file

@ -307,6 +307,8 @@ CONFIGRET WINAPI CM_Get_HW_Prof_FlagsW( DEVINSTID_W, ULONG, PULONG, ULONG );
CONFIGRET WINAPI CM_Get_HW_Prof_Flags_ExA( DEVINSTID_A, ULONG, PULONG, ULONG, HMACHINE );
CONFIGRET WINAPI CM_Get_HW_Prof_Flags_ExW( DEVINSTID_W, ULONG, PULONG, ULONG, HMACHINE );
#define CM_Get_HW_Prof_Flags_Ex WINELIB_NAME_AW(CM_Get_HW_Prof_Flags_Ex)
CONFIGRET WINAPI CM_Get_Next_Log_Conf( PLOG_CONF, LOG_CONF, ULONG );
CONFIGRET WINAPI CM_Get_Next_Log_Conf_Ex( PLOG_CONF, LOG_CONF, ULONG, HMACHINE );
CONFIGRET WINAPI CM_Get_Parent( PDEVINST, DEVINST, ULONG );
CONFIGRET WINAPI CM_Get_Parent_Ex( PDEVINST, DEVINST, ULONG, HMACHINE );
CONFIGRET WINAPI CM_Get_Sibling( PDEVINST, DEVINST, ULONG );