PnpAllocateWatchdog
CHAR *__stdcall PnpAllocateWatchdog(){
_QWORD *PoolWithTag;
_QWORD *v1;
CHAR *v2;
INT64 v4[3];
int WatchdogTimeout;
int v6;
VOID(__fastcall *v7)(INT64);
v4[1] = 0i64;
PoolWithTag = ExAllocatePoolWithTag(NonPagedPoolNx, 0x28ui64, 0x57647050ui64);
v1 = PoolWithTag;
if( PoolWithTag )
{
v4[0] = (INT64)PoolWithTag;
*(_OWORD *)PoolWithTag = 0i64;
*((_OWORD *)PoolWithTag + 1) = 0i64;
PoolWithTag[4] = 0i64;
v4[2] = (INT64)PnpWatchdogWorkItem;
WatchdogTimeout = PnpQueryWatchdogTimeout(1);
v7 = PnpWatchdogBugcheck;
v6 = PnpQueryWatchdogTimeout(0);
v2 = PnpWatchdogTimerAllocate((INT64)v4);
v1[1] = v2;
if( !v2 )
{
ExFreePoolWithTag(v1, 0x57647050u);
return 0i64;
}
}
return(CHAR *)v1;
}Referenced by:
PnpEnableWatchdog