NtCreateMailslotFile

NTSTATUS __stdcall NtCreateMailslotFile(
        VOID **FileHandle,
        UINT64 DesiredAccess,
        _OBJECT_ATTRIBUTES *ObjectAttributes,
        _IO_STATUS_BLOCK *IoStatusBlock,
        UINT64 CreateOptions,
        UINT64 MailslotQuota,
        UINT64 MaximumMessageSize,
        _LARGE_INTEGER *ReadTimeout){
  UINT64 v9; 
  UINT64 ShareAccess; 
  UINT64 Disposition; 
  UINT64 v12; 
  UINT64 v13; 
  UINT64 v14; 
  __int128 InternalParameters; 
  __int64 v16; 

  InternalParameters = 0i64;
  v16 = 0i64;
  if( ReadTimeout )
  {
    LOBYTE(v16) = 1;
    if( KeGetCurrentThread()->PreviousMode )
    {
      if( ((unsigned __int8)ReadTimeout & 3) != 0 )
        ExRaiseDatatypeMisalignment();
      *((_LARGE_INTEGER *)&InternalParameters + 1) = *ReadTimeout;
    }
    else
    {
      *((_LARGE_INTEGER *)&InternalParameters + 1) = *ReadTimeout;
    }
  }
  LODWORD(InternalParameters) = MailslotQuota;
  DWORD1(InternalParameters) = MaximumMessageSize;
  LODWORD(v14) = 0;
  LODWORD(v13) = 0;
  LODWORD(v12) = CreateOptions;
  LODWORD(Disposition) = 2;
  LODWORD(ShareAccess) = 3;
  LODWORD(v9) = 0;
  return IoCreateFile(
           FileHandle,
           (unsigned int)DesiredAccess,
           ObjectAttributes,
           IoStatusBlock,
           0i64,
           v9,
           ShareAccess,
           Disposition,
           v12,
           0i64,
           v13,
           CreateFileTypeMailslot,
           &InternalParameters,
           v14);
}

Referenced by:

No references.