2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS kernel
4 * FILE: drivers/filesystems/msfs/msfs.h
5 * PURPOSE: Mailslot filesystem
6 * PROGRAMMER: Eric Kohl
7 * Nikita Pechenkin (n.pechenkin@mail.ru)
10 #ifndef __DRIVERS_FS_MS_MSFS_H
11 #define __DRIVERS_FS_MS_MSFS_H
15 #define DEFAULTAPI NTAPI
17 typedef struct _MSFS_DEVICE_EXTENSION
19 LIST_ENTRY FcbListHead
;
21 } MSFS_DEVICE_EXTENSION
, *PMSFS_DEVICE_EXTENSION
;
24 typedef struct _MSFS_FCB
26 FSRTL_COMMON_FCB_HEADER RFCB
;
28 LIST_ENTRY FcbListEntry
;
29 KSPIN_LOCK CcbListLock
;
30 LIST_ENTRY CcbListHead
;
31 struct _MSFS_CCB
*ServerCcb
;
33 LARGE_INTEGER TimeOut
;
36 KSPIN_LOCK MessageListLock
;
37 LIST_ENTRY MessageListHead
;
38 IO_CSQ CancelSafeQueue
;
40 LIST_ENTRY PendingIrpQueue
;
41 } MSFS_FCB
, *PMSFS_FCB
;
44 typedef struct _MSFS_DPC_CTX
50 IO_CSQ_IRP_CONTEXT CsqContext
;
51 } MSFS_DPC_CTX
, *PMSFS_DPC_CTX
;
54 typedef struct _MSFS_CCB
56 LIST_ENTRY CcbListEntry
;
58 } MSFS_CCB
, *PMSFS_CCB
;
61 typedef struct _MSFS_MESSAGE
63 LIST_ENTRY MessageListEntry
;
66 } MSFS_MESSAGE
, *PMSFS_MESSAGE
;
69 #define KeLockMutex(x) KeWaitForSingleObject(x, \
75 #define KeUnlockMutex(x) KeReleaseMutex(x, FALSE);
77 DRIVER_DISPATCH MsfsCreate
;
78 NTSTATUS DEFAULTAPI
MsfsCreate(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
80 DRIVER_DISPATCH MsfsCreateMailslot
;
81 NTSTATUS DEFAULTAPI
MsfsCreateMailslot(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
83 DRIVER_DISPATCH MsfsClose
;
84 NTSTATUS DEFAULTAPI
MsfsClose(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
86 DRIVER_DISPATCH MsfsQueryInformation
;
87 NTSTATUS DEFAULTAPI
MsfsQueryInformation(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
89 DRIVER_DISPATCH MsfsSetInformation
;
90 NTSTATUS DEFAULTAPI
MsfsSetInformation(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
92 DRIVER_DISPATCH MsfsRead
;
93 NTSTATUS DEFAULTAPI
MsfsRead(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
95 DRIVER_DISPATCH MsfsWrite
;
96 NTSTATUS DEFAULTAPI
MsfsWrite(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
98 DRIVER_DISPATCH MsfsFileSystemControl
;
99 NTSTATUS DEFAULTAPI
MsfsFileSystemControl(PDEVICE_OBJECT DeviceObject
, PIRP Irp
);
102 DriverEntry(PDRIVER_OBJECT DriverObject
,
103 PUNICODE_STRING RegistryPath
);
105 IO_CSQ_INSERT_IRP MsfsInsertIrp
;
107 MsfsInsertIrp(PIO_CSQ Csq
, PIRP Irp
);
109 IO_CSQ_REMOVE_IRP MsfsRemoveIrp
;
111 MsfsRemoveIrp(PIO_CSQ Csq
, PIRP Irp
);
113 IO_CSQ_PEEK_NEXT_IRP MsfsPeekNextIrp
;
115 MsfsPeekNextIrp(PIO_CSQ Csq
, PIRP Irp
, PVOID PeekContext
);
117 IO_CSQ_ACQUIRE_LOCK MsfsAcquireLock
;
119 MsfsAcquireLock(PIO_CSQ Csq
, PKIRQL Irql
);
121 IO_CSQ_RELEASE_LOCK MsfsReleaseLock
;
123 MsfsReleaseLock(PIO_CSQ Csq
, KIRQL Irql
);
125 IO_CSQ_COMPLETE_CANCELED_IRP MsfsCompleteCanceledIrp
;
127 MsfsCompleteCanceledIrp(PIO_CSQ pCsq
, PIRP Irp
);
129 KDEFERRED_ROUTINE MsfsTimeout
;
131 MsfsTimeout(PKDPC Dpc
,
132 PVOID DeferredContext
,
133 PVOID SystemArgument1
,
134 PVOID SystemArgument2
);
136 #endif /* __DRIVERS_FS_MS_MSFS_H */