VerifierObReferenceObjectByHandle

NTSTATUS __stdcall VerifierObReferenceObjectByHandle(
        VOID *Handle,
        UINT64 DesiredAccess,
        PVOID ObjectType,
        INT64 AccessMode,
        INT64 HandleInformation,
        INT64 HandleInformationa){
  ULONG_PTR v6; 
  ULONG_PTR v8; 
  NTSTATUS v9; 
  NTSTATUS v10; 
  ULONG_PTR v11; 
  ULONG_PTR v12; 

  v6 = (unsigned int)ObjectType;
  v8 = (char)AccessMode;
  v9 = ((__int64(__fastcall *)(VOID *, UINT64, PVOID, INT64, INT64))pXdvObReferenceObjectByHandle)(
         Handle,
         DesiredAccess,
         ObjectType,
         AccessMode,
         HandleInformation);
  v10 = v9;
  if( (v9 == -1073741816 || v9 == -1073741788)
    && (!(_BYTE)v8
     || (KeGetCurrentThread()->$66B5187701DB455CD8F8862345C5A268::$BF47041B248301F87E570BEB78208C5A::_bf_0 & 0x400) != 0)
    && (MmVerifierData & 0x800) != 0 )
  {
    if( !Handle )
    {
      v11 = 0;
      v12 = 245;
LABEL_13:
      VerifierBugCheckIfAppropriate(0xC4ui64, v12, v11, v6, 0, HandleInformationa);
      return v10;
    }
    if( !(_BYTE)v8
      || ((unsigned __int64)Handle & 0xFFFFFFFF80000000ui64) == 0
      || (unsigned __int64)Handle > 0xFFFFFFFFFFFFFFFDui64 )
    {
      v11 = (unsigned int)Handle;
      v12 = 60;
      goto LABEL_13;
    }
    VerifierBugCheckIfAppropriate(0xC4ui64, 0xF7u, (ULONG_PTR)Handle, v6, v8, HandleInformationa);
  }
  return v10;
}

Referenced by:

No references.