NtOpenPrivateNamespace

NTSTATUS __stdcall NtOpenPrivateNamespace(
        PVOID *NamespaceHandle,
        UINT64 DesiredAccess,
        _OBJECT_ATTRIBUTES *ObjectAttributes,
        PVOID BoundaryDescriptor){
  ACCESS_MASK v4; 
  KPROCESSOR_MODE AccessMode; 
  __int64 v7; 
  NTSTATUS result; 
  __int64 *CurrentServerSiloGlobals; 
  _ETHREAD *CurrentThread; 
  UINT64 v11; 
  INT64 *v12; 
  struct _DMA_ADAPTER *v13; 
  NTSTATUS v14; 
  unsigned int Attributes; 
  PVOID P; 
  void *Handle; 
  v4 = DesiredAccess;
  P = 0i64;
  Handle = 0i64;
  AccessMode = *((_BYTE *)KeGetCurrentThread() + 562);
  Attributes = 0;
  if( AccessMode )
  {
    v7 = 0x7FFFFFFF0000i64;
    if( (unsigned __int64)NamespaceHandle < 0x7FFFFFFF0000i64 )
      v7 = (__int64)NamespaceHandle;
    *(_QWORD *)v7 = *(_QWORD *)v7;
    if( ObjectAttributes )
    {
      if( ((unsigned __int8)ObjectAttributes & 7) != 0 )
        ExRaiseDatatypeMisalignment();
      Attributes = ObjectAttributes->Attributes;
    }
  }
  else if( ObjectAttributes )
  {
    Attributes = ObjectAttributes->Attributes;
  }
  result = ObpCaptureBoundaryDescriptor((__m128i *)BoundaryDescriptor, (CHAR **)&P);
  if( result >= 0 )
  {
    CurrentServerSiloGlobals = PsGetCurrentServerSiloGlobals();
    CurrentThread = (_ETHREAD *)KeGetCurrentThread();
    --*((_WORD *)CurrentThread + 242);
    v11 = (UINT64)(CurrentServerSiloGlobals + 90);
    ExAcquirePushLockExclusiveEx((UINT64)(CurrentServerSiloGlobals + 90), 0i64);
    v12 = ObpLookupNamespaceEntry((INT64)(CurrentServerSiloGlobals + 16), (INT64)P);
    ExFreePoolWithTag(P, 0x534E624Fu);
    if( v12 && (v13 = (struct _DMA_ADAPTER *)v12[2]) != 0i64 )
    {
      ObfReferenceObject(v13);
      ExReleasePushLockEx(v11, 0i64);
      KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
      v14 = ObOpenObjectByPointer(
              v13,
              Attributes & (AccessMode != 0 ? 7666 : 73714),
              0i64,
              v4,
              ObpDirectoryObjectType,
              AccessMode,
              &Handle);
      LODWORD(P) = v14;
      HalPutDmaAdapter(v13);
      *NamespaceHandle = Handle;
      return v14;
    }
    else
    {
      ExReleasePushLockEx(v11, 0i64);
      KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
      return -1073741766;
    }
  }
  return result;
}

Referenced by:

No references.