Manually applying Gunnars patch became it's easier this way - and a good chance to...
[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.8 2002/11/07 02:44:49 robd Exp $ */
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 typedef struct _FILE_LOCK_TOC {
18 KSPIN_LOCK SpinLock;
19 LIST_ENTRY GrantedListHead;
20 LIST_ENTRY PendingListHead;
21 } FILE_LOCK_TOC, *PFILE_LOCK_TOC;
22
23 typedef struct _FILE_LOCK_GRANTED {
24 LIST_ENTRY ListEntry;
25 FILE_LOCK_INFO Lock;
26 } FILE_LOCK_GRANTED, *PFILE_LOCK_GRANTED;
27
28 typedef struct _FILE_LOCK_PENDING {
29 LIST_ENTRY ListEntry;
30 PIRP Irp;
31 PVOID Context;
32 } FILE_LOCK_PENDING, *PFILE_LOCK_PENDING;
33
34 // raw internal file lock struct returned from FsRtlGetNextFileLock
35 typedef struct _FILE_SHARED_LOCK_ENTRY {
36 PVOID Unknown1;
37 PVOID Unknown2;
38 FILE_LOCK_INFO FileLock;
39 } FILE_SHARED_LOCK_ENTRY, *PFILE_SHARED_LOCK_ENTRY;
40
41 // raw internal file lock struct returned from FsRtlGetNextFileLock
42 typedef struct _FILE_EXCLUSIVE_LOCK_ENTRY {
43 LIST_ENTRY ListEntry;
44 PVOID Unknown1;
45 PVOID Unknown2;
46 FILE_LOCK_INFO FileLock;
47 } FILE_EXCLUSIVE_LOCK_ENTRY, *PFILE_EXCLUSIVE_LOCK_ENTRY;
48
49 typedef NTSTATUS (*PCOMPLETE_LOCK_IRP_ROUTINE) (
50 IN PVOID Context,
51 IN PIRP Irp
52 );
53
54 typedef VOID (*PUNLOCK_ROUTINE) (
55 IN PVOID Context,
56 IN PFILE_LOCK_INFO FileLockInfo
57 );
58
59 typedef struct _FILE_LOCK {
60 PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine;
61 PUNLOCK_ROUTINE UnlockRoutine;
62 BOOLEAN FastIoIsQuestionable;
63 BOOLEAN Pad[3];
64 PVOID LockInformation;
65 FILE_LOCK_INFO LastReturnedLockInfo;
66 PVOID LastReturnedLock;
67 } FILE_LOCK, *PFILE_LOCK;
68
69 typedef struct _TUNNEL {
70 FAST_MUTEX Mutex;
71 PRTL_SPLAY_LINKS Cache;
72 LIST_ENTRY TimerQueue;
73 USHORT NumEntries;
74 } TUNNEL, *PTUNNEL;
75
76 typedef struct _NOTIFY_SYNC
77 {
78 DWORD Unknown0; /* 0x00 */
79 DWORD Unknown1; /* 0x04 */
80 DWORD Unknown2; /* 0x08 */
81 WORD Unknown3; /* 0x0c */
82 WORD Unknown4; /* 0x0e */
83 DWORD Unknown5; /* 0x10 */
84 DWORD Unknown6; /* 0x14 */
85 DWORD Unknown7; /* 0x18 */
86 DWORD Unknown8; /* 0x1c */
87 DWORD Unknown9; /* 0x20 */
88 DWORD Unknown10; /* 0x24 */
89
90 } NOTIFY_SYNC, * PNOTIFY_SYNC;
91
92
93 typedef struct _LARGE_MCB
94 {
95 PFAST_MUTEX FastMutex;
96 ULONG MaximumPairCount;
97 ULONG PairCount;
98 POOL_TYPE PoolType;
99 PVOID Mapping;
100 } LARGE_MCB, *PLARGE_MCB;
101
102
103 typedef VOID
104 (*POPLOCK_WAIT_COMPLETE_ROUTINE)(PVOID Context,
105 PIRP Irp);
106
107 typedef VOID
108 (*POPLOCK_FS_PREPOST_IRP)(PVOID Context,
109 PIRP Irp);
110
111 typedef PVOID OPLOCK, *POPLOCK;
112
113 #endif /* __INCLUDE_DDK_FSFUNCS_H */