1 #ifndef __DRIVERS_FS_NP_NPFS_H
2 #define __DRIVERS_FS_NP_NPFS_H
5 #include <ndk/iotypes.h>
7 typedef struct _NPFS_DEVICE_EXTENSION
9 LIST_ENTRY PipeListHead
;
10 LIST_ENTRY ThreadListHead
;
12 ULONG EmptyWaiterCount
;
16 } NPFS_DEVICE_EXTENSION
, *PNPFS_DEVICE_EXTENSION
;
18 typedef struct _NPFS_PIPE
20 UNICODE_STRING PipeName
;
21 LIST_ENTRY PipeListEntry
;
23 LIST_ENTRY ServerFcbListHead
;
24 LIST_ENTRY ClientFcbListHead
;
25 LIST_ENTRY WaiterListHead
;
26 LIST_ENTRY EmptyBufferListHead
;
31 ULONG PipeConfiguration
;
32 ULONG MaximumInstances
;
33 ULONG CurrentInstances
;
36 LARGE_INTEGER TimeOut
;
37 } NPFS_PIPE
, *PNPFS_PIPE
;
39 typedef struct _NPFS_FCB
41 LIST_ENTRY FcbListEntry
;
42 struct _NPFS_FCB
* OtherSide
;
43 struct ETHREAD
*Thread
;
50 ULONG ReadDataAvailable
;
51 ULONG WriteQuotaAvailable
;
53 LIST_ENTRY ReadRequestListHead
;
60 FAST_MUTEX DataListLock
; /* Data queue lock */
61 } NPFS_FCB
, *PNPFS_FCB
;
63 typedef struct _NPFS_CONTEXT
67 } NPFS_CONTEXT
, *PNPFS_CONTEXT
;
69 typedef struct _NPFS_THREAD_CONTEXT
73 PNPFS_DEVICE_EXTENSION DeviceExt
;
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
;
80 typedef struct _NPFS_WAITER_ENTRY
84 } NPFS_WAITER_ENTRY
, *PNPFS_WAITER_ENTRY
;
87 extern NPAGED_LOOKASIDE_LIST NpfsPipeDataLookasideList
;
90 #define KeLockMutex(x) KeWaitForSingleObject(x, \
96 #define KeUnlockMutex(x) KeReleaseMutex(x, FALSE);
98 #define PAGE_ROUND_UP(x) ( (((ULONG_PTR)x)%PAGE_SIZE) ? ((((ULONG_PTR)x)&(~(PAGE_SIZE-1)))+PAGE_SIZE) : ((ULONG_PTR)x) )
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
);
105 NTSTATUS STDCALL
NpfsRead(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
106 NTSTATUS STDCALL
NpfsWrite(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
108 NTSTATUS STDCALL
NpfsFlushBuffers(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
110 NTSTATUS STDCALL
NpfsFileSystemControl(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
112 NTSTATUS STDCALL
NpfsQueryInformation(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
113 NTSTATUS STDCALL
NpfsSetInformation(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
115 NTSTATUS STDCALL
NpfsQueryVolumeInformation (PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
118 DriverEntry(PDRIVER_OBJECT DriverObject
,
119 PUNICODE_STRING RegistryPath
);
121 #endif /* __DRIVERS_FS_NP_NPFS_H */