[SETUPAPI]

Implement CM_Create_Range_List and CM_Free_Range_List. Still WIP.

svn path=/trunk/; revision=75562
This commit is contained in:
Eric Kohl 2017-08-16 09:44:20 +00:00
parent 40b5e9f4f8
commit 0078433e69
2 changed files with 80 additions and 2 deletions

View file

@ -69,6 +69,22 @@ typedef struct _NOTIFY_DATA
#define NOTIFY_MAGIC 0x44556677
typedef struct _INTERNAL_RANGE_ELEMENT
{
struct _INTERNAL_RANGE_ELEMENT *Next;
ULONG ulDummy;
} INTERNAL_RANGE_ELEMENT, *PINTERNAL_RANGE_ELEMENT;
typedef struct _INTERNAL_RANGE_LIST
{
ULONG ulMagic;
PINTERNAL_RANGE_ELEMENT Current;
PINTERNAL_RANGE_ELEMENT First;
} INTERNAL_RANGE_LIST, *PINTERNAL_RANGE_LIST;
#define RANGE_LIST_MAGIC 0x33445566
static BOOL GuidToString(LPGUID Guid, LPWSTR String)
{
LPWSTR lpString;
@ -910,6 +926,39 @@ CONFIGRET WINAPI CM_Create_DevNode_ExW(
}
/***********************************************************************
* CM_Create_Range_List [SETUPAPI.@]
*/
CONFIGRET
WINAPI
CM_Create_Range_List(
_Out_ PRANGE_LIST prlh,
_In_ ULONG ulFlags)
{
PINTERNAL_RANGE_LIST pRangeList = NULL;
FIXME("CM_Create_Range_List(%p %lx)\n", prlh, ulFlags);
if (ulFlags != 0)
return CR_INVALID_FLAG;
if (prlh == NULL)
return CR_INVALID_POINTER;
pRangeList = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(INTERNAL_RANGE_LIST));
if (pRangeList == NULL)
return CR_OUT_OF_MEMORY;
pRangeList->ulMagic = RANGE_LIST_MAGIC;
// TODO: More initialization
*prlh = (RANGE_LIST)pRangeList;
return CR_SUCCESS;
}
/***********************************************************************
* CM_Delete_Class_Key [SETUPAPI.@]
*/
@ -1451,6 +1500,35 @@ CONFIGRET WINAPI CM_Free_Log_Conf_Handle(
}
/***********************************************************************
* CM_Free_Range_List [SETUPAPI.@]
*/
CONFIGRET
WINAPI
CM_Free_Range_List(
_In_ RANGE_LIST RangeList,
_In_ ULONG ulFlags)
{
PINTERNAL_RANGE_LIST pRangeList;
FIXME("CM_Free_Range_List(%p %lx)\n", RangeList, ulFlags);
pRangeList = (PINTERNAL_RANGE_LIST)RangeList;
if (pRangeList == NULL || pRangeList->ulMagic != RANGE_LIST_MAGIC)
return CR_INVALID_RANGE_LIST;
if (ulFlags != 0)
return CR_INVALID_FLAG;
// TODO: Free the list of ranges
HeapFree(GetProcessHeap(), 0, pRangeList);
return CR_SUCCESS;
}
/***********************************************************************
* CM_Free_Res_Des [SETUPAPI.@]
*/

View file

@ -22,7 +22,7 @@
@ stdcall CM_Create_DevNodeW(ptr wstr long long)
@ stdcall CM_Create_DevNode_ExA(ptr str long long long)
@ stdcall CM_Create_DevNode_ExW(ptr wstr long long long)
@ stub CM_Create_Range_List
@ stdcall CM_Create_Range_List(ptr long)
@ stdcall CM_Delete_Class_Key(ptr long)
@ stdcall CM_Delete_Class_Key_Ex(ptr long long)
@ stdcall CM_Delete_DevNode_Key(long long long)
@ -47,7 +47,7 @@
@ stdcall CM_Free_Log_Conf(ptr long)
@ stdcall CM_Free_Log_Conf_Ex(ptr long ptr)
@ stdcall CM_Free_Log_Conf_Handle(ptr)
@ stub CM_Free_Range_List
@ stdcall CM_Free_Range_List(ptr long)
@ stdcall CM_Free_Res_Des(ptr ptr long)
@ stdcall CM_Free_Res_Des_Ex(ptr ptr long long)
@ stdcall CM_Free_Res_Des_Handle(ptr)