FsRtl:Memory Control Block updates (from ntifs.h by B.Branten)
[reactos.git] / reactos / include / ddk / fstypes.h
1 #ifndef __INCLUDE_DDK_FSTYPES_H
2 #define __INCLUDE_DDK_FSTYPES_H
3 /* $Id: fstypes.h,v 1.10 2003/04/19 17:17:10 ea Exp $ */
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 */