PipCheckDependencies
UINT64 __stdcall PipCheckDependencies(PVOID KeyHandle){
WCHAR v1;
PVOID v3;
unsigned int v4;
int v5;
const WCHAR *v6;
__int64 MaximumLength;
CHAR *v8;
struct _UNICODE_STRING DestinationString;
PVOID P;
P = 0i64;
DestinationString = 0i64;
if( IopGetRegistryValue(KeyHandle, (PWCHAR)L"DependOnGroup", 0i64, (KEY_VALUE_FULL_INFORMATION **)&P) < 0 )
return 1i64;
v3 = P;
v4 = 1;
v5 = *((_DWORD *)P + 3);
v6 = (const WCHAR *)((char *)P + *((unsigned int *)P + 2));
if( v5 )
{
while( 1 )
{
RtlInitUnicodeString(&DestinationString, v6, v1);
MaximumLength = DestinationString.MaximumLength;
DestinationString.Length = DestinationString.MaximumLength;
v8 = PipLookupGroupName(&DestinationString, 0);
if( v8 )
{
if( !*((_DWORD *)v8 + 7) )
break;
}
v6 = (const WCHAR *)((char *)v6 + MaximumLength);
v5 -= MaximumLength;
if( !v5 )
goto LABEL_8;
}
v4 = 0;
}
LABEL_8:
ExFreePoolWithTag(v3, 0);
return v4;
}Referenced by:
IopInitializeBootDrivers
IopInitializeSystemDrivers