merge ROS Shell without integrated explorer part into trunk
[reactos.git] / reactos / 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 */