1 #ifndef __INCLUDE_DDK_FSTYPES_H
2 #define __INCLUDE_DDK_FSTYPES_H
5 #define FSRTL_TAG TAG('F','S','r','t')
7 typedef struct _FILE_LOCK_INFO {
8 LARGE_INTEGER StartingByte;
10 BOOLEAN ExclusiveLock;
12 PFILE_OBJECT FileObject;
14 LARGE_INTEGER EndingByte;
15 } FILE_LOCK_INFO, *PFILE_LOCK_INFO;
17 // raw internal file lock struct returned from FsRtlGetNextFileLock
18 typedef struct _FILE_SHARED_LOCK_ENTRY {
21 FILE_LOCK_INFO FileLock;
22 } FILE_SHARED_LOCK_ENTRY, *PFILE_SHARED_LOCK_ENTRY;
24 // raw internal file lock struct returned from FsRtlGetNextFileLock
25 typedef struct _FILE_EXCLUSIVE_LOCK_ENTRY {
29 FILE_LOCK_INFO FileLock;
30 } FILE_EXCLUSIVE_LOCK_ENTRY, *PFILE_EXCLUSIVE_LOCK_ENTRY;
32 typedef NTSTATUS (*PCOMPLETE_LOCK_IRP_ROUTINE) (
37 typedef VOID (*PUNLOCK_ROUTINE) (
39 IN PFILE_LOCK_INFO FileLockInfo
42 typedef struct _FILE_LOCK {
43 PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine;
44 PUNLOCK_ROUTINE UnlockRoutine;
45 BOOLEAN FastIoIsQuestionable;
47 PVOID LockInformation;
48 FILE_LOCK_INFO LastReturnedLockInfo;
49 PVOID LastReturnedLock;
50 } FILE_LOCK, *PFILE_LOCK;
52 typedef struct _TUNNEL {
54 PRTL_SPLAY_LINKS Cache;
55 LIST_ENTRY TimerQueue;
59 typedef struct _NOTIFY_SYNC
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 */
73 } NOTIFY_SYNC, * PNOTIFY_SYNC;
76 typedef struct _LARGE_MCB
78 PFAST_MUTEX FastMutex;
79 ULONG MaximumPairCount;
83 } LARGE_MCB, *PLARGE_MCB;
87 (*POPLOCK_WAIT_COMPLETE_ROUTINE)(PVOID Context,
91 (*POPLOCK_FS_PREPOST_IRP)(PVOID Context,
94 typedef PVOID OPLOCK, *POPLOCK;
96 #endif /* __INCLUDE_DDK_FSFUNCS_H */