Reactos
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
41extern "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_
55HRESULT
56WINAPI
57FilterLoad(
58 _In_ LPCWSTR lpFilterName);
59
60_Must_inspect_result_
61HRESULT
62WINAPI
63FilterUnload(
64 _In_ LPCWSTR lpFilterName);
65
66_Must_inspect_result_
67HRESULT
68WINAPI
69FilterCreate(
70 _In_ LPCWSTR lpFilterName,
71 _Outptr_ HFILTER *hFilter);
72
73HRESULT
74WINAPI
75FilterClose(
76 _In_ HFILTER hFilter);
77
78_Must_inspect_result_
79HRESULT
80WINAPI
81FilterInstanceCreate(
82 _In_ LPCWSTR lpFilterName,
83 _In_ LPCWSTR lpVolumeName,
84 _In_opt_ LPCWSTR lpInstanceName,
85 _Outptr_ HFILTER_INSTANCE *hInstance);
86
87HRESULT
88WINAPI
89FilterInstanceClose(
90 _In_ HFILTER_INSTANCE hInstance);
91
92_Must_inspect_result_
93HRESULT
94WINAPI
95FilterAttach(
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_
103HRESULT
104WINAPI
105FilterAttachAtAltitude(
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_
114HRESULT
115WINAPI
116FilterDetach(
117 _In_ LPCWSTR lpFilterName,
118 _In_ LPCWSTR lpVolumeName,
119 _In_opt_ LPCWSTR lpInstanceName);
120
121_Must_inspect_result_
122HRESULT
123WINAPI
124FilterFindFirst(
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_
132HRESULT
133WINAPI
134FilterFindNext(
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_
142HRESULT
143WINAPI
144FilterFindClose(
145 _In_ HANDLE hFilterFind);
146
147_Must_inspect_result_
148HRESULT
149WINAPI
150FilterVolumeFindFirst(
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_
158HRESULT
159WINAPI
160FilterVolumeFindNext(
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
167HRESULT
168WINAPI
169FilterVolumeFindClose(
170 _In_ HANDLE hVolumeFind);
171
172_Must_inspect_result_
173HRESULT
174WINAPI
175FilterInstanceFindFirst(
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_
184HRESULT
185WINAPI
186FilterInstanceFindNext(
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_
194HRESULT
195WINAPI
196FilterInstanceFindClose(
197 _In_ HANDLE hFilterInstanceFind);
198
199_Must_inspect_result_
200HRESULT
201WINAPI
202FilterVolumeInstanceFindFirst(
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_
211HRESULT
212WINAPI
213FilterVolumeInstanceFindNext(
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
220HRESULT
221WINAPI
222FilterVolumeInstanceFindClose(
223 _In_ HANDLE hVolumeInstanceFind);
224
225_Must_inspect_result_
226HRESULT
227WINAPI
228FilterGetInformation(
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_
236HRESULT
237WINAPI
238FilterInstanceGetInformation(
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_
246HRESULT
247WINAPI
248FilterConnectCommunicationPort(
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_
257HRESULT
258WINAPI
259FilterSendMessage(
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_
268HRESULT
269WINAPI
270FilterGetMessage(
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_
277HRESULT
278WINAPI
279FilterReplyMessage(
280 _In_ HANDLE hPort,
281 _In_reads_bytes_(dwReplyBufferSize) PFILTER_REPLY_HEADER lpReplyBuffer,
282 _In_ DWORD dwReplyBufferSize);
283
284_Must_inspect_result_
285HRESULT
286WINAPI
287FilterGetDosName(
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__ */