PiDqPnPGetObjectPropertyKeys
INT64 __fastcall PiDqPnPGetObjectPropertyKeys(INT64 a1, UINT64 a2, VOID *a3, INT64 a4, VOID **a5, UINT64 *a6){
unsigned int v7;
UINT64 v9;
VOID *PoolWithTag;
unsigned __int64 v11;
int ObjectPropertyKeys;
int v13;
__int64 v14;
int v16;
v7 = a2;
v9 = 6000i64;
*a5 = 0i64;
while( 1 )
{
if( *a5 )
ExFreePoolWithTag(*a5, 0x58706E50u);
PoolWithTag = ExAllocatePoolWithTag(PagedPool, v9, 0x58706E50ui64);
*a5 = PoolWithTag;
if( !PoolWithTag )
break;
*(_DWORD *)a6 = 0;
v11 = v9 / 0x14;
if( v7 )
ObjectPropertyKeys = PnpGetObjectPropertyKeys(
PiPnpRtlCtx,
a1,
v7,
(__int64)a3,
v16,
1,
(__int64)PoolWithTag,
v11,
(__int64)a6);
else
ObjectPropertyKeys = PnpGetGenericStorePropertyKeys(
PiPnpRtlCtx,
(char *)a3,
0i64,
1,
(__int64)PoolWithTag,
v11,
(unsigned int *)a6);
v13 = ObjectPropertyKeys;
if( ObjectPropertyKeys != -1073741789 )
goto LABEL_13;
v14 = *(unsigned int *)a6;
if( (unsigned __int64)(20 * v14) > 0xFFFFFFFF )
{
v13 = -1073741675;
goto LABEL_14;
}
v9 = (unsigned int)(20 * v14);
}
v13 = -1073741670;
LABEL_13:
if( v13 >= 0 )
goto LABEL_15;
LABEL_14:
*(_DWORD *)a6 = 0;
LABEL_15:
if( !*(_DWORD *)a6 && *a5 )
{
ExFreePoolWithTag(*a5, 0x58706E50u);
*a5 = 0i64;
}
return(unsigned int)v13;
}Referenced by:
PiDqActionDataGetAllPropertiesInAllLanguages
PiDqActionDataGetAllPropertiesInBestLanguage