PnpGetServiceStartType
__int64 __fastcall PnpGetServiceStartType(const WCHAR *a1, VOID *a2, _DWORD *a3){
int v6;
__int64 v8;
__int64 v9;
NTSTATUS v10;
__int64 v11;
__int64 v12;
NTSTATUS v13;
VOID *Handle;
int v15;
__int64 v16;
v15 = 0;
Handle = 0i64;
*a3 = 4;
if( (*(&ExBootDevicesRemovedEvent + 1120) & 1) != 0 )
{
v8 = qword_140CF5110;
if( qword_140CF5110 )
{
if( qword_140CF5110 == -1 )
goto LABEL_2;
v10 = 0;
}
else
{
if( *(&stru_140CF2E80 + 607) )
v9 = *(_QWORD *)(*(&stru_140CF2E80 + 607) + 224i64);
else
v9 = 0i64;
v10 = SysCtxRegOpenKey(
v9,
(VOID *)0x80000002i64,
L"System\\CurrentControlSet\\Control\\ManufacturingMode\\Current\\Services\\",
0,
0x20019u,
(VOID **)&qword_140CF5110);
if( v10 == -1073741772 )
{
v8 = -1i64;
qword_140CF5110 = -1i64;
}
else
{
v8 = qword_140CF5110;
}
}
if( v10 >= 0 )
{
if( *(&stru_140CF2E80 + 607) )
v11 = *(_QWORD *)(*(&stru_140CF2E80 + 607) + 224i64);
else
v11 = 0i64;
if( SysCtxRegOpenKey(v11, (VOID *)v8, a1, 0, 0x20019u, &Handle) >= 0 )
{
LODWORD(v16) = 4;
v6 = RegRtlQueryValue(Handle, L"Start", &v15, a3, (__int64)&v16);
if( v6 >= 0 && v15 == 4 )
goto LABEL_5;
}
v12 = (__int64)qword_140CF5118;
if( qword_140CF5118 )
{
if( qword_140CF5118 == (VOID *)-1i64 )
goto LABEL_2;
v13 = 0;
}
else
{
if( *(&stru_140CF2E80 + 607) )
v12 = *(_QWORD *)(*(&stru_140CF2E80 + 607) + 224i64);
v13 = SysCtxRegOpenKey(v12, (VOID *)qword_140CF5110, L"*Driver", 0, 0x20019u, &qword_140CF5118);
if( v13 == -1073741772 )
{
v12 = -1i64;
qword_140CF5118 = (VOID *)-1i64;
}
else
{
v12 = (__int64)qword_140CF5118;
}
}
if( v13 >= 0 )
{
LODWORD(v16) = 4;
v6 = RegRtlQueryValue((VOID *)v12, L"Start", &v15, a3, (__int64)&v16);
if( v6 >= 0 && v15 == 4 )
goto LABEL_5;
}
}
}
LABEL_2:
LODWORD(v16) = 4;
v6 = RegRtlQueryValue(a2, L"Start", &v15, a3, (__int64)&v16);
if( v6 >= 0 && v15 != 4 )
{
v6 = -1073741772;
*a3 = 4;
}
LABEL_5:
if( Handle )
ZwClose((_HANDLE)Handle);
return(unsigned int)v6;
}Referenced by:
PipCallDriverAddDeviceQueryRoutine