fixed warnings when compiled with -Wmissing-declarations
[reactos.git] / reactos / drivers / fs / np / npfs.h
1 #ifndef __DRIVERS_FS_NP_NPFS_H
2 #define __DRIVERS_FS_NP_NPFS_H
3
4 #include <ntifs.h>
5 #include <ndk/iotypes.h>
6
7 typedef struct _NPFS_DEVICE_EXTENSION
8 {
9 LIST_ENTRY PipeListHead;
10 LIST_ENTRY ThreadListHead;
11 KMUTEX PipeListLock;
12 ULONG EmptyWaiterCount;
13 ULONG MinQuota;
14 ULONG DefaultQuota;
15 ULONG MaxQuota;
16 } NPFS_DEVICE_EXTENSION, *PNPFS_DEVICE_EXTENSION;
17
18 typedef struct _NPFS_PIPE
19 {
20 UNICODE_STRING PipeName;
21 LIST_ENTRY PipeListEntry;
22 KMUTEX FcbListLock;
23 LIST_ENTRY ServerFcbListHead;
24 LIST_ENTRY ClientFcbListHead;
25 LIST_ENTRY WaiterListHead;
26 LIST_ENTRY EmptyBufferListHead;
27 ULONG PipeType;
28 ULONG ReadMode;
29 ULONG WriteMode;
30 ULONG CompletionMode;
31 ULONG PipeConfiguration;
32 ULONG MaximumInstances;
33 ULONG CurrentInstances;
34 ULONG InboundQuota;
35 ULONG OutboundQuota;
36 LARGE_INTEGER TimeOut;
37 } NPFS_PIPE, *PNPFS_PIPE;
38
39 typedef struct _NPFS_FCB
40 {
41 LIST_ENTRY FcbListEntry;
42 struct _NPFS_FCB* OtherSide;
43 struct ETHREAD *Thread;
44 PNPFS_PIPE Pipe;
45 KEVENT ConnectEvent;
46 KEVENT ReadEvent;
47 KEVENT WriteEvent;
48 ULONG PipeEnd;
49 ULONG PipeState;
50 ULONG ReadDataAvailable;
51 ULONG WriteQuotaAvailable;
52
53 LIST_ENTRY ReadRequestListHead;
54
55 PVOID Data;
56 PVOID ReadPtr;
57 PVOID WritePtr;
58 ULONG MaxDataLength;
59
60 FAST_MUTEX DataListLock; /* Data queue lock */
61 } NPFS_FCB, *PNPFS_FCB;
62
63 typedef struct _NPFS_CONTEXT
64 {
65 LIST_ENTRY ListEntry;
66 PKEVENT WaitEvent;
67 } NPFS_CONTEXT, *PNPFS_CONTEXT;
68
69 typedef struct _NPFS_THREAD_CONTEXT
70 {
71 ULONG Count;
72 KEVENT Event;
73 PNPFS_DEVICE_EXTENSION DeviceExt;
74 LIST_ENTRY ListEntry;
75 PVOID WaitObjectArray[MAXIMUM_WAIT_OBJECTS];
76 KWAIT_BLOCK WaitBlockArray[MAXIMUM_WAIT_OBJECTS];
77 PIRP WaitIrpArray[MAXIMUM_WAIT_OBJECTS];
78 } NPFS_THREAD_CONTEXT, *PNPFS_THREAD_CONTEXT;
79
80 typedef struct _NPFS_WAITER_ENTRY
81 {
82 LIST_ENTRY Entry;
83 PNPFS_FCB Fcb;
84 } NPFS_WAITER_ENTRY, *PNPFS_WAITER_ENTRY;
85
86
87 extern NPAGED_LOOKASIDE_LIST NpfsPipeDataLookasideList;
88
89
90 #define KeLockMutex(x) KeWaitForSingleObject(x, \
91 UserRequest, \
92 KernelMode, \
93 FALSE, \
94 NULL);
95
96 #define KeUnlockMutex(x) KeReleaseMutex(x, FALSE);
97
98 #define PAGE_ROUND_UP(x) ( (((ULONG_PTR)x)%PAGE_SIZE) ? ((((ULONG_PTR)x)&(~(PAGE_SIZE-1)))+PAGE_SIZE) : ((ULONG_PTR)x) )
99
100 NTSTATUS STDCALL NpfsCreate(PDEVICE_OBJECT DeviceObject, PIRP Irp);
101 NTSTATUS STDCALL NpfsCreateNamedPipe(PDEVICE_OBJECT DeviceObject, PIRP Irp);
102 NTSTATUS STDCALL NpfsCleanup(PDEVICE_OBJECT DeviceObject, PIRP Irp);
103 NTSTATUS STDCALL NpfsClose(PDEVICE_OBJECT DeviceObject, PIRP Irp);
104
105 NTSTATUS STDCALL NpfsRead(PDEVICE_OBJECT DeviceObject, PIRP Irp);
106 NTSTATUS STDCALL NpfsWrite(PDEVICE_OBJECT DeviceObject, PIRP Irp);
107
108 NTSTATUS STDCALL NpfsFlushBuffers(PDEVICE_OBJECT DeviceObject, PIRP Irp);
109
110 NTSTATUS STDCALL NpfsFileSystemControl(PDEVICE_OBJECT DeviceObject, PIRP Irp);
111
112 NTSTATUS STDCALL NpfsQueryInformation(PDEVICE_OBJECT DeviceObject, PIRP Irp);
113 NTSTATUS STDCALL NpfsSetInformation(PDEVICE_OBJECT DeviceObject, PIRP Irp);
114
115 NTSTATUS STDCALL NpfsQueryVolumeInformation (PDEVICE_OBJECT DeviceObject, PIRP Irp);
116
117 NTSTATUS STDCALL
118 DriverEntry(PDRIVER_OBJECT DriverObject,
119 PUNICODE_STRING RegistryPath);
120
121 #endif /* __DRIVERS_FS_NP_NPFS_H */