PiDmGetObjectConstraintList
INT64 __fastcall PiDmGetObjectConstraintList(INT64 a1, WCHAR *a2, INT64 a3, INT64 a4, _WORD *a5, UINT64 a6, UINT64 *a7){
UINT64 *v7;
unsigned int v8;
_WORD *v9;
int v11;
int Object;
int v13;
unsigned int v14;
__int128 v16;
__int128 v17;
PVOID P;
v7 = a7;
v8 = a6;
v9 = a5;
v11 = a1;
*(_DWORD *)a7 = 0;
P = 0i64;
v16 = 0i64;
v17 = 0i64;
if( v8 )
*v9 = 0;
Object = PiDmGetObject(LODWORD(PiDmListDefs[5 * (int)a1]), a2, (INT64 *)&P);
v13 = Object;
if( Object < 0 )
{
if( Object != -1073741772 )
goto LABEL_10;
v13 = 0;
}
else
{
*(_QWORD *)&v16 = PiDmCmObjectMatchCallback;
*((_QWORD *)&v16 + 1) = a4;
*(_QWORD *)&v17 = v9;
*((_QWORD *)&v17 + 1) = v8;
v13 = PiDmListEnumObjectsWithCallback(v11, (ULONG_PTR)P, PiDmGetObjectListCallback, (__int64)&v16);
if( v13 < 0 )
goto LABEL_10;
*(_DWORD *)v7 = HIDWORD(v17);
}
if( *(_DWORD *)v7 )
{
v14 = *(_DWORD *)v7 + 1;
*(_DWORD *)v7 = v14;
if( v9 && v8 >= v14 )
v9[v14 - 1] = 0;
else
v13 = -1073741789;
}
LABEL_10:
if( P )
PiDmObjectRelease((CHAR *)P);
return(unsigned int)v13;
}Referenced by:
PiDmGetCmObjectConstraintListFromCache