6 #include <pseh/pseh2.h>
7 #include <ndk/muptypes.h>
10 #define INIT_SECTION __attribute__((section ("INIT")))
11 #define INIT_FUNCTION INIT_SECTION
13 #define INIT_SECTION /* Done via alloc_text for MSC */
14 #define INIT_FUNCTION INIT_SECTION
17 #define ROUND_UP(N, S) ((((N) + (S) - 1) / (S)) * (S))
18 #define IO_METHOD_FROM_CTL_CODE(C) (C & 0x00000003)
20 #define TAG_MUP ' puM'
22 #define DFS_MAGIC_CCB (PVOID)0x11444653
23 #define FILE_SIMPLE_RIGHTS_MASK (FILE_ALL_ACCESS & ~STANDARD_RIGHTS_REQUIRED &~ SYNCHRONIZE)
25 #define NODE_TYPE_VCB 0x1
26 #define NODE_TYPE_UNC 0x2
27 #define NODE_TYPE_PFX 0x3
28 #define NODE_TYPE_FCB 0x4
29 #define NODE_TYPE_CCB 0x5
30 #define NODE_TYPE_MIC 0x6
31 #define NODE_TYPE_MQC 0x8
33 #define NODE_STATUS_HEALTHY 0x1
34 #define NODE_STATUS_CLEANUP 0x2
36 typedef struct _MUP_VCB
42 SHARE_ACCESS ShareAccess
;
45 typedef struct _MUP_FCB
51 PFILE_OBJECT FileObject
;
55 typedef struct _MUP_CCB
62 LIST_ENTRY CcbListEntry
;
63 PDEVICE_OBJECT DeviceObject
;
64 PFILE_OBJECT FileObject
;
67 typedef struct _MUP_MIC
79 typedef struct _MUP_UNC
85 LIST_ENTRY ProviderListEntry
;
86 UNICODE_STRING DeviceName
;
88 PDEVICE_OBJECT DeviceObject
;
89 PFILE_OBJECT FileObject
;
91 BOOLEAN MailslotsSupported
;
95 typedef struct _MUP_PFX
101 UNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry
;
102 UNICODE_STRING AcceptedPrefix
;
104 LARGE_INTEGER ValidityTimeout
;
105 PMUP_UNC UncProvider
;
106 BOOLEAN ExternalAlloc
;
108 BOOLEAN KeepExtraRef
;
110 LIST_ENTRY PrefixListEntry
;
111 } MUP_PFX
, *PMUP_PFX
;
113 typedef struct _MUP_MQC
120 PFILE_OBJECT FileObject
;
121 PMUP_UNC LatestProvider
;
122 ERESOURCE QueryPathListLock
;
124 NTSTATUS LatestStatus
;
125 LIST_ENTRY QueryPathList
;
126 LIST_ENTRY MQCListEntry
;
127 } MUP_MQC
, *PMUP_MQC
;
129 typedef struct _FORWARDED_IO_CONTEXT
132 PMUP_MIC MasterIoContext
;
133 WORK_QUEUE_ITEM WorkQueueItem
;
134 PDEVICE_OBJECT DeviceObject
;
136 } FORWARDED_IO_CONTEXT
, *PFORWARDED_IO_CONTEXT
;
138 typedef struct _QUERY_PATH_CONTEXT
140 PMUP_MQC MasterQueryContext
;
141 PMUP_UNC UncProvider
;
142 PQUERY_PATH_REQUEST QueryPathRequest
;
143 LIST_ENTRY QueryPathListEntry
;
145 } QUERY_PATH_CONTEXT
, *PQUERY_PATH_CONTEXT
;
147 #endif /* _MUP_PCH_ */