CmGetMatchingDevicePanelListWorker
__int64 __fastcall CmGetMatchingDevicePanelListWorker(
__int64 a1,
__int64 a2,
__int64 a3,
_WORD *a4,
unsigned int a5,
unsigned int *a6,
int a7){
int CachedContextBaseKey;
_DWORD *PoolWithTag;
_DWORD *v13;
void *v14;
unsigned int v15;
unsigned int v16;
void *v18;
v18 = 0i64;
*a6 = 0;
if( a5 )
*a4 = 0;
CachedContextBaseKey = PnpCtxGetCachedContextBaseKey(a1, 11, (__int64 *)&v18);
if( CachedContextBaseKey >= 0 )
{
PoolWithTag = ExAllocatePoolWithTag(PagedPool, 0xA0ui64, 0x52504E50ui64);
v13 = PoolWithTag;
if( PoolWithTag )
{
memset((INT64)PoolWithTag, 0i64);
v14 = v18;
v13[38] = a7;
*v13 = 1;
*((_QWORD *)v13 + 15) = a2;
*((_QWORD *)v13 + 16) = a3;
*((_QWORD *)v13 + 17) = a4;
v13[36] = a5;
CachedContextBaseKey = PnpCtxRegEnumKeyWithCallback(
a1,
v14,
(__int64)CmDevicePanelEnumSubkeyCallback,
(__int64)v13);
if( CachedContextBaseKey >= 0 )
{
v15 = v13[37];
*a6 = v15;
if( v15 )
{
v16 = v15 + 1;
*a6 = v16;
if( a4 && a5 >= v16 )
a4[v16 - 1] = 0;
else
CachedContextBaseKey = -1073741789;
}
}
ExFreePoolWithTag(v13, 0);
}
else
{
return(unsigned int)-1073741801;
}
}
return(unsigned int)CachedContextBaseKey;
}Referenced by:
CmGetMatchingDevicePanelList