PnpCtxOpenMachine
__int64 __fastcall PnpCtxOpenMachine(__int64 a1, VOID *a2, __int64 a3, VOID *a4, int a5, int a6, _QWORD *a7){
_QWORD *v7;
VOID **PoolWithTag;
VOID **v11;
__int64 v12;
VOID **v13;
_QWORD *v14;
__int64 v15;
int v16;
wchar_t *v17;
_UNICODE_STRING *v18;
_UNICODE_STRING *v19;
wchar_t *v20;
VOID **v21;
VOID **v22;
void *v24;
_UNICODE_STRING *P;
v7 = a7;
P = 0i64;
*a7 = 0i64;
PoolWithTag = ExAllocatePoolWithTag(1ui64, 0x210ui64, 1380994640i64);
v11 = PoolWithTag;
if( PoolWithTag )
{
memset(PoolWithTag, 0i64, 0x210u);
v13 = v11 + 1;
*(_DWORD *)v11 = 167772160;
v11[2] = v11 + 1;
v14 = v11 + 3;
v11[1] = v11 + 1;
v15 = 4i64;
do
{
v14[1] = v14;
*v14 = v14;
v14 += 2;
--v15;
}
while( v15 );
v16 = PnpCtxCreateNode(v11, (WCHAR *)L"SYSTEM", 1, v12, a2, v24, a4, 0i64, &P);
if( v16 < 0 )
{
v18 = P;
}
else
{
v17 = (wchar_t *)v11[2];
if( *(VOID ***)v17 != v13
|| (v18 = P,
P->Buffer = v17,
v19 = v18 + 1,
*(_QWORD *)&v18->Length = v13,
*(_QWORD *)v17 = v18,
v11[2] = v18,
v20 = (wchar_t *)v11[6],
*(VOID ***)v20 != v11 + 5) )
{
__fastfail(3u);
}
v18[1].Buffer = v20;
*(_QWORD *)&v19->Length = v11 + 5;
*(_QWORD *)v20 = v19;
v11[6] = v19;
v11[11] = v18;
v11[28] = v18[3].Buffer;
v21 = ExAllocatePoolWithTag(0x200ui64, 0x68ui64, 1380994640i64);
v22 = v21;
if( v21 )
{
v16 = ExInitializeResourceLite((INT64)v21);
if( v16 >= 0 )
{
v11[30] = v22;
v22 = 0i64;
}
if( v22 )
ExFreePoolWithTag(v22, 0);
if( v16 >= 0 )
{
v11[29] = 0i64;
memset(v11 + 31, 0i64, 0x90u);
v11[38] = PnpDispatchDevice;
v11[39] = PnpDispatchInstallerClass;
v11[40] = PnpDispatchDeviceInterface;
v11[41] = PnpDispatchInterfaceClass;
v11[42] = PnpDispatchDeviceContainer;
v11[43] = PnpDispatchDevicePanel;
memset(v11 + 49, 0i64, 0x60u);
v11[61] = 0i64;
v11[62] = 0i64;
v11[63] = 0i64;
v11[64] = 0i64;
v11[65] = 0i64;
*v7 = v11;
v11 = 0i64;
v18 = 0i64;
}
}
else
{
v16 = -1073741801;
}
}
if( v18 )
PnpCtxDestroyNode(v18);
if( v11 )
ExFreePoolWithTag(v11, 0);
}
else
{
return(unsigned int)-1073741801;
}
return(unsigned int)v16;
}Referenced by:
PiDevCfgInitDriverDatabaseCallback
PiPnpRtlInit
PipMigratePnpState