1 #ifndef __INCLUDE_NAPI_NPIPE_H
2 #define __INCLUDE_NAPI_NPIPE_H
7 * FUNCTION: ZwCreateNamedPipeFile creates named pipe
9 * NamedPipeFileHandle (OUT) = Caller supplied storage for the
11 * DesiredAccess = Specifies the type of access that the caller
12 * requires to the file boject
13 * ObjectAttributes = Points to a structure that specifies the
15 * IoStatusBlock = Points to a variable that receives the final
16 * completion status and information
17 * ShareAccess = Specifies the limitations on sharing of the file.
18 * This parameter can be zero or any compatible
19 * combination of the following flags
22 * CreateDisposition = Specifies what to do depending on whether
23 * the file already exists. This must be one of
24 * the following values
28 * CreateOptions = Specifies the options to be applied when
29 * creating or opening the file, as a compatible
30 * combination of the following flags
32 * FILE_SYNCHRONOUS_IO_ALERT
33 * FILE_SYNCHRONOUS_IO_NONALERT
34 * TypeMessage = Specifies whether the data written to the pipe is
35 * interpreted as a sequence of messages or as a
37 * ReadModeMessage = Specifies whether the data read from the pipe
38 * is interpreted as a sequence of messages or as
40 * NonBlocking = Specifies whether non-blocking mode is enabled
41 * MaxInstances = Specifies the maximum number of instancs that can
42 * be created for this pipe
43 * InBufferSize = Specifies the number of bytes to reserve for the
45 * OutBufferSize = Specifies the number of bytes to reserve for the
47 * DefaultTimeout = Optionally points to a variable that specifies
48 * the default timeout value in units of
50 * REMARKS: This funciton maps to the win32 function CreateNamedPipe
55 NTSTATUS STDCALL NtCreateNamedPipeFile(OUT PHANDLE NamedPipeFileHandle,
56 IN ACCESS_MASK DesiredAccess,
57 IN POBJECT_ATTRIBUTES ObjectAttributes,
58 OUT PIO_STATUS_BLOCK IoStatusBlock,
60 IN ULONG CreateDisposition,
61 IN ULONG CreateOptions,
62 IN BOOLEAN WriteModeMessage,
63 IN BOOLEAN ReadModeMessage,
64 IN BOOLEAN NonBlocking,
65 IN ULONG MaxInstances,
66 IN ULONG InBufferSize,
67 IN ULONG OutBufferSize,
68 IN PLARGE_INTEGER DefaultTimeOut);
69 NTSTATUS STDCALL ZwCreateNamedPipeFile(OUT PHANDLE NamedPipeFileHandle,
70 IN ACCESS_MASK DesiredAccess,
71 IN POBJECT_ATTRIBUTES ObjectAttributes,
72 OUT PIO_STATUS_BLOCK IoStatusBlock,
74 IN ULONG CreateDisposition,
75 IN ULONG CreateOptions,
76 IN BOOLEAN WriteModeMessage,
77 IN BOOLEAN ReadModeMessage,
78 IN BOOLEAN NonBlocking,
79 IN ULONG MaxInstances,
80 IN ULONG InBufferSize,
81 IN ULONG OutBufferSize,
82 IN PLARGE_INTEGER DefaultTimeOut);
84 #define FSCTL_PIPE_ASSIGN_EVENT \
85 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
87 #define FSCTL_PIPE_DISCONNECT \
88 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
90 #define FSCTL_PIPE_LISTEN \
91 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
93 #define FSCTL_PIPE_PEEK \
94 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 3, METHOD_BUFFERED, FILE_READ_DATA)
96 #define FSCTL_PIPE_QUERY_EVENT \
97 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
99 #define FSCTL_PIPE_TRANSCEIVE \
100 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 5, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)
102 #define FSCTL_PIPE_WAIT \
103 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
105 #define FSCTL_PIPE_IMPERSONATE \
106 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
108 #define FSCTL_PIPE_SET_CLIENT_PROCESS \
109 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
111 #define FSCTL_PIPE_QUERY_CLIENT_PROCESS \
112 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
114 #define FSCTL_PIPE_GET_STATE \
115 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 10, METHOD_BUFFERED, FILE_ANY_ACCESS)
117 #define FSCTL_PIPE_SET_STATE \
118 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 11, METHOD_BUFFERED, FILE_ANY_ACCESS)
120 #define FSCTL_PIPE_INTERNAL_READ \
121 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2045, METHOD_BUFFERED, FILE_READ_DATA)
123 #define FSCTL_PIPE_INTERNAL_WRITE \
124 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2046, METHOD_BUFFERED, FILE_WRITE_DATA)
126 #define FSCTL_PIPE_INTERNAL_TRANSCEIVE \
127 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2047, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)
129 #define FSCTL_PIPE_INTERNAL_READ_OVFLOW \
130 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2048, METHOD_BUFFERED, FILE_READ_DATA)
133 typedef struct _NPFS_WAIT_PIPE
135 LARGE_INTEGER Timeout;
136 } NPFS_WAIT_PIPE, *PNPFS_WAIT_PIPE;
138 #ifdef __GNUC__ /* robd */
139 typedef struct _NPFS_LISTEN
141 } NPFS_LISTEN, *PNPFS_LISTEN;
144 typedef struct _NPFS_SET_STATE
146 BOOLEAN WriteModeMessage;
147 BOOLEAN ReadModeMessage;
151 LARGE_INTEGER Timeout;
152 } NPFS_SET_STATE, *PNPFS_SET_STATE;
154 typedef struct _NPFS_GET_STATE
156 BOOLEAN WriteModeMessage;
157 BOOLEAN ReadModeMessage;
161 LARGE_INTEGER Timeout;
162 } NPFS_GET_STATE, *PNPFS_GET_STATE;
164 typedef struct _FILE_PIPE_PEEK_BUFFER
166 ULONG NamedPipeState;
167 ULONG ReadDataAvailable;
168 ULONG NumberOfMessages;
171 } FILE_PIPE_PEEK_BUFFER, *PFILE_PIPE_PEEK_BUFFER;
173 #define FILE_PIPE_BYTE_STREAM_TYPE 0x00000000
174 #define FILE_PIPE_MESSAGE_TYPE 0x00000001
176 #define FILE_PIPE_BYTE_STREAM_MODE 0x00000000
177 #define FILE_PIPE_MESSAGE_MODE 0x00000001
179 #define FILE_PIPE_QUEUE_OPERATION 0x00000000
180 #define FILE_PIPE_COMPLETE_OPERATION 0x00000001
182 #define FILE_PIPE_INBOUND 0x00000000
183 #define FILE_PIPE_OUTBOUND 0x00000001
184 #define FILE_PIPE_FULL_DUPLEX 0x00000002
186 #define FILE_PIPE_DISCONNECTED_STATE 0x00000001
187 #define FILE_PIPE_LISTENING_STATE 0x00000002
188 #define FILE_PIPE_CONNECTED_STATE 0x00000003
189 #define FILE_PIPE_CLOSING_STATE 0x00000004
191 #define FILE_PIPE_CLIENT_END 0x00000000
192 #define FILE_PIPE_SERVER_END 0x00000001
194 #define FILE_PIPE_READ_DATA 0x00000000
195 #define FILE_PIPE_WRITE_SPACE 0x00000001
198 #endif /* __INCLUDE_NAPI_NPIPE_H */