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))
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))
35#define FLT_MGR_LONGHORN (NTDDI_VERSION >= NTDDI_VISTA)
36#define FLT_MGR_WIN7 (NTDDI_VERSION >= NTDDI_WIN7)
47#define FLT_ASSERT(_e) NT_ASSERT(_e)
48#define FLT_ASSERTMSG(_m, _e) NT_ASSERTMSG(_m, _e)
50#define FLT_ASSERT(_e) ASSERT(_e)
51#define FLT_ASSERTMSG(_m, _e) ASSERTMSG(_m, _e)
76 _In_ HFILTER hFilter);
125 _In_ FILTER_INFORMATION_CLASS dwInformationClass,
136 _In_ FILTER_INFORMATION_CLASS dwInformationClass,
151 _In_ FILTER_VOLUME_INFORMATION_CLASS dwInformationClass,
162 _In_ FILTER_VOLUME_INFORMATION_CLASS dwInformationClass,
177 _In_ INSTANCE_INFORMATION_CLASS dwInformationClass,
188 _In_ INSTANCE_INFORMATION_CLASS dwInformationClass,
204 _In_ INSTANCE_INFORMATION_CLASS dwInformationClass,
215 _In_ INSTANCE_INFORMATION_CLASS dwInformationClass,
229 _In_ HFILTER hFilter,
230 _In_ FILTER_INFORMATION_CLASS dwInformationClass,
240 _In_ INSTANCE_INFORMATION_CLASS dwInformationClass,
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
_Must_inspect_result_ HRESULT WINAPI FilterFindNext(_In_ HANDLE hFilterFind, _In_ FILTER_INFORMATION_CLASS dwInformationClass, _Out_writes_bytes_to_(dwBufferSize, *lpBytesReturned) LPVOID lpBuffer, _In_ DWORD dwBufferSize, _Out_ LPDWORD lpBytesReturned)
_Must_inspect_result_ HRESULT WINAPI FilterDetach(_In_ LPCWSTR lpFilterName, _In_ LPCWSTR lpVolumeName, _In_opt_ LPCWSTR lpInstanceName)
_Must_inspect_result_ HRESULT WINAPI FilterCreate(_In_ LPCWSTR lpFilterName, _Outptr_ HFILTER *hFilter)
_Must_inspect_result_ HRESULT WINAPI FilterInstanceGetInformation(_In_ HFILTER_INSTANCE hInstance, _In_ INSTANCE_INFORMATION_CLASS dwInformationClass, _Out_writes_bytes_to_(dwBufferSize, *lpBytesReturned) LPVOID lpBuffer, _In_ DWORD dwBufferSize, _Out_ LPDWORD lpBytesReturned)
_Must_inspect_result_ HRESULT WINAPI FilterAttach(_In_ LPCWSTR lpFilterName, _In_ LPCWSTR lpVolumeName, _In_opt_ LPCWSTR lpInstanceName, _In_opt_ DWORD dwCreatedInstanceNameLength, _Out_writes_bytes_opt_(dwCreatedInstanceNameLength) LPWSTR lpCreatedInstanceName)
_Must_inspect_result_ HRESULT WINAPI FilterConnectCommunicationPort(_In_ LPCWSTR lpPortName, _In_ DWORD dwOptions, _In_reads_bytes_opt_(wSizeOfContext) LPCVOID lpContext, _In_ WORD wSizeOfContext, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Outptr_ HANDLE *hPort)
_Must_inspect_result_ HRESULT WINAPI FilterInstanceFindNext(_In_ HANDLE hFilterInstanceFind, _In_ INSTANCE_INFORMATION_CLASS dwInformationClass, _Out_writes_bytes_to_(dwBufferSize, *lpBytesReturned) LPVOID lpBuffer, _In_ DWORD dwBufferSize, _Out_ LPDWORD lpBytesReturned)
_Must_inspect_result_ HRESULT WINAPI FilterGetMessage(_In_ HANDLE hPort, _Out_writes_bytes_(dwMessageBufferSize) PFILTER_MESSAGE_HEADER lpMessageBuffer, _In_ DWORD dwMessageBufferSize, _Inout_ LPOVERLAPPED lpOverlapped)
_Must_inspect_result_ HRESULT WINAPI FilterVolumeFindFirst(_In_ FILTER_VOLUME_INFORMATION_CLASS dwInformationClass, _Out_writes_bytes_to_(dwBufferSize, *lpBytesReturned) LPVOID lpBuffer, _In_ DWORD dwBufferSize, _Out_ LPDWORD lpBytesReturned, _Out_ PHANDLE lpVolumeFind)
HRESULT WINAPI FilterInstanceClose(_In_ HFILTER_INSTANCE hInstance)
_Must_inspect_result_ HRESULT WINAPI FilterInstanceFindFirst(_In_ LPCWSTR lpFilterName, _In_ INSTANCE_INFORMATION_CLASS dwInformationClass, _Out_writes_bytes_to_(dwBufferSize, *lpBytesReturned) LPVOID lpBuffer, _In_ DWORD dwBufferSize, _Out_ LPDWORD lpBytesReturned, _Out_ LPHANDLE lpFilterInstanceFind)
_Must_inspect_result_ HRESULT WINAPI FilterVolumeFindNext(_In_ HANDLE hVolumeFind, _In_ FILTER_VOLUME_INFORMATION_CLASS dwInformationClass, _Out_writes_bytes_to_(dwBufferSize, *lpBytesReturned) LPVOID lpBuffer, _In_ DWORD dwBufferSize, _Out_ LPDWORD lpBytesReturned)
_Must_inspect_result_ HRESULT WINAPI FilterInstanceFindClose(_In_ HANDLE hFilterInstanceFind)
_Must_inspect_result_ HRESULT WINAPI FilterVolumeInstanceFindFirst(_In_ LPCWSTR lpVolumeName, _In_ INSTANCE_INFORMATION_CLASS dwInformationClass, _Out_writes_bytes_to_(dwBufferSize, *lpBytesReturned) LPVOID lpBuffer, _In_ DWORD dwBufferSize, _Out_ LPDWORD lpBytesReturned, _Out_ LPHANDLE lpVolumeInstanceFind)
_Must_inspect_result_ HRESULT WINAPI FilterInstanceCreate(_In_ LPCWSTR lpFilterName, _In_ LPCWSTR lpVolumeName, _In_opt_ LPCWSTR lpInstanceName, _Outptr_ HFILTER_INSTANCE *hInstance)
_Must_inspect_result_ HRESULT WINAPI FilterAttachAtAltitude(_In_ LPCWSTR lpFilterName, _In_ LPCWSTR lpVolumeName, _In_ LPCWSTR lpAltitude, _In_opt_ LPCWSTR lpInstanceName, _In_opt_ DWORD dwCreatedInstanceNameLength, _Out_writes_bytes_opt_(dwCreatedInstanceNameLength) LPWSTR lpCreatedInstanceName)
_Must_inspect_result_ HRESULT WINAPI FilterGetInformation(_In_ HFILTER hFilter, _In_ FILTER_INFORMATION_CLASS dwInformationClass, _Out_writes_bytes_to_(dwBufferSize, *lpBytesReturned) LPVOID lpBuffer, _In_ DWORD dwBufferSize, _Out_ LPDWORD lpBytesReturned)
_Must_inspect_result_ HRESULT WINAPI FilterGetDosName(_In_ LPCWSTR lpVolumeName, _Out_writes_(dwDosNameBufferSize) LPWSTR lpDosName, _In_ DWORD dwDosNameBufferSize)
_Must_inspect_result_ HRESULT WINAPI FilterVolumeInstanceFindNext(_In_ HANDLE hVolumeInstanceFind, _In_ INSTANCE_INFORMATION_CLASS dwInformationClass, _Out_writes_bytes_to_(dwBufferSize, *lpBytesReturned) LPVOID lpBuffer, _In_ DWORD dwBufferSize, _Out_ LPDWORD lpBytesReturned)
_Must_inspect_result_ HRESULT WINAPI FilterLoad(_In_ LPCWSTR lpFilterName)
_Must_inspect_result_ HRESULT WINAPI FilterFindFirst(_In_ FILTER_INFORMATION_CLASS dwInformationClass, _Out_writes_bytes_to_(dwBufferSize, *lpBytesReturned) LPVOID lpBuffer, _In_ DWORD dwBufferSize, _Out_ LPDWORD lpBytesReturned, _Out_ LPHANDLE lpFilterFind)
_Must_inspect_result_ HRESULT WINAPI FilterUnload(_In_ LPCWSTR lpFilterName)
_Must_inspect_result_ HRESULT WINAPI FilterSendMessage(_In_ HANDLE hPort, _In_reads_bytes_opt_(dwInBufferSize) LPVOID lpInBuffer, _In_ DWORD dwInBufferSize, _Out_writes_bytes_to_opt_(dwOutBufferSize, *lpBytesReturned) LPVOID lpOutBuffer, _In_ DWORD dwOutBufferSize, _Out_ LPDWORD lpBytesReturned)
HRESULT WINAPI FilterClose(_In_ HFILTER hFilter)
_Must_inspect_result_ HRESULT WINAPI FilterFindClose(_In_ HANDLE hFilterFind)
HRESULT WINAPI FilterVolumeFindClose(_In_ HANDLE hVolumeFind)
HRESULT WINAPI FilterVolumeInstanceFindClose(_In_ HANDLE hVolumeInstanceFind)
_Must_inspect_result_ HRESULT WINAPI FilterReplyMessage(_In_ HANDLE hPort, _In_reads_bytes_(dwReplyBufferSize) PFILTER_REPLY_HEADER lpReplyBuffer, _In_ DWORD dwReplyBufferSize)
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED lpOverlapped
#define _In_reads_bytes_(s)
#define _Out_writes_bytes_opt_(s)
#define _Out_writes_bytes_to_(s, c)
#define _Must_inspect_result_
#define _Out_writes_bytes_to_opt_(s, c)
#define _Out_writes_bytes_(s)
#define _In_reads_bytes_opt_(s)
_In_ DWORD _In_ DWORD _In_ DWORD _Out_ LPDWORD lpBytesReturned