8f58c29f032fe6709565168e4807a525398ce8a1
[reactos.git] / reactos / ntoskrnl / io / mailslot.c
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS kernel
4 * FILE: ntoskrnl/ke/bug.c
5 * PURPOSE: Graceful system shutdown if a bug is detected
6 * PROGRAMMER: David Welch (welch@mcmail.com)
7 * UPDATE HISTORY:
8 * Created 22/05/98
9 Changed NtCreateMailslotFile
10 */
11
12 /* INCLUDES *****************************************************************/
13
14 #include <ddk/ntddk.h>
15 #include <internal/io.h>
16
17 #define NDEBUG
18 #include <internal/debug.h>
19
20 /* FUNCTIONS *****************************************************************/
21
22 NTSTATUS STDCALL
23 NtCreateMailslotFile(OUT PHANDLE FileHandle,
24 IN ACCESS_MASK DesiredAccess,
25 IN POBJECT_ATTRIBUTES ObjectAttributes,
26 OUT PIO_STATUS_BLOCK IoStatusBlock,
27 IN ULONG CreateOptions,
28 IN ULONG Param, /* FIXME: ??? */
29 IN ULONG MaxMessageSize,
30 IN PLARGE_INTEGER TimeOut)
31 {
32 IO_MAILSLOT_CREATE_BUFFER Buffer;
33
34 DPRINT("NtCreateMailslotFile(FileHandle %x, DesiredAccess %x, "
35 "ObjectAttributes %x ObjectAttributes->ObjectName->Buffer %S)\n",
36 FileHandle,DesiredAccess,ObjectAttributes,
37 ObjectAttributes->ObjectName->Buffer);
38
39 assert_irql(PASSIVE_LEVEL);
40
41 if (TimeOut != NULL)
42 {
43 Buffer.TimeOut.QuadPart = TimeOut->QuadPart;
44 }
45 else
46 {
47 Buffer.TimeOut.QuadPart = 0;
48 }
49 Buffer.Param = Param; /* FIXME: ??? */
50 Buffer.MaxMessageSize = MaxMessageSize;
51
52 return IoCreateFile(FileHandle,
53 DesiredAccess,
54 ObjectAttributes,
55 IoStatusBlock,
56 NULL,
57 FILE_ATTRIBUTE_NORMAL,
58 FILE_SHARE_READ | FILE_SHARE_WRITE,
59 FILE_CREATE,
60 CreateOptions,
61 NULL,
62 0,
63 CreateFileTypeMailslot,
64 (PVOID)&Buffer,
65 0);
66 }
67
68 /* EOF */