PiDevCfgResolveVariableKeyCopy
NTSTATUS __stdcall PiDevCfgResolveVariableKeyCopy(
_PI_DEVCFG_RESOLVE_CONTEXT *ResolveContext,
VOID *VariableKeyHandle,
_PI_DEVCFG_VARIABLE_ENTRY *VariableEntryResult){
int v5;
int v6;
NTSTATUS RegistryValue;
_KEY_VALUE_FULL_INFORMATION *v8;
VOID *v9;
_KEY_VALUE_FULL_INFORMATION *Information;
VOID *Handle;
Handle = 0i64;
Information = 0i64;
v5 = 0;
v6 = PiDevCfgResolveVariableKeyHandle(ResolveContext, VariableKeyHandle, &Handle);
if( v6 < 0 )
goto LABEL_12;
RegistryValue = IopGetRegistryValue(VariableKeyHandle, (PWCHAR)L"Delete", 0i64, &Information);
v8 = Information;
v6 = RegistryValue;
if( RegistryValue >= 0 )
{
if( !PnpValidateRegistryValue(Information) )
{
v6 = -1073741823;
goto LABEL_10;
}
if( *(ULONG *)((char *)&v8->TitleIndex + v8->DataOffset) )
v5 = 0x100000;
}
else
{
if( RegistryValue != -1073741772 )
goto LABEL_10;
v6 = 0;
}
v9 = Handle;
VariableEntryResult[9] = 0;
Handle = 0i64;
VariableEntryResult[8] = v5 | 0x8000;
*((_QWORD *)VariableEntryResult + 5) = v9;
LABEL_10:
if( v8 )
ExFreePoolWithTag(v8, 0);
LABEL_12:
if( Handle )
ZwClose((_HANDLE)Handle);
return v6;
}Referenced by:
No references.