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.