Synchronize up to trunk's revision r57784.
[reactos.git] / include / ddk / fltuser.h
1 /*
2 * fltuser.h
3 *
4 * This file is part of the ReactOS DDK package.
5 *
6 * Contributors:
7 * Amine Khaldi (amine.khaldi@reactos.org)
8 *
9 * THIS SOFTWARE IS NOT COPYRIGHTED
10 *
11 * This source code is offered for use in the public domain. You may
12 * use, modify or distribute it freely.
13 *
14 * This code is distributed in the hope that it will be useful but
15 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
16 * DISCLAIMED. This includes but is not limited to warranties of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 *
19 */
20 #pragma once
21
22 #ifndef __FLTUSER_H__
23 #define __FLTUSER_H__
24
25 #define FLT_MGR_BASELINE (((OSVER(NTDDI_VERSION) == NTDDI_WIN2K) && (SPVER(NTDDI_VERSION) >= SPVER(NTDDI_WIN2KSP4))) || \
26 ((OSVER(NTDDI_VERSION) == NTDDI_WINXP) && (SPVER(NTDDI_VERSION) >= SPVER(NTDDI_WINXPSP2))) || \
27 ((OSVER(NTDDI_VERSION) == NTDDI_WS03) && (SPVER(NTDDI_VERSION) >= SPVER(NTDDI_WS03SP1))) || \
28 (NTDDI_VERSION >= NTDDI_VISTA))
29
30 #define FLT_MGR_AFTER_XPSP2 (((OSVER(NTDDI_VERSION) == NTDDI_WIN2K) && (SPVER(NTDDI_VERSION) >= SPVER(NTDDI_WIN2KSP4))) || \
31 ((OSVER(NTDDI_VERSION) == NTDDI_WINXP) && (SPVER(NTDDI_VERSION) > SPVER(NTDDI_WINXPSP2))) || \
32 ((OSVER(NTDDI_VERSION) == NTDDI_WS03) && (SPVER(NTDDI_VERSION) >= SPVER(NTDDI_WS03SP1))) || \
33 (NTDDI_VERSION >= NTDDI_VISTA))
34
35 #define FLT_MGR_LONGHORN (NTDDI_VERSION >= NTDDI_VISTA)
36 #define FLT_MGR_WIN7 (NTDDI_VERSION >= NTDDI_WIN7)
37
38 #include <fltuserstructures.h>
39
40 #ifdef __cplusplus
41 extern "C" {
42 #endif
43
44 #if FLT_MGR_BASELINE
45
46 #if FLT_MGR_LONGHORN
47 #define FLT_ASSERT(_e) NT_ASSERT(_e)
48 #define FLT_ASSERTMSG(_m, _e) NT_ASSERTMSG(_m, _e)
49 #else
50 #define FLT_ASSERT(_e) ASSERT(_e)
51 #define FLT_ASSERTMSG(_m, _e) ASSERTMSG(_m, _e)
52 #endif /* FLT_MGR_LONGHORN */
53
54 _Must_inspect_result_
55 HRESULT
56 WINAPI
57 FilterLoad(
58 _In_ LPCWSTR lpFilterName);
59
60 _Must_inspect_result_
61 HRESULT
62 WINAPI
63 FilterUnload(
64 _In_ LPCWSTR lpFilterName);
65
66 _Must_inspect_result_
67 HRESULT
68 WINAPI
69 FilterCreate(
70 _In_ LPCWSTR lpFilterName,
71 _Outptr_ HFILTER *hFilter);
72
73 HRESULT
74 WINAPI
75 FilterClose(
76 _In_ HFILTER hFilter);
77
78 _Must_inspect_result_
79 HRESULT
80 WINAPI
81 FilterInstanceCreate(
82 _In_ LPCWSTR lpFilterName,
83 _In_ LPCWSTR lpVolumeName,
84 _In_opt_ LPCWSTR lpInstanceName,
85 _Outptr_ HFILTER_INSTANCE *hInstance);
86
87 HRESULT
88 WINAPI
89 FilterInstanceClose(
90 _In_ HFILTER_INSTANCE hInstance);
91
92 _Must_inspect_result_
93 HRESULT
94 WINAPI
95 FilterAttach(
96 _In_ LPCWSTR lpFilterName,
97 _In_ LPCWSTR lpVolumeName,
98 _In_opt_ LPCWSTR lpInstanceName ,
99 _In_opt_ DWORD dwCreatedInstanceNameLength ,
100 _Out_writes_bytes_opt_(dwCreatedInstanceNameLength) LPWSTR lpCreatedInstanceName);
101
102 _Must_inspect_result_
103 HRESULT
104 WINAPI
105 FilterAttachAtAltitude(
106 _In_ LPCWSTR lpFilterName,
107 _In_ LPCWSTR lpVolumeName,
108 _In_ LPCWSTR lpAltitude,
109 _In_opt_ LPCWSTR lpInstanceName ,
110 _In_opt_ DWORD dwCreatedInstanceNameLength ,
111 _Out_writes_bytes_opt_(dwCreatedInstanceNameLength) LPWSTR lpCreatedInstanceName);
112
113 _Must_inspect_result_
114 HRESULT
115 WINAPI
116 FilterDetach(
117 _In_ LPCWSTR lpFilterName,
118 _In_ LPCWSTR lpVolumeName,
119 _In_opt_ LPCWSTR lpInstanceName);
120
121 _Must_inspect_result_
122 HRESULT
123 WINAPI
124 FilterFindFirst(
125 _In_ FILTER_INFORMATION_CLASS dwInformationClass,
126 _Out_writes_bytes_to_(dwBufferSize,*lpBytesReturned) LPVOID lpBuffer,
127 _In_ DWORD dwBufferSize,
128 _Out_ LPDWORD lpBytesReturned,
129 _Out_ LPHANDLE lpFilterFind);
130
131 _Must_inspect_result_
132 HRESULT
133 WINAPI
134 FilterFindNext(
135 _In_ HANDLE hFilterFind,
136 _In_ FILTER_INFORMATION_CLASS dwInformationClass,
137 _Out_writes_bytes_to_(dwBufferSize,*lpBytesReturned) LPVOID lpBuffer,
138 _In_ DWORD dwBufferSize,
139 _Out_ LPDWORD lpBytesReturned);
140
141 _Must_inspect_result_
142 HRESULT
143 WINAPI
144 FilterFindClose(
145 _In_ HANDLE hFilterFind);
146
147 _Must_inspect_result_
148 HRESULT
149 WINAPI
150 FilterVolumeFindFirst(
151 _In_ FILTER_VOLUME_INFORMATION_CLASS dwInformationClass,
152 _Out_writes_bytes_to_(dwBufferSize,*lpBytesReturned) LPVOID lpBuffer,
153 _In_ DWORD dwBufferSize,
154 _Out_ LPDWORD lpBytesReturned,
155 _Out_ PHANDLE lpVolumeFind);
156
157 _Must_inspect_result_
158 HRESULT
159 WINAPI
160 FilterVolumeFindNext(
161 _In_ HANDLE hVolumeFind,
162 _In_ FILTER_VOLUME_INFORMATION_CLASS dwInformationClass,
163 _Out_writes_bytes_to_(dwBufferSize,*lpBytesReturned) LPVOID lpBuffer,
164 _In_ DWORD dwBufferSize,
165 _Out_ LPDWORD lpBytesReturned);
166
167 HRESULT
168 WINAPI
169 FilterVolumeFindClose(
170 _In_ HANDLE hVolumeFind);
171
172 _Must_inspect_result_
173 HRESULT
174 WINAPI
175 FilterInstanceFindFirst(
176 _In_ LPCWSTR lpFilterName,
177 _In_ INSTANCE_INFORMATION_CLASS dwInformationClass,
178 _Out_writes_bytes_to_(dwBufferSize,*lpBytesReturned) LPVOID lpBuffer,
179 _In_ DWORD dwBufferSize,
180 _Out_ LPDWORD lpBytesReturned,
181 _Out_ LPHANDLE lpFilterInstanceFind);
182
183 _Must_inspect_result_
184 HRESULT
185 WINAPI
186 FilterInstanceFindNext(
187 _In_ HANDLE hFilterInstanceFind,
188 _In_ INSTANCE_INFORMATION_CLASS dwInformationClass,
189 _Out_writes_bytes_to_(dwBufferSize,*lpBytesReturned) LPVOID lpBuffer,
190 _In_ DWORD dwBufferSize,
191 _Out_ LPDWORD lpBytesReturned);
192
193 _Must_inspect_result_
194 HRESULT
195 WINAPI
196 FilterInstanceFindClose(
197 _In_ HANDLE hFilterInstanceFind);
198
199 _Must_inspect_result_
200 HRESULT
201 WINAPI
202 FilterVolumeInstanceFindFirst(
203 _In_ LPCWSTR lpVolumeName,
204 _In_ INSTANCE_INFORMATION_CLASS dwInformationClass,
205 _Out_writes_bytes_to_(dwBufferSize,*lpBytesReturned) LPVOID lpBuffer,
206 _In_ DWORD dwBufferSize,
207 _Out_ LPDWORD lpBytesReturned,
208 _Out_ LPHANDLE lpVolumeInstanceFind);
209
210 _Must_inspect_result_
211 HRESULT
212 WINAPI
213 FilterVolumeInstanceFindNext(
214 _In_ HANDLE hVolumeInstanceFind,
215 _In_ INSTANCE_INFORMATION_CLASS dwInformationClass,
216 _Out_writes_bytes_to_(dwBufferSize,*lpBytesReturned) LPVOID lpBuffer,
217 _In_ DWORD dwBufferSize,
218 _Out_ LPDWORD lpBytesReturned);
219
220 HRESULT
221 WINAPI
222 FilterVolumeInstanceFindClose(
223 _In_ HANDLE hVolumeInstanceFind);
224
225 _Must_inspect_result_
226 HRESULT
227 WINAPI
228 FilterGetInformation(
229 _In_ HFILTER hFilter,
230 _In_ FILTER_INFORMATION_CLASS dwInformationClass,
231 _Out_writes_bytes_to_(dwBufferSize,*lpBytesReturned) LPVOID lpBuffer,
232 _In_ DWORD dwBufferSize,
233 _Out_ LPDWORD lpBytesReturned);
234
235 _Must_inspect_result_
236 HRESULT
237 WINAPI
238 FilterInstanceGetInformation(
239 _In_ HFILTER_INSTANCE hInstance,
240 _In_ INSTANCE_INFORMATION_CLASS dwInformationClass,
241 _Out_writes_bytes_to_(dwBufferSize,*lpBytesReturned) LPVOID lpBuffer,
242 _In_ DWORD dwBufferSize,
243 _Out_ LPDWORD lpBytesReturned);
244
245 _Must_inspect_result_
246 HRESULT
247 WINAPI
248 FilterConnectCommunicationPort(
249 _In_ LPCWSTR lpPortName,
250 _In_ DWORD dwOptions,
251 _In_reads_bytes_opt_(wSizeOfContext) LPCVOID lpContext,
252 _In_ WORD wSizeOfContext,
253 _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes ,
254 _Outptr_ HANDLE *hPort);
255
256 _Must_inspect_result_
257 HRESULT
258 WINAPI
259 FilterSendMessage(
260 _In_ HANDLE hPort,
261 _In_reads_bytes_opt_(dwInBufferSize) LPVOID lpInBuffer,
262 _In_ DWORD dwInBufferSize,
263 _Out_writes_bytes_to_opt_(dwOutBufferSize,*lpBytesReturned) LPVOID lpOutBuffer,
264 _In_ DWORD dwOutBufferSize,
265 _Out_ LPDWORD lpBytesReturned);
266
267 _Must_inspect_result_
268 HRESULT
269 WINAPI
270 FilterGetMessage(
271 _In_ HANDLE hPort,
272 _Out_writes_bytes_(dwMessageBufferSize) PFILTER_MESSAGE_HEADER lpMessageBuffer,
273 _In_ DWORD dwMessageBufferSize,
274 _Inout_ LPOVERLAPPED lpOverlapped);
275
276 _Must_inspect_result_
277 HRESULT
278 WINAPI
279 FilterReplyMessage(
280 _In_ HANDLE hPort,
281 _In_reads_bytes_(dwReplyBufferSize) PFILTER_REPLY_HEADER lpReplyBuffer,
282 _In_ DWORD dwReplyBufferSize);
283
284 _Must_inspect_result_
285 HRESULT
286 WINAPI
287 FilterGetDosName(
288 _In_ LPCWSTR lpVolumeName,
289 _Out_writes_(dwDosNameBufferSize) LPWSTR lpDosName,
290 _In_ DWORD dwDosNameBufferSize);
291
292 #endif /* FLT_MGR_BASELINE */
293
294 #ifdef __cplusplus
295 } /* extern "C" */
296 #endif
297
298 #endif /* __FLTUSER_H__ */