PipAllocateDeviceNode
__int64 __fastcall PipAllocateDeviceNode(__int64 a1, void **a2){
void *PoolWithTag;
_QWORD *v5;
_QWORD *v6;
_QWORD *v7;
_QWORD *v8;
_QWORD *v9;
_QWORD *v10;
_QWORD *v11;
_QWORD *v12;
PoolWithTag = ExAllocatePoolWithTag(NonPagedPoolNx, 0x310ui64, 0x646F6E44ui64);
*a2 = PoolWithTag;
if( !PoolWithTag )
return 3221225626i64;
_InterlockedIncrement(&IopNumberDeviceNodes);
memset((INT64)*a2, 0i64);
*((_DWORD *)*a2 + 112) = -1;
*((_DWORD *)*a2 + 113) = -1;
*((_DWORD *)*a2 + 114) = -1;
*((_DWORD *)*a2 + 115) = -1;
*((_WORD *)*a2 + 232) = -1;
*((_DWORD *)*a2 + 75) = 769;
*((_DWORD *)*a2 + 150) = 0;
*((_DWORD *)*a2 + 160) = 0;
*((_QWORD *)*a2 + 81) = 0i64;
*((_DWORD *)*a2 + 164) = 0;
*((_DWORD *)*a2 + 165) = -1;
*((_WORD *)*a2 + 233) = 0;
v5 = (char *)*a2 + 488;
v5[1] = v5;
*v5 = v5;
v6 = (char *)*a2 + 504;
v6[1] = v6;
*v6 = v6;
if( a1 )
{
*((_QWORD *)*a2 + 4) = a1;
*(_QWORD *)(*(_QWORD *)(a1 + 312) + 40i64) = *a2;
*(_DWORD *)(a1 + 48) &= ~0x80u;
}
v7 = (char *)*a2 + 472;
v7[1] = v7;
*v7 = v7;
v8 = (char *)*a2 + 576;
v8[1] = v8;
*v8 = v8;
v9 = (char *)*a2 + 608;
v9[1] = v9;
*v9 = v9;
v10 = (char *)*a2 + 624;
v10[1] = v10;
*v10 = v10;
v11 = (char *)*a2 + 176;
v11[1] = v11;
*v11 = v11;
v12 = (char *)*a2 + 192;
v12[1] = v12;
*v12 = v12;
return 0i64;
}Referenced by:
IoReportDetectedDevice
IopInitializeDeviceInstanceKey
IopInitializePlugPlayServices
IopLegacyResourceAllocation
PiInitializeDevice
PipProcessEnumeratedChildDevice