update for HEAD-2003050101
[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 ULONG LBN;
8 typedef LBN *PLBN;
9
10 typedef ULONG VBN;
11 typedef VBN *PVBN;
12
13 typedef struct _FILE_LOCK_INFO {
14     LARGE_INTEGER   StartingByte;
15     LARGE_INTEGER   Length;
16     BOOLEAN         ExclusiveLock;
17     ULONG           Key;
18     PFILE_OBJECT    FileObject;
19     PEPROCESS       Process;
20     LARGE_INTEGER   EndingByte;
21 } FILE_LOCK_INFO, *PFILE_LOCK_INFO;
22
23 typedef struct _FILE_LOCK_TOC {
24         KSPIN_LOCK                      SpinLock;
25         LIST_ENTRY                      GrantedListHead;
26         LIST_ENTRY                      PendingListHead;
27         LIST_ENTRY                      CompletedListHead;
28         LIST_ENTRY                      UnlockedListHead;
29 } FILE_LOCK_TOC, *PFILE_LOCK_TOC;
30
31 typedef struct _FILE_LOCK_GRANTED {
32         LIST_ENTRY                      ListEntry;
33         FILE_LOCK_INFO          Lock;
34 } FILE_LOCK_GRANTED, *PFILE_LOCK_GRANTED;
35
36 typedef NTSTATUS (*PCOMPLETE_LOCK_IRP_ROUTINE) (
37     IN PVOID    Context,
38     IN PIRP     Irp
39 );
40
41 typedef VOID (*PUNLOCK_ROUTINE) (
42     IN PVOID            Context,
43     IN PFILE_LOCK_INFO  FileLockInfo
44 );
45
46 typedef struct _FILE_LOCK {
47     PCOMPLETE_LOCK_IRP_ROUTINE  CompleteLockIrpRoutine;
48     PUNLOCK_ROUTINE             UnlockRoutine;
49     BOOLEAN                     FastIoIsQuestionable;
50     BOOLEAN                     Pad[3];
51     PVOID                       LockInformation;
52     FILE_LOCK_INFO              LastReturnedLockInfo;
53     PVOID                       LastReturnedLock;
54 } FILE_LOCK, *PFILE_LOCK;
55
56 typedef struct _TUNNEL {
57     FAST_MUTEX          Mutex;
58     PRTL_SPLAY_LINKS    Cache;
59     LIST_ENTRY          TimerQueue;
60     USHORT              NumEntries;
61 } TUNNEL, *PTUNNEL;
62
63 typedef struct _NOTIFY_SYNC
64 {
65         DWORD   Unknown0;       /* 0x00 */
66         DWORD   Unknown1;       /* 0x04 */
67         DWORD   Unknown2;       /* 0x08 */
68         WORD    Unknown3;       /* 0x0c */
69         WORD    Unknown4;       /* 0x0e */
70         DWORD   Unknown5;       /* 0x10 */
71         DWORD   Unknown6;       /* 0x14 */
72         DWORD   Unknown7;       /* 0x18 */
73         DWORD   Unknown8;       /* 0x1c */
74         DWORD   Unknown9;       /* 0x20 */
75         DWORD   Unknown10;      /* 0x24 */
76         
77 } NOTIFY_SYNC, * PNOTIFY_SYNC;
78
79
80 typedef struct _LARGE_MCB
81 {
82   PFAST_MUTEX FastMutex;
83   ULONG MaximumPairCount;
84   ULONG PairCount;
85   POOL_TYPE PoolType;
86   PVOID Mapping;
87 } LARGE_MCB, *PLARGE_MCB;
88
89 typedef struct _MCB {
90     LARGE_MCB LargeMcb;
91 } MCB, *PMCB;
92
93 typedef VOID
94 (*POPLOCK_WAIT_COMPLETE_ROUTINE)(PVOID Context,
95                                  PIRP Irp);
96
97 typedef VOID
98 (*POPLOCK_FS_PREPOST_IRP)(PVOID Context,
99                           PIRP Irp);
100
101 typedef PVOID OPLOCK, *POPLOCK;
102
103 #endif /* __INCLUDE_DDK_FSFUNCS_H */