[CMAKE] winetests/: Move '/wd4334' to 3 sub-modules only
[reactos.git] / drivers / filesystems / mup / mup.h
1 #ifndef _MUP_PCH_
2 #define _MUP_PCH_
3
4 #include <wdm.h>
5 #include <ntifs.h>
6 #include <pseh/pseh2.h>
7 #include <ndk/muptypes.h>
8 #include <section_attribs.h>
9
10 #define ROUND_UP(N, S) ((((N) + (S) - 1) / (S)) * (S))
11 #define IO_METHOD_FROM_CTL_CODE(C) (C & 0x00000003)
12
13 #define TAG_MUP ' puM'
14
15 #define FILE_SIMPLE_RIGHTS_MASK (FILE_ALL_ACCESS & ~STANDARD_RIGHTS_REQUIRED &~ SYNCHRONIZE)
16
17 #define NODE_TYPE_VCB 0x1
18 #define NODE_TYPE_UNC 0x2
19 #define NODE_TYPE_PFX 0x3
20 #define NODE_TYPE_FCB 0x4
21 #define NODE_TYPE_CCB 0x5
22 #define NODE_TYPE_MIC 0x6
23 #define NODE_TYPE_MQC 0x8
24
25 #define NODE_STATUS_HEALTHY 0x1
26 #define NODE_STATUS_CLEANUP 0x2
27
28 typedef struct _MUP_VCB
29 {
30 ULONG NodeType;
31 ULONG NodeStatus;
32 LONG NodeReferences;
33 ULONG NodeSize;
34 SHARE_ACCESS ShareAccess;
35 } MUP_VCB, *PMUP_VCB;
36
37 typedef struct _MUP_FCB
38 {
39 ULONG NodeType;
40 ULONG NodeStatus;
41 LONG NodeReferences;
42 ULONG NodeSize;
43 PFILE_OBJECT FileObject;
44 LIST_ENTRY CcbList;
45 } MUP_FCB, *PMUP_FCB;
46
47 typedef struct _MUP_CCB
48 {
49 ULONG NodeType;
50 ULONG NodeStatus;
51 LONG NodeReferences;
52 ULONG NodeSize;
53 PMUP_FCB Fcb;
54 LIST_ENTRY CcbListEntry;
55 PDEVICE_OBJECT DeviceObject;
56 PFILE_OBJECT FileObject;
57 } MUP_CCB, *PMUP_CCB;
58
59 typedef struct _MUP_MIC
60 {
61 ULONG NodeType;
62 ULONG NodeStatus;
63 LONG NodeReferences;
64 ULONG NodeSize;
65 PIRP Irp;
66 NTSTATUS LastSuccess;
67 NTSTATUS LastFailed;
68 PMUP_FCB Fcb;
69 } MUP_MIC, *PMUP_MIC;
70
71 typedef struct _MUP_UNC
72 {
73 ULONG NodeType;
74 ULONG NodeStatus;
75 LONG NodeReferences;
76 ULONG NodeSize;
77 LIST_ENTRY ProviderListEntry;
78 UNICODE_STRING DeviceName;
79 HANDLE DeviceHandle;
80 PDEVICE_OBJECT DeviceObject;
81 PFILE_OBJECT FileObject;
82 ULONG ProviderOrder;
83 BOOLEAN MailslotsSupported;
84 BOOLEAN Registered;
85 } MUP_UNC, *PMUP_UNC;
86
87 typedef struct _MUP_PFX
88 {
89 ULONG NodeType;
90 ULONG NodeStatus;
91 LONG NodeReferences;
92 ULONG NodeSize;
93 UNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry;
94 UNICODE_STRING AcceptedPrefix;
95 ULONG Reserved;
96 LARGE_INTEGER ValidityTimeout;
97 PMUP_UNC UncProvider;
98 BOOLEAN ExternalAlloc;
99 BOOLEAN InTable;
100 BOOLEAN KeepExtraRef;
101 BOOLEAN Padding;
102 LIST_ENTRY PrefixListEntry;
103 } MUP_PFX, *PMUP_PFX;
104
105 typedef struct _MUP_MQC
106 {
107 ULONG NodeType;
108 ULONG NodeStatus;
109 LONG NodeReferences;
110 ULONG NodeSize;
111 PIRP Irp;
112 PFILE_OBJECT FileObject;
113 PMUP_UNC LatestProvider;
114 ERESOURCE QueryPathListLock;
115 PMUP_PFX Prefix;
116 NTSTATUS LatestStatus;
117 LIST_ENTRY QueryPathList;
118 LIST_ENTRY MQCListEntry;
119 } MUP_MQC, *PMUP_MQC;
120
121 typedef struct _FORWARDED_IO_CONTEXT
122 {
123 PMUP_CCB Ccb;
124 PMUP_MIC MasterIoContext;
125 WORK_QUEUE_ITEM WorkQueueItem;
126 PDEVICE_OBJECT DeviceObject;
127 PIRP Irp;
128 } FORWARDED_IO_CONTEXT, *PFORWARDED_IO_CONTEXT;
129
130 typedef struct _QUERY_PATH_CONTEXT
131 {
132 PMUP_MQC MasterQueryContext;
133 PMUP_UNC UncProvider;
134 PQUERY_PATH_REQUEST QueryPathRequest;
135 LIST_ENTRY QueryPathListEntry;
136 PIRP Irp;
137 } QUERY_PATH_CONTEXT, *PQUERY_PATH_CONTEXT;
138
139 #include "dfs.h"
140
141 #endif /* _MUP_PCH_ */