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