Copy wininet to branch
[reactos.git] / reactos / ntoskrnl / io / mailslot.c
1 /* $Id$
2 *
3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS kernel
5 * FILE: ntoskrnl/io/mailslot.c
6 * PURPOSE: No purpose listed.
7 *
8 * PROGRAMMERS: David Welch (welch@mcmail.com)
9 */
10
11 /* INCLUDES *****************************************************************/
12
13 #include <ntoskrnl.h>
14 #define NDEBUG
15 #include <internal/debug.h>
16
17 /* FUNCTIONS *****************************************************************/
18
19 NTSTATUS STDCALL
20 NtCreateMailslotFile(OUT PHANDLE FileHandle,
21 IN ACCESS_MASK DesiredAccess,
22 IN POBJECT_ATTRIBUTES ObjectAttributes,
23 OUT PIO_STATUS_BLOCK IoStatusBlock,
24 IN ULONG CreateOptions,
25 IN ULONG MailslotQuota,
26 IN ULONG MaxMessageSize,
27 IN PLARGE_INTEGER TimeOut)
28 {
29 MAILSLOT_CREATE_PARAMETERS Buffer;
30
31 DPRINT("NtCreateMailslotFile(FileHandle %x, DesiredAccess %x, "
32 "ObjectAttributes %x ObjectAttributes->ObjectName->Buffer %S)\n",
33 FileHandle,DesiredAccess,ObjectAttributes,
34 ObjectAttributes->ObjectName->Buffer);
35
36 ASSERT_IRQL(PASSIVE_LEVEL);
37
38 if (TimeOut != NULL)
39 {
40 Buffer.ReadTimeout.QuadPart = TimeOut->QuadPart;
41 Buffer.TimeoutSpecified = TRUE;
42 }
43 else
44 {
45 Buffer.TimeoutSpecified = FALSE;
46 }
47 Buffer.MailslotQuota = MailslotQuota;
48 Buffer.MaximumMessageSize = MaxMessageSize;
49
50 return IoCreateFile(FileHandle,
51 DesiredAccess,
52 ObjectAttributes,
53 IoStatusBlock,
54 NULL,
55 FILE_ATTRIBUTE_NORMAL,
56 FILE_SHARE_READ | FILE_SHARE_WRITE,
57 FILE_CREATE,
58 CreateOptions,
59 NULL,
60 0,
61 CreateFileTypeMailslot,
62 (PVOID)&Buffer,
63 0);
64 }
65
66 /* EOF */