PiDmGetObjectList
NTSTATUS __fastcall PiDmGetObjectList(
PNP_OBJECT_TYPE ObjectType,
INT64 a2,
INT64 *MatchCallbackRoutine,
PI_DM_OBJECT *a4,
VOID *a5,
UINT8 *a6,
VOID *MatchCallbackContext,
WCHAR *Buffer,
UINT64 BufferLength,
UINT64 *RequiredLength){
int v11;
unsigned int v12;
__int64 EnumCallback[3];
__int64 v15;
EnumCallback[0] = a2;
EnumCallback[1] = (__int64)MatchCallbackRoutine;
EnumCallback[2] = (__int64)a4;
*(_DWORD *)a6 = 0;
v15 = (unsigned int)a5;
if( (_DWORD)a5 )
*(_WORD *)a4 = 0;
v11 = PiDmEnumObjectsWithCallback(
ObjectType,
(INT64)PiDmGetObjectListCallback,
EnumCallback,
a4,
(VOID *)EnumCallback[0],
(UINT8 *)EnumCallback[1],
(VOID *)EnumCallback[2]);
if( v11 >= 0 )
{
v12 = HIDWORD(v15);
*(_DWORD *)a6 = HIDWORD(v15);
if( v12 )
{
*(_DWORD *)a6 = v12 + 1;
if( a4 && (unsigned int)a5 >= v12 + 1 )
*((_WORD *)a4 + v12) = 0;
else
return -1073741789;
}
}
return v11;
}Referenced by:
PiDmGetCmObjectListFromCache
PiPnpRtlObjectActionCallback