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