Added ObGetObjectHandleCount().
[reactos.git] / reactos / 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
15 #define NDEBUG
16 #include <internal/debug.h>
17
18 /* FUNCTIONS *****************************************************************/
19
20 NTSTATUS STDCALL
21 NtCreateNamedPipeFile(PHANDLE FileHandle,
22 ACCESS_MASK DesiredAccess,
23 POBJECT_ATTRIBUTES ObjectAttributes,
24 PIO_STATUS_BLOCK IoStatusBlock,
25 ULONG ShareAccess,
26 ULONG CreateDisposition,
27 ULONG CreateOptions,
28 BOOLEAN WriteModeMessage,
29 BOOLEAN ReadModeMessage,
30 BOOLEAN NonBlocking,
31 ULONG MaxInstances,
32 ULONG InBufferSize,
33 ULONG OutBufferSize,
34 PLARGE_INTEGER TimeOut)
35 {
36 IO_PIPE_CREATE_BUFFER Buffer;
37
38 DPRINT("NtCreateNamedPipeFile(FileHandle %x, DesiredAccess %x, "
39 "ObjectAttributes %x ObjectAttributes->ObjectName->Buffer %S)\n",
40 FileHandle,DesiredAccess,ObjectAttributes,
41 ObjectAttributes->ObjectName->Buffer);
42
43 assert_irql(PASSIVE_LEVEL);
44
45 if (TimeOut != NULL)
46 {
47 Buffer.TimeOut.QuadPart = TimeOut->QuadPart;
48 }
49 else
50 {
51 Buffer.TimeOut.QuadPart = 0;
52 }
53 Buffer.WriteModeMessage = WriteModeMessage;
54 Buffer.ReadModeMessage = ReadModeMessage;
55 Buffer.NonBlocking = NonBlocking;
56 Buffer.MaxInstances = MaxInstances;
57 Buffer.InBufferSize = InBufferSize;
58 Buffer.OutBufferSize = OutBufferSize;
59
60 return IoCreateFile(FileHandle,
61 DesiredAccess,
62 ObjectAttributes,
63 IoStatusBlock,
64 NULL,
65 FILE_ATTRIBUTE_NORMAL,
66 ShareAccess,
67 CreateDisposition,
68 CreateOptions,
69 NULL,
70 0,
71 CreateFileTypeNamedPipe,
72 (PVOID)&Buffer,
73 0);
74 }
75
76 /* EOF */