PnpCreateObject
__int64 __fastcall PnpCreateObject(__int64 a1, UINT64 a2, unsigned int a3, int a4, VOID **a5){
WCHAR *v5;
__int64(__fastcall *v9)(WCHAR *, UINT64, _QWORD, __int64, int, VOID **);
int v10;
int ObjectDispatch;
int v12;
int v14;
int v15;
int v16;
VOID *v17[10];
v5 = (WCHAR *)*(&stru_140CF2E80 + 607);
memset(v17, 0i64, sizeof(v17));
v9 = *(__int64(__fastcall **)(WCHAR *, UINT64, _QWORD, __int64, int, VOID **))(*(&stru_140CF2E80 + 607) + 488i64);
if( a4 || (LODWORD(v17[2]) = 1, a5) )
LODWORD(v17[2]) = a4;
HIDWORD(v17[4]) = 0;
if( v9 )
{
v10 = v9((WCHAR *)*(&stru_140CF2E80 + 607), a2, a3, 3i64, 1, v17);
if( v10 == -1073741822 )
{
v9 = 0i64;
}
else
{
if( v10 == -1073741536 )
goto LABEL_18;
if( v10 )
{
v12 = -1073741595;
goto LABEL_16;
}
}
}
ObjectDispatch = PnpCreateObjectDispatch(
v5,
a2,
(VOID *)a3,
(int)v17[2],
(__int64)&v17[3],
(__int64)&v17[4],
SHIDWORD(v17[4]));
v12 = ObjectDispatch;
if( !v9 )
goto LABEL_7;
LODWORD(v17[0]) = ObjectDispatch;
v14 = v9(v5, a2, a3, 3i64, 2, v17);
v15 = v14;
if( v14 == -1073741822 )
goto LABEL_7;
if( v14 == -1073741536 )
{
LABEL_18:
v12 = (int)v17[0];
goto LABEL_7;
}
v16 = v12;
if( v15 )
v16 = -1073741595;
v12 = v16;
LABEL_7:
if( v12 >= 0 && a5 )
{
*a5 = v17[3];
return(unsigned int)v12;
}
LABEL_16:
if( v17[3] )
ZwClose((_HANDLE)v17[3]);
return(unsigned int)v12;
}Referenced by:
PiCMCreateObject
PiCMOpenObjectKey