CmClassSubkeyCallback
PNPCTX_REG_ENUM_KEY_ACTION __stdcall CmClassSubkeyCallback(
HPNPCTX *hPnpCtx,
VOID *hkParent,
WCHAR *KeyName,
VOID *Context){
VOID *v4;
unsigned __int8(__fastcall *v8)(HPNPCTX *, WCHAR *, _QWORD, _QWORD);
unsigned int v9;
unsigned int v10;
__int64 v12;
UINT64 dwFlags;
_UNICODE_STRING DestinationString;
VOID *Handle;
Handle = 0i64;
v4 = (VOID *)*((_QWORD *)Context + 1);
DestinationString = 0i64;
if( v4
&& (hPnpCtx ? (v12 = *((_QWORD *)hPnpCtx + 28)) : (v12 = 0i64),
SysCtxRegOpenKey(v12, v4, KeyName, 0, 0x20019u, &Handle) >= 0) )
{
ZwClose((_HANDLE)Handle);
}
else if( ((unsigned __int8)*(_DWORD *)Context == 2 || *(_DWORD *)Context == 4)
&& CmValidateInstallerClassName((WCHAR *)hPnpCtx) >= 0
&& RtlInitUnicodeStringEx(&DestinationString, KeyName) >= 0 )
{
v8 = (unsigned __int8(__fastcall *)(HPNPCTX *, WCHAR *, _QWORD, _QWORD))*((_QWORD *)Context + 2);
v9 = DestinationString.MaximumLength >> 1;
if( !v8 || v8(hPnpCtx, KeyName, *(unsigned int *)Context, *((_QWORD *)Context + 3)) )
{
*((_DWORD *)Context + 11) += v9;
v10 = *((_DWORD *)Context + 10);
if( v10 > v9 )
{
LODWORD(dwFlags) = 2304;
RtlStringCchCopyExW(*((WCHAR **)Context + 4), v10, KeyName, 0i64, 0i64, dwFlags);
*((_QWORD *)Context + 4) += 2i64 * v9;
*((_DWORD *)Context + 10) -= v9;
}
}
}
return 0;
}Referenced by:
No references.