update for HEAD-2003091401
[reactos.git] / ntoskrnl / io / npipe.c
1 /*
2  * COPYRIGHT:       See COPYING in the top level directory
3  * PROJECT:         ReactOS kernel
4  * FILE:            ntoskrnl/io/npipe.c
5  * PURPOSE:         Named pipe helper function
6  * PROGRAMMER:      David Welch (welch@mcmail.com)
7  * UPDATE HISTORY:
8  *                  Created 22/05/98
9  */
10
11 /* INCLUDES *****************************************************************/
12
13 #include <ddk/ntddk.h>
14 #include <internal/io.h>
15
16 #define NDEBUG
17 #include <internal/debug.h>
18
19 /* FUNCTIONS *****************************************************************/
20
21 NTSTATUS STDCALL
22 NtCreateNamedPipeFile(PHANDLE FileHandle,
23                       ACCESS_MASK DesiredAccess,
24                       POBJECT_ATTRIBUTES ObjectAttributes,
25                       PIO_STATUS_BLOCK IoStatusBlock,
26                       ULONG ShareAccess,
27                       ULONG CreateDisposition,
28                       ULONG CreateOptions,
29                       BOOLEAN WriteModeMessage,
30                       BOOLEAN ReadModeMessage,
31                       BOOLEAN NonBlocking,
32                       ULONG MaxInstances,
33                       ULONG InBufferSize,
34                       ULONG OutBufferSize,
35                       PLARGE_INTEGER TimeOut)
36 {
37    IO_PIPE_CREATE_BUFFER Buffer;
38    
39    DPRINT("NtCreateNamedPipeFile(FileHandle %x, DesiredAccess %x, "
40           "ObjectAttributes %x ObjectAttributes->ObjectName->Buffer %S)\n",
41           FileHandle,DesiredAccess,ObjectAttributes,
42           ObjectAttributes->ObjectName->Buffer);
43    
44    assert_irql(PASSIVE_LEVEL);
45    
46    if (TimeOut != NULL)
47      {
48         Buffer.TimeOut.QuadPart = TimeOut->QuadPart;
49      }
50    else
51      {
52         Buffer.TimeOut.QuadPart = 0;
53      }
54    Buffer.WriteModeMessage = WriteModeMessage;
55    Buffer.ReadModeMessage = ReadModeMessage;
56    Buffer.NonBlocking = NonBlocking;
57    Buffer.MaxInstances = MaxInstances;
58    Buffer.InBufferSize = InBufferSize;
59    Buffer.OutBufferSize = OutBufferSize;
60    
61    return IoCreateFile(FileHandle,
62                        DesiredAccess,
63                        ObjectAttributes,
64                        IoStatusBlock,
65                        NULL,
66                        FILE_ATTRIBUTE_NORMAL,
67                        ShareAccess,
68                        CreateDisposition,
69                        CreateOptions,
70                        NULL,
71                        0,
72                        CreateFileTypeNamedPipe,
73                        (PVOID)&Buffer,
74                        0);
75 }
76
77 /* EOF */