PiDqDeleteUserObjectFromLoadedHives

NTSTATUS __fastcall PiDqDeleteUserObjectFromLoadedHives(const wchar_t *a1, int a2){
  __int64 v4; 
  NTSTATUS result; 
  unsigned int i; 
  __int64 v7; 
  HANDLE KeyHandle; 
  __int64 v9; 
  HANDLE Handle; 
  __int16 v11[256]; 
  KeyHandle = 0i64;
  Handle = 0i64;
  if( PiPnpRtlCtx )
    v4 = *(_QWORD *)(PiPnpRtlCtx + 224);
  else
    v4 = 0i64;
  result = SysCtxRegOpenKey(v4, 0i64, L"\\REGISTRY\\USER", 0, 8u, &KeyHandle);
  if( result >= 0 )
  {
    for( i = 0; ; ++i )
    {
      LODWORD(v9) = 256;
      result = RegRtlEnumKey(KeyHandle, i, (char *)v11, (unsigned int *)&v9);
      if( result < 0 )
        break;
      if( PiPnpRtlCtx )
        v7 = *(_QWORD *)(PiPnpRtlCtx + 224);
      else
        v7 = 0i64;
      if( (int)SysCtxRegOpenKey(v7, (char *)KeyHandle, (const WCHAR *)v11, 0, 1u, &Handle) >= 0 )
      {
        PiDqDeleteUserObject(Handle, (WCHAR *)a1, (unsigned int)a2);
        ZwClose(Handle);
      }
    }
  }
  if( KeyHandle )
    return ZwClose(KeyHandle);
  return result;
}

Referenced by:

No references.