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.