3 #ifndef __SERVICES_FS_NP_NPFS_H
4 #define __SERVICES_FS_NP_NPFS_H
7 * Hacky support for delayed closing of pipes. We need this to support
8 * reading from pipe the was closed on one end.
10 #define FIN_WORKAROUND_READCLOSE
12 typedef struct _NPFS_DEVICE_EXTENSION
14 LIST_ENTRY PipeListHead
;
19 } NPFS_DEVICE_EXTENSION
, *PNPFS_DEVICE_EXTENSION
;
21 typedef struct _NPFS_PIPE
23 UNICODE_STRING PipeName
;
24 LIST_ENTRY PipeListEntry
;
26 LIST_ENTRY ServerFcbListHead
;
27 LIST_ENTRY ClientFcbListHead
;
32 ULONG PipeConfiguration
;
33 ULONG MaximumInstances
;
34 ULONG CurrentInstances
;
37 LARGE_INTEGER TimeOut
;
38 } NPFS_PIPE
, *PNPFS_PIPE
;
40 typedef struct _NPFS_FCB
42 LIST_ENTRY FcbListEntry
;
43 struct _NPFS_FCB
* OtherSide
;
44 struct ETHREAD
*Thread
;
50 ULONG ReadDataAvailable
;
51 ULONG WriteQuotaAvailable
;
58 KSPIN_LOCK DataListLock
; /* Data queue lock */
59 } NPFS_FCB
, *PNPFS_FCB
;
62 extern NPAGED_LOOKASIDE_LIST NpfsPipeDataLookasideList
;
65 #define KeLockMutex(x) KeWaitForSingleObject(x, \
71 #define KeUnlockMutex(x) KeReleaseMutex(x, FALSE);
73 #define CP DPRINT("\n");
76 NTSTATUS STDCALL
NpfsCreate(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
77 NTSTATUS STDCALL
NpfsCreateNamedPipe(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
78 NTSTATUS STDCALL
NpfsClose(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
80 NTSTATUS STDCALL
NpfsRead(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
81 NTSTATUS STDCALL
NpfsWrite(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
83 NTSTATUS STDCALL
NpfsFlushBuffers(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
85 NTSTATUS STDCALL
NpfsFileSystemControl(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
87 NTSTATUS STDCALL
NpfsQueryInformation(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
88 NTSTATUS STDCALL
NpfsSetInformation(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
90 NTSTATUS STDCALL
NpfsQueryVolumeInformation (PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
92 #endif /* __SERVICES_FS_NP_NPFS_H */