PiDmListUpdateAggregationCountWorker
VOID __stdcall PiDmListUpdateAggregationCountWorker(
_PI_DM_OBJECT *ConstraintObject,
_PI_DM_OBJECT *EntryObject,
INT64 SignValue){
char *v3;
int v4;
__int64 v7;
_PNP_OBJECT_TYPE v8;
__int64 v9;
INT64 v10;
unsigned int v11;
unsigned int v12;
_PI_DM_OBJECT *v13;
NTSTATUS v14;
UINT64 CachedKeysCount;
UINT64 PropertySize;
_PI_DM_CACHED_PROPERTY_KEY *CachedKeys;
UINT8 PropertyBuffer;
CachedKeys = 0i64;
v3 = byte_140001538;
CachedKeysCount = 0i64;
v4 = SignValue;
LODWORD(PropertySize) = 0;
PropertyBuffer = 0;
v7 = 3i64;
do
{
v8 = *((_DWORD *)v3 - 6);
if( EntryObject[7] == v8 && ConstraintObject[7] == *(_DWORD *)v3 )
{
v9 = *((_QWORD *)v3 + 3);
if( *(_PI_DM_OBJECT *)((char *)ConstraintObject + v9) != 0x80000000 )
{
PiDmGetCacheKeys(v8, (const _PI_DM_CACHED_PROPERTY_KEY **)&CachedKeys, &CachedKeysCount);
PiDmGetCachedKeyIndex(CachedKeys, CachedKeysCount, *((const _DEVPROPKEY **)v3 - 2), v10);
if( v11 < v12 )
{
v13 = &EntryObject[4 * v11 + 28 + 2 * v11];
if( (unsigned int)*v13 <= 1 )
goto LABEL_15;
v14 = PiDmCacheDataDecode(
v13,
(UINT64 *)((char *)&CachedKeysCount + 4),
&PropertyBuffer,
1ui64,
&PropertySize);
if( v14 < 0 )
{
if( v14 != -1073741275 && v14 != -1073741789 )
LABEL_15:
*(_PI_DM_OBJECT *)((char *)ConstraintObject + v9) = 0x80000000;
}
else if( PropertyBuffer == 0xFF && HIDWORD(CachedKeysCount) == 17 )
{
*(_PI_DM_OBJECT *)((char *)ConstraintObject + v9) += v4;
}
}
}
}
v3 += 56;
--v7;
}
while( v7 );
}Referenced by:
No references.