ExpGetSystemWriteConstraintInformation

INT64 __fastcall ExpGetSystemWriteConstraintInformation(_QWORD *a1){
  NTSTATUS v2; 
  NTSTATUS Status; 
  UINT64 FileAttributes; 
  UINT64 ShareAccess; 
  UINT64 CreateDisposition; 
  UINT64 CreateOptions; 
  UINT64 EaLength; 
  struct _IO_STATUS_BLOCK IoStatusBlock; 
  struct _OBJECT_ATTRIBUTES ObjectAttributes; 
  _OBJECT_ATTRIBUTES v12; 
  HANDLE FileHandle; 
  void *EventHandle; 
  __int64 OutputBuffer; 
  FileHandle = 0i64;
  EventHandle = 0i64;
  *(_QWORD *)&v12.Length = 48i64;
  v12.RootDirectory = 0i64;
  v12.ObjectName = (_UNICODE_STRING *)L"*,";
  *(_QWORD *)&v12.Attributes = 576i64;
  *(_OWORD *)&v12.SecurityDescriptor = 0i64;
  memset(&ObjectAttributes, 0, sizeof(ObjectAttributes));
  IoStatusBlock = 0i64;
  OutputBuffer = 0i64;
  LODWORD(EaLength) = 0;
  LODWORD(CreateOptions) = 32;
  LODWORD(CreateDisposition) = 1;
  LODWORD(ShareAccess) = 0;
  LODWORD(FileAttributes) = 128;
  v2 = ZwCreateFile(
         &FileHandle,
         0x100000ui64,
         &v12,
         &IoStatusBlock,
         0i64,
         FileAttributes,
         ShareAccess,
         CreateDisposition,
         CreateOptions,
         0i64,
         EaLength);
  Status = v2;
  if( v2 == -1073741772 )
  {
    Status = 0;
  }
  else if( v2 >= 0 )
  {
    ObjectAttributes.Length = 48;
    ObjectAttributes.RootDirectory = 0i64;
    ObjectAttributes.Attributes = 576;
    ObjectAttributes.ObjectName = 0i64;
    *(_OWORD *)&ObjectAttributes.SecurityDescriptor = 0i64;
    Status = ZwCreateEvent(&EventHandle, 0x1F0003ui64, &ObjectAttributes, SynchronizationEvent, 0);
    if( Status >= 0 )
    {
      Status = ZwDeviceIoControlFile(
                 FileHandle,
                 EventHandle,
                 0i64,
                 0i64,
                 &IoStatusBlock,
                 0x220A0Cu,
                 0i64,
                 0,
                 &OutputBuffer,
                 8u);
      if( Status >= 0 )
        Status = IoStatusBlock.Status;
    }
  }
  if( FileHandle )
    ZwClose(FileHandle);
  if( EventHandle )
    ZwClose(EventHandle);
  *a1 = OutputBuffer;
  return(unsigned int)Status;
}

Referenced by:

ExpQuerySystemInformation