3 #ifndef __DRIVERS_FS_NP_NPFS_H
4 #define __DRIVERS_FS_NP_NPFS_H
6 typedef struct _NPFS_DEVICE_EXTENSION
8 LIST_ENTRY PipeListHead
;
9 LIST_ENTRY ThreadListHead
;
11 ULONG EmptyWaiterCount
;
15 } NPFS_DEVICE_EXTENSION
, *PNPFS_DEVICE_EXTENSION
;
17 typedef struct _NPFS_PIPE
19 UNICODE_STRING PipeName
;
20 LIST_ENTRY PipeListEntry
;
22 LIST_ENTRY ServerFcbListHead
;
23 LIST_ENTRY ClientFcbListHead
;
24 LIST_ENTRY WaiterListHead
;
25 LIST_ENTRY EmptyBufferListHead
;
30 ULONG PipeConfiguration
;
31 ULONG MaximumInstances
;
32 ULONG CurrentInstances
;
35 LARGE_INTEGER TimeOut
;
36 } NPFS_PIPE
, *PNPFS_PIPE
;
38 typedef struct _NPFS_FCB
40 LIST_ENTRY FcbListEntry
;
41 struct _NPFS_FCB
* OtherSide
;
42 struct ETHREAD
*Thread
;
49 ULONG ReadDataAvailable
;
50 ULONG WriteQuotaAvailable
;
52 LIST_ENTRY ReadRequestListHead
;
59 FAST_MUTEX DataListLock
; /* Data queue lock */
60 } NPFS_FCB
, *PNPFS_FCB
;
62 typedef struct _NPFS_CONTEXT
66 } NPFS_CONTEXT
, *PNPFS_CONTEXT
;
68 typedef struct _NPFS_THREAD_CONTEXT
72 PNPFS_DEVICE_EXTENSION DeviceExt
;
74 PVOID WaitObjectArray
[MAXIMUM_WAIT_OBJECTS
];
75 KWAIT_BLOCK WaitBlockArray
[MAXIMUM_WAIT_OBJECTS
];
76 PIRP WaitIrpArray
[MAXIMUM_WAIT_OBJECTS
];
77 } NPFS_THREAD_CONTEXT
, *PNPFS_THREAD_CONTEXT
;
79 typedef struct _NPFS_WAITER_ENTRY
83 } NPFS_WAITER_ENTRY
, *PNPFS_WAITER_ENTRY
;
86 extern NPAGED_LOOKASIDE_LIST NpfsPipeDataLookasideList
;
89 #define KeLockMutex(x) KeWaitForSingleObject(x, \
95 #define KeUnlockMutex(x) KeReleaseMutex(x, FALSE);
98 NTSTATUS STDCALL
NpfsCreate(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
99 NTSTATUS STDCALL
NpfsCreateNamedPipe(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
100 NTSTATUS STDCALL
NpfsCleanup(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
101 NTSTATUS STDCALL
NpfsClose(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
103 NTSTATUS STDCALL
NpfsRead(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
104 NTSTATUS STDCALL
NpfsWrite(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
106 NTSTATUS STDCALL
NpfsFlushBuffers(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
108 NTSTATUS STDCALL
NpfsFileSystemControl(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
110 NTSTATUS STDCALL
NpfsQueryInformation(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
111 NTSTATUS STDCALL
NpfsSetInformation(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
113 NTSTATUS STDCALL
NpfsQueryVolumeInformation (PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
115 #endif /* __DRIVERS_FS_NP_NPFS_H */