:pserver:cvsanon@mok.lvcm.com:/CVS/ReactOS reactos
[reactos.git] / include / ddk / fstypes.h
1 #ifndef __INCLUDE_DDK_FSTYPES_H
2 #define __INCLUDE_DDK_FSTYPES_H
3 /* $Id$ */
4
5 #define FSRTL_TAG       TAG('F','S','r','t')
6
7 typedef struct _FILE_LOCK_INFO {
8     LARGE_INTEGER   StartingByte;
9     LARGE_INTEGER   Length;
10     BOOLEAN         ExclusiveLock;
11     ULONG           Key;
12     PFILE_OBJECT    FileObject;
13     PEPROCESS       Process;
14     LARGE_INTEGER   EndingByte;
15 } FILE_LOCK_INFO, *PFILE_LOCK_INFO;
16
17 // raw internal file lock struct returned from FsRtlGetNextFileLock
18 typedef struct _FILE_SHARED_LOCK_ENTRY {
19     PVOID           Unknown1;
20     PVOID           Unknown2;
21     FILE_LOCK_INFO  FileLock;
22 } FILE_SHARED_LOCK_ENTRY, *PFILE_SHARED_LOCK_ENTRY;
23
24 // raw internal file lock struct returned from FsRtlGetNextFileLock
25 typedef struct _FILE_EXCLUSIVE_LOCK_ENTRY {
26     LIST_ENTRY      ListEntry;
27     PVOID           Unknown1;
28     PVOID           Unknown2;
29     FILE_LOCK_INFO  FileLock;
30 } FILE_EXCLUSIVE_LOCK_ENTRY, *PFILE_EXCLUSIVE_LOCK_ENTRY;
31
32 typedef NTSTATUS (*PCOMPLETE_LOCK_IRP_ROUTINE) (
33     IN PVOID    Context,
34     IN PIRP     Irp
35 );
36
37 typedef VOID (*PUNLOCK_ROUTINE) (
38     IN PVOID            Context,
39     IN PFILE_LOCK_INFO  FileLockInfo
40 );
41
42 typedef struct _FILE_LOCK {
43     PCOMPLETE_LOCK_IRP_ROUTINE  CompleteLockIrpRoutine;
44     PUNLOCK_ROUTINE             UnlockRoutine;
45     BOOLEAN                     FastIoIsQuestionable;
46     BOOLEAN                     Pad[3];
47     PVOID                       LockInformation;
48     FILE_LOCK_INFO              LastReturnedLockInfo;
49     PVOID                       LastReturnedLock;
50 } FILE_LOCK, *PFILE_LOCK;
51
52 typedef struct _TUNNEL {
53     FAST_MUTEX          Mutex;
54     PRTL_SPLAY_LINKS    Cache;
55     LIST_ENTRY          TimerQueue;
56     USHORT              NumEntries;
57 } TUNNEL, *PTUNNEL;
58
59 typedef struct _NOTIFY_SYNC
60 {
61         DWORD   Unknown0;       /* 0x00 */
62         DWORD   Unknown1;       /* 0x04 */
63         DWORD   Unknown2;       /* 0x08 */
64         WORD    Unknown3;       /* 0x0c */
65         WORD    Unknown4;       /* 0x0e */
66         DWORD   Unknown5;       /* 0x10 */
67         DWORD   Unknown6;       /* 0x14 */
68         DWORD   Unknown7;       /* 0x18 */
69         DWORD   Unknown8;       /* 0x1c */
70         DWORD   Unknown9;       /* 0x20 */
71         DWORD   Unknown10;      /* 0x24 */
72         
73 } NOTIFY_SYNC, * PNOTIFY_SYNC;
74
75
76 typedef struct _LARGE_MCB
77 {
78   PFAST_MUTEX FastMutex;
79   ULONG MaximumPairCount;
80   ULONG PairCount;
81   POOL_TYPE PoolType;
82   PVOID Mapping;
83 } LARGE_MCB, *PLARGE_MCB;
84
85
86 typedef VOID
87 (*POPLOCK_WAIT_COMPLETE_ROUTINE)(PVOID Context,
88                                  PIRP Irp);
89
90 typedef VOID
91 (*POPLOCK_FS_PREPOST_IRP)(PVOID Context,
92                           PIRP Irp);
93
94 typedef PVOID OPLOCK, *POPLOCK;
95
96 #endif /* __INCLUDE_DDK_FSFUNCS_H */