:pserver:cvsanon@mok.lvcm.com:/CVS/ReactOS reactos
[reactos.git] / drivers / fs / ms / msfs.h
1 #ifndef __SERVICES_FS_MS_MSFS_H
2 #define __SERVICES_FS_MS_MSFS_H
3
4 typedef struct _MSFS_DEVICE_EXTENSION
5 {
6    LIST_ENTRY MailslotListHead;
7    KMUTEX MailslotListLock;
8 } MSFS_DEVICE_EXTENSION, *PMSFS_DEVICE_EXTENSION;
9
10 typedef struct _MSFS_MAILSLOT
11 {
12    UNICODE_STRING Name;
13    LIST_ENTRY MailslotListEntry;
14    KSPIN_LOCK FcbListLock;
15    LIST_ENTRY FcbListHead;
16    struct _MSFS_FCB *ServerFcb;
17    ULONG ReferenceCount;
18    LARGE_INTEGER TimeOut;
19    KEVENT MessageEvent;
20    ULONG MaxMessageSize;
21    ULONG MessageCount;
22    KSPIN_LOCK MessageListLock;
23    LIST_ENTRY MessageListHead;
24 } MSFS_MAILSLOT, *PMSFS_MAILSLOT;
25
26 typedef struct _MSFS_FCB
27 {
28    LIST_ENTRY FcbListEntry;
29    PMSFS_MAILSLOT Mailslot;
30 } MSFS_FCB, *PMSFS_FCB;
31
32 typedef struct _MSFS_MESSAGE
33 {
34    LIST_ENTRY MessageListEntry;
35    ULONG Size;
36    UCHAR Buffer[1];
37 } MSFS_MESSAGE, *PMSFS_MESSAGE;
38
39
40 #define KeLockMutex(x) KeWaitForSingleObject(x, \
41                                              UserRequest, \
42                                              KernelMode, \
43                                              FALSE, \
44                                              NULL);
45
46 #define KeUnlockMutex(x) KeReleaseMutex(x, FALSE);
47
48 NTSTATUS STDCALL MsfsCreate(PDEVICE_OBJECT DeviceObject, PIRP Irp);
49 NTSTATUS STDCALL MsfsCreateMailslot(PDEVICE_OBJECT DeviceObject, PIRP Irp);
50 NTSTATUS STDCALL MsfsClose(PDEVICE_OBJECT DeviceObject, PIRP Irp);
51
52 NTSTATUS STDCALL MsfsQueryInformation(PDEVICE_OBJECT DeviceObject, PIRP Irp);
53 NTSTATUS STDCALL MsfsSetInformation(PDEVICE_OBJECT DeviceObject, PIRP Irp);
54
55 NTSTATUS STDCALL MsfsRead(PDEVICE_OBJECT DeviceObject, PIRP Irp);
56 NTSTATUS STDCALL MsfsWrite(PDEVICE_OBJECT DeviceObject, PIRP Irp);
57
58 NTSTATUS STDCALL MsfsFileSystemControl(PDEVICE_OBJECT DeviceObject, PIRP Irp);
59
60 #endif /* __SERVICES_FS_NP_NPFS_H */