- Data is now written to the readers data buffer and the reader reads from his own...
[reactos.git] / reactos / drivers / fs / np / npfs.h
1 /* $Id$ */
2
3 #ifndef __DRIVERS_FS_NP_NPFS_H
4 #define __DRIVERS_FS_NP_NPFS_H
5
6 typedef struct _NPFS_DEVICE_EXTENSION
7 {
8 LIST_ENTRY PipeListHead;
9 KMUTEX PipeListLock;
10 ULONG MinQuota;
11 ULONG DefaultQuota;
12 ULONG MaxQuota;
13 } NPFS_DEVICE_EXTENSION, *PNPFS_DEVICE_EXTENSION;
14
15 typedef struct _NPFS_PIPE
16 {
17 UNICODE_STRING PipeName;
18 LIST_ENTRY PipeListEntry;
19 KMUTEX FcbListLock;
20 LIST_ENTRY ServerFcbListHead;
21 LIST_ENTRY ClientFcbListHead;
22 ULONG PipeType;
23 ULONG ReadMode;
24 ULONG WriteMode;
25 ULONG CompletionMode;
26 ULONG PipeConfiguration;
27 ULONG MaximumInstances;
28 ULONG CurrentInstances;
29 ULONG InboundQuota;
30 ULONG OutboundQuota;
31 LARGE_INTEGER TimeOut;
32 } NPFS_PIPE, *PNPFS_PIPE;
33
34 typedef struct _NPFS_FCB
35 {
36 LIST_ENTRY FcbListEntry;
37 struct _NPFS_FCB* OtherSide;
38 struct ETHREAD *Thread;
39 PNPFS_PIPE Pipe;
40 KEVENT ConnectEvent;
41 KEVENT Event;
42 ULONG PipeEnd;
43 ULONG PipeState;
44 ULONG ReadDataAvailable;
45 ULONG WriteQuotaAvailable;
46
47 PVOID Data;
48 PVOID ReadPtr;
49 PVOID WritePtr;
50 ULONG MaxDataLength;
51
52 KSPIN_LOCK DataListLock; /* Data queue lock */
53 } NPFS_FCB, *PNPFS_FCB;
54
55
56 extern NPAGED_LOOKASIDE_LIST NpfsPipeDataLookasideList;
57
58
59 #define KeLockMutex(x) KeWaitForSingleObject(x, \
60 UserRequest, \
61 KernelMode, \
62 FALSE, \
63 NULL);
64
65 #define KeUnlockMutex(x) KeReleaseMutex(x, FALSE);
66
67
68 NTSTATUS STDCALL NpfsCreate(PDEVICE_OBJECT DeviceObject, PIRP Irp);
69 NTSTATUS STDCALL NpfsCreateNamedPipe(PDEVICE_OBJECT DeviceObject, PIRP Irp);
70 NTSTATUS STDCALL NpfsClose(PDEVICE_OBJECT DeviceObject, PIRP Irp);
71
72 NTSTATUS STDCALL NpfsRead(PDEVICE_OBJECT DeviceObject, PIRP Irp);
73 NTSTATUS STDCALL NpfsWrite(PDEVICE_OBJECT DeviceObject, PIRP Irp);
74
75 NTSTATUS STDCALL NpfsFlushBuffers(PDEVICE_OBJECT DeviceObject, PIRP Irp);
76
77 NTSTATUS STDCALL NpfsFileSystemControl(PDEVICE_OBJECT DeviceObject, PIRP Irp);
78
79 NTSTATUS STDCALL NpfsQueryInformation(PDEVICE_OBJECT DeviceObject, PIRP Irp);
80 NTSTATUS STDCALL NpfsSetInformation(PDEVICE_OBJECT DeviceObject, PIRP Irp);
81
82 NTSTATUS STDCALL NpfsQueryVolumeInformation (PDEVICE_OBJECT DeviceObject, PIRP Irp);
83
84 #endif /* __DRIVERS_FS_NP_NPFS_H */