+IoGetFileObjectGenericMapping()
[reactos.git] / 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
16 #define NDEBUG
17 #include <internal/debug.h>
18
19 /* FUNCTIONS *****************************************************************/
20
21 NTSTATUS STDCALL
22 NtCreateMailslotFile(OUT PHANDLE FileHandle,
23                      IN ACCESS_MASK DesiredAccess,
24                      IN POBJECT_ATTRIBUTES ObjectAttributes,
25                      OUT PIO_STATUS_BLOCK IoStatusBlock,
26                      IN ULONG CreateOptions,
27                      IN ULONG Param,                    /* FIXME: ??? */
28                      IN ULONG MaxMessageSize,
29                      IN PLARGE_INTEGER TimeOut)
30 {
31    IO_MAILSLOT_CREATE_BUFFER Buffer;
32    
33    DPRINT("NtCreateMailslotFile(FileHandle %x, DesiredAccess %x, "
34           "ObjectAttributes %x ObjectAttributes->ObjectName->Buffer %S)\n",
35           FileHandle,DesiredAccess,ObjectAttributes,
36           ObjectAttributes->ObjectName->Buffer);
37    
38    assert_irql(PASSIVE_LEVEL);
39    
40    if (TimeOut != NULL)
41      {
42         Buffer.TimeOut.QuadPart = TimeOut->QuadPart;
43      }
44    else
45      {
46         Buffer.TimeOut.QuadPart = 0;
47      }
48    Buffer.Param = Param;                        /* FIXME: ??? */
49    Buffer.MaxMessageSize = MaxMessageSize;
50
51    return IoCreateFile(FileHandle,
52                        DesiredAccess,
53                        ObjectAttributes,
54                        IoStatusBlock,
55                        NULL,
56                        FILE_ATTRIBUTE_NORMAL,
57                        FILE_SHARE_READ | FILE_SHARE_WRITE,
58                        FILE_CREATE,
59                        CreateOptions,
60                        NULL,
61                        0,
62                        CreateFileTypeMailslot,
63                        (PVOID)&Buffer,
64                        0);
65 }
66
67 /* EOF */