- Stub out fltlib.dll.
- Add basic implementations for FilterLoad and FilterUnload
- Remove the wine code, this lib talks directly to fltmgr.sys and is therefore a reactos only dll from now on.

svn path=/trunk/; revision=72178
This commit is contained in:
Ged Murphy 2016-08-09 22:10:05 +00:00
parent d89d2873bc
commit 35623f5db9
4 changed files with 579 additions and 113 deletions

View file

@ -1,11 +1,11 @@
add_definitions(-D__WINESRC__)
include_directories(${REACTOS_SOURCE_DIR}/sdk/include/reactos/wine)
spec2def(fltlib.dll fltlib.spec)
spec2def(fltlib.dll fltlib.spec ADD_IMPORTLIB)
list(APPEND SOURCE
fltlib.c
${CMAKE_CURRENT_BINARY_DIR}/fltlib_stubs.c
stubs.c
${CMAKE_CURRENT_BINARY_DIR}/fltlib.def)
add_library(fltlib SHARED ${SOURCE} rsrc.rc)

View file

@ -1,101 +1,165 @@
/*
* Copyright 2009 Detlef Riekenberg
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
* PROJECT: Filesystem Filter Manager library
* LICENSE: GPL - See COPYING in the top level directory
* FILE: dll/win32/fltlib/fltlib.c
* PURPOSE:
* PROGRAMMERS: Ged Murphy (ged.murphy@reactos.org)
*/
#include <stdarg.h>
#define WIN32_NO_STATUS
#include "windef.h"
#include "winbase.h"
#define NTOS_MODE_USER
#include <ndk/iofuncs.h>
#include <ndk/obfuncs.h>
#include <ndk/rtlfuncs.h>
#include "wine/debug.h"
/* DATA ****************************************************************************/
WINE_DEFAULT_DEBUG_CHANNEL(fltlib);
/*****************************************************
* DllMain
*/
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
TRACE("(0x%p, %d, %p)\n", hinstDLL, fdwReason, lpvReserved);
//MOVEME
#define IOCTL_LOAD_FILTER CTL_CODE(FILE_DEVICE_DISK_FILE_SYSTEM, 0x01, 0, FILE_WRITE_DATA) //88004
#define IOCTL_UNLOAD_FILTER CTL_CODE(FILE_DEVICE_DISK_FILE_SYSTEM, 0x02, 0, FILE_WRITE_DATA) //88008
#define IOCTL_CREATE_FILTER CTL_CODE(FILE_DEVICE_DISK_FILE_SYSTEM, 0x03, 0, FILE_READ_DATA) //8400c
switch (fdwReason)
static
HRESULT
FilterLoadUnload(_In_z_ LPCWSTR lpFilterName,
_In_ BOOL Load);
static
DWORD
SendIoctl(_In_ HANDLE Handle,
_In_ ULONG IoControlCode,
_In_reads_bytes_opt_(BufferSize) LPVOID lpInBuffer,
_In_ DWORD BufferSize);
/* PUBLIC FUNCTIONS ****************************************************************/
_Must_inspect_result_
HRESULT
WINAPI
FilterLoad(_In_ LPCWSTR lpFilterName)
{
return FilterLoadUnload(lpFilterName, TRUE);
}
_Must_inspect_result_
HRESULT
WINAPI
FilterUnload(_In_ LPCWSTR lpFilterName)
{
return FilterLoadUnload(lpFilterName, FALSE);
}
/* PRIVATE FUNCTIONS ****************************************************************/
static
HRESULT
FilterLoadUnload(_In_z_ LPCWSTR lpFilterName,
_In_ BOOL Load)
{
PUNICODE_STRING FilterName;
HANDLE hFltMgr;
DWORD BufferLength;
DWORD dwError;
/* Get a handle to the filter manager */
hFltMgr = CreateFileW(lpFilterName,
GENERIC_READ,
FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
&hFltMgr);
if (hFltMgr == INVALID_HANDLE_VALUE)
{
case DLL_WINE_PREATTACH:
return FALSE; /* use native version */
case DLL_PROCESS_ATTACH:
DisableThreadLibraryCalls(hinstDLL);
break;
dwError = GetLastError();
return HRESULT_FROM_WIN32(dwError);
}
/* Calc and allocate a buffer to hold our filter name */
BufferLength = wcslen(lpFilterName) * sizeof(WCHAR);
FilterName = RtlAllocateHeap(GetProcessHeap(),
0,
BufferLength + sizeof(UNICODE_STRING));
if (FilterName == NULL)
{
CloseHandle(hFltMgr);
return HRESULT_FROM_WIN32(ERROR_OUTOFMEMORY);
}
/* Build up the filter name into a real life string */
FilterName->Buffer = (PWCH)(FilterName + 1);
FilterName->Length = BufferLength;
FilterName->MaximumLength = BufferLength;
RtlCopyMemory(FilterName->Buffer, lpFilterName, BufferLength);
/* Tell the filter manager to load the filter for us */
dwError = SendIoctl(hFltMgr,
Load ? IOCTL_LOAD_FILTER : IOCTL_UNLOAD_FILTER,
FilterName,
BufferLength + sizeof(UNICODE_STRING));
/* Cleaup and bail*/
CloseHandle(hFltMgr);
return HRESULT_FROM_WIN32(dwError);
}
static
DWORD
SendIoctl(_In_ HANDLE Handle,
_In_ ULONG IoControlCode,
_In_reads_bytes_opt_(BufferSize) LPVOID lpInBuffer,
_In_ DWORD BufferSize)
{
IO_STATUS_BLOCK IoStatusBlock;
NTSTATUS Status;
Status = NtDeviceIoControlFile(Handle,
NULL,
NULL,
NULL,
&IoStatusBlock,
IoControlCode,
lpInBuffer,
BufferSize,
NULL,
0);
if (Status == STATUS_PENDING)
{
Status = NtWaitForSingleObject(Handle, FALSE, NULL);
if (NT_SUCCESS(Status))
{
Status = IoStatusBlock.Status;
}
}
return RtlNtStatusToDosError(Status);
}
BOOL
WINAPI
DllMain(_In_ HINSTANCE hinstDLL,
_In_ DWORD dwReason,
_In_ LPVOID lpvReserved)
{
switch (dwReason)
{
case DLL_PROCESS_ATTACH:
DisableThreadLibraryCalls(hinstDLL);
break;
}
return TRUE;
}
/**********************************************************************
* FilterConnectCommunicationPort (FLTLIB.@)
*/
HRESULT WINAPI FilterConnectCommunicationPort(LPCWSTR lpPortName, DWORD dwOptions,
LPVOID lpContext, DWORD dwSizeOfContext,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
HANDLE *hPort)
{
FIXME("(%s, %d, %p, %d, %p, %p) stub\n", debugstr_w(lpPortName), dwOptions,
lpContext, dwSizeOfContext, lpSecurityAttributes, hPort);
*hPort = INVALID_HANDLE_VALUE;
return E_NOTIMPL;
}
/**********************************************************************
* FilterFindFirst (FLTLIB.@)
*/
HRESULT WINAPI FilterFindFirst(DWORD class, LPVOID buffer, DWORD size, LPDWORD bytes_returned,
LPHANDLE handle)
{
FIXME("(%u, %p, %u, %p, %p) stub\n", class, buffer, size, bytes_returned, handle);
return HRESULT_FROM_WIN32(ERROR_NO_MORE_ITEMS);
}
/**********************************************************************
* FilterFindClose (FLTLIB.@)
*/
HRESULT WINAPI FilterFindClose(HANDLE handle)
{
FIXME("(%p) stub\n", handle);
return S_OK;
}
/**********************************************************************
* FilterLoad (FLTLIB.@)
*/
HRESULT WINAPI FilterLoad(LPCWSTR filtername)
{
FIXME("(%s) stub\n", debugstr_w(filtername));
return HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED);
}
/**********************************************************************
* FilterUnload (FLTLIB.@)
*/
HRESULT WINAPI FilterUnload(LPCWSTR filtername)
{
FIXME("(%s) stub\n", debugstr_w(filtername));
if (!filtername)
return HRESULT_FROM_WIN32(ERROR_INVALID_PARAMETER);
return S_OK;
}
}

View file

@ -1,29 +1,28 @@
@ stub FilterAttach
@ stub FilterAttachAtAltitude
@ stub FilterClose
@ stdcall FilterAttach(wstr wstr wstr long wstr)
@ stdcall FilterAttachAtAltitude(wstr wstr wstr wstr long wstr)
@ stdcall FilterClose(ptr)
@ stdcall FilterConnectCommunicationPort(wstr long ptr long ptr ptr)
@ stub FilterCreate
@ stub FilterDetach
@ stdcall FilterCreate(wstr ptr)
@ stdcall FilterDetach(wstr wstr wstr)
@ stdcall FilterFindClose(ptr)
@ stdcall FilterFindFirst(long ptr long ptr ptr)
@ stub FilterFindNext
@ stub FilterGetDosName
@ stub FilterGetInformation
@ stub FilterGetMessage
@ stub FilterInstanceClose
@ stub FilterInstanceCreate
@ stub FilterInstanceFindClose
@ stub FilterInstanceFindFirst
@ stub FilterInstanceFindNext
@ stub FilterInstanceGetInformation
@ stdcall FilterFindNext(ptr ptr long ptr ptr)
@ stdcall FilterGetDosName(wstr wstr long)
@ stdcall FilterGetInformation(ptr long ptr long ptr)
@ stdcall FilterGetMessage(ptr ptr long ptr)
@ stdcall FilterInstanceClose(ptr)
@ stdcall FilterInstanceCreate(wstr wstr wstr ptr)
@ stdcall FilterInstanceFindClose(ptr)
@ stdcall FilterInstanceFindFirst(wstr long ptr long ptr ptr)
@ stdcall FilterInstanceFindNext(ptr long ptr long ptr)
@ stdcall FilterInstanceGetInformation(ptr long ptr long ptr)
@ stdcall FilterLoad(wstr)
@ stub FilterReplyMessage
@ stub FilterSendMessage
@ stdcall FilterReplyMessage(ptr ptr long)
@ stdcall FilterSendMessage(ptr ptr long ptr long ptr)
@ stdcall FilterUnload(wstr)
@ stub FilterVolumeClose
@ stub FilterVolumeFindClose
@ stub FilterVolumeFindFirst
@ stub FilterVolumeFindNext
@ stub FilterVolumeInstanceFindClose
@ stub FilterVolumeInstanceFindFirst
@ stub FilterVolumeInstanceFindNext
@ stdcall FilterVolumeFindClose(ptr)
@ stdcall FilterVolumeFindFirst(long ptr long ptr ptr)
@ stdcall FilterVolumeFindNext(ptr long ptr long ptr)
@ stdcall FilterVolumeInstanceFindClose(ptr)
@ stdcall FilterVolumeInstanceFindFirst(wstr long ptr long ptr ptr)
@ stdcall FilterVolumeInstanceFindNext(ptr long ptr long ptr)

View file

@ -0,0 +1,403 @@
/*
* PROJECT: Filesystem Filter Manager library
* LICENSE: GPL - See COPYING in the top level directory
* FILE: dll/win32/fltlib/stubs.c
* PURPOSE:
* PROGRAMMERS: Ged Murphy (ged.murphy@reactos.org)
*/
// Hack - our SDK reports NTDDI_VERSION as 0x05020100 (from _WIN32_WINNT 0x502)
// which doesn't pass the FLT_MGR_BASELINE check in fltkernel.h
#define NTDDI_VERSION NTDDI_WS03SP1
#include <stdarg.h>
#include "windef.h"
#include "winbase.h"
#include <fltuser.h>
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(fltlib);
_Must_inspect_result_
HRESULT
WINAPI
FilterCreate(_In_ LPCWSTR lpFilterName,
_Outptr_ HFILTER *hFilter)
{
UNREFERENCED_PARAMETER(lpFilterName);
UNREFERENCED_PARAMETER(hFilter);
return E_NOTIMPL;
}
HRESULT
WINAPI
FilterClose(_In_ HFILTER hFilter)
{
UNREFERENCED_PARAMETER(hFilter);
return E_NOTIMPL;
}
_Must_inspect_result_
HRESULT
WINAPI
FilterInstanceCreate(_In_ LPCWSTR lpFilterName,
_In_ LPCWSTR lpVolumeName,
_In_opt_ LPCWSTR lpInstanceName,
_Outptr_ HFILTER_INSTANCE *hInstance)
{
UNREFERENCED_PARAMETER(lpFilterName);
UNREFERENCED_PARAMETER(lpVolumeName);
UNREFERENCED_PARAMETER(lpInstanceName);
UNREFERENCED_PARAMETER(hInstance);
return E_NOTIMPL;
}
HRESULT
WINAPI
FilterInstanceClose(_In_ HFILTER_INSTANCE hInstance)
{
UNREFERENCED_PARAMETER(hInstance);
return E_NOTIMPL;
}
_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)
{
UNREFERENCED_PARAMETER(lpFilterName);
UNREFERENCED_PARAMETER(lpVolumeName);
UNREFERENCED_PARAMETER(lpInstanceName);
UNREFERENCED_PARAMETER(dwCreatedInstanceNameLength);
UNREFERENCED_PARAMETER(lpCreatedInstanceName);
return E_NOTIMPL;
}
_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)
{
UNREFERENCED_PARAMETER(lpFilterName);
UNREFERENCED_PARAMETER(lpVolumeName);
UNREFERENCED_PARAMETER(lpAltitude);
UNREFERENCED_PARAMETER(lpInstanceName);
UNREFERENCED_PARAMETER(dwCreatedInstanceNameLength);
UNREFERENCED_PARAMETER(lpCreatedInstanceName);
return E_NOTIMPL;
}
_Must_inspect_result_
HRESULT
WINAPI
FilterDetach(_In_ LPCWSTR lpFilterName,
_In_ LPCWSTR lpVolumeName,
_In_opt_ LPCWSTR lpInstanceName
)
{
UNREFERENCED_PARAMETER(lpFilterName);
UNREFERENCED_PARAMETER(lpVolumeName);
UNREFERENCED_PARAMETER(lpInstanceName);
return E_NOTIMPL;
}
_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)
{
UNREFERENCED_PARAMETER(dwInformationClass);
UNREFERENCED_PARAMETER(lpBuffer);
UNREFERENCED_PARAMETER(dwBufferSize);
UNREFERENCED_PARAMETER(lpBytesReturned);
UNREFERENCED_PARAMETER(lpFilterFind);
return E_NOTIMPL;
}
_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)
{
UNREFERENCED_PARAMETER(hFilterFind);
UNREFERENCED_PARAMETER(dwInformationClass);
UNREFERENCED_PARAMETER(lpBuffer);
UNREFERENCED_PARAMETER(dwBufferSize);
UNREFERENCED_PARAMETER(lpBytesReturned);
return E_NOTIMPL;
}
_Must_inspect_result_
HRESULT
WINAPI
FilterFindClose(_In_ HANDLE hFilterFind)
{
UNREFERENCED_PARAMETER(hFilterFind);
return E_NOTIMPL;
}
_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)
{
UNREFERENCED_PARAMETER(dwInformationClass);
UNREFERENCED_PARAMETER(lpBuffer);
UNREFERENCED_PARAMETER(dwBufferSize);
UNREFERENCED_PARAMETER(lpBytesReturned);
UNREFERENCED_PARAMETER(lpVolumeFind);
return E_NOTIMPL;
}
_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)
{
UNREFERENCED_PARAMETER(hVolumeFind);
UNREFERENCED_PARAMETER(dwInformationClass);
UNREFERENCED_PARAMETER(lpBuffer);
UNREFERENCED_PARAMETER(dwBufferSize);
UNREFERENCED_PARAMETER(lpBytesReturned);
return E_NOTIMPL;
}
HRESULT
WINAPI
FilterVolumeFindClose(_In_ HANDLE hVolumeFind)
{
UNREFERENCED_PARAMETER(hVolumeFind);
return E_NOTIMPL;
}
_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)
{
UNREFERENCED_PARAMETER(lpFilterName);
UNREFERENCED_PARAMETER(dwInformationClass);
UNREFERENCED_PARAMETER(lpBuffer);
UNREFERENCED_PARAMETER(dwBufferSize);
UNREFERENCED_PARAMETER(lpBytesReturned);
UNREFERENCED_PARAMETER(lpFilterInstanceFind);
return E_NOTIMPL;
}
_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)
{
UNREFERENCED_PARAMETER(hFilterInstanceFind);
UNREFERENCED_PARAMETER(dwInformationClass);
UNREFERENCED_PARAMETER(lpBuffer);
UNREFERENCED_PARAMETER(dwBufferSize);
UNREFERENCED_PARAMETER(lpBytesReturned);
return E_NOTIMPL;
}
_Must_inspect_result_
HRESULT
WINAPI
FilterInstanceFindClose(_In_ HANDLE hFilterInstanceFind)
{
UNREFERENCED_PARAMETER(hFilterInstanceFind);
return E_NOTIMPL;
}
_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)
{
UNREFERENCED_PARAMETER(lpVolumeName);
UNREFERENCED_PARAMETER(dwInformationClass);
UNREFERENCED_PARAMETER(lpBuffer);
UNREFERENCED_PARAMETER(dwBufferSize);
UNREFERENCED_PARAMETER(lpBytesReturned);
UNREFERENCED_PARAMETER(lpVolumeInstanceFind);
return E_NOTIMPL;
}
_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)
{
UNREFERENCED_PARAMETER(hVolumeInstanceFind);
UNREFERENCED_PARAMETER(dwInformationClass);
UNREFERENCED_PARAMETER(lpBuffer);
UNREFERENCED_PARAMETER(dwBufferSize);
UNREFERENCED_PARAMETER(lpBytesReturned);
return E_NOTIMPL;
}
HRESULT
WINAPI
FilterVolumeInstanceFindClose(_In_ HANDLE hVolumeInstanceFind)
{
UNREFERENCED_PARAMETER(hVolumeInstanceFind);
return E_NOTIMPL;
}
_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)
{
UNREFERENCED_PARAMETER(hFilter);
UNREFERENCED_PARAMETER(dwInformationClass);
UNREFERENCED_PARAMETER(lpBuffer);
UNREFERENCED_PARAMETER(dwBufferSize);
UNREFERENCED_PARAMETER(lpBytesReturned);
return E_NOTIMPL;
}
_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)
{
UNREFERENCED_PARAMETER(hInstance);
UNREFERENCED_PARAMETER(dwInformationClass);
UNREFERENCED_PARAMETER(lpBuffer);
UNREFERENCED_PARAMETER(dwBufferSize);
UNREFERENCED_PARAMETER(lpBytesReturned);
return E_NOTIMPL;
}
_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)
{
UNREFERENCED_PARAMETER(lpPortName);
UNREFERENCED_PARAMETER(dwOptions);
UNREFERENCED_PARAMETER(lpContext);
UNREFERENCED_PARAMETER(wSizeOfContext);
UNREFERENCED_PARAMETER(lpSecurityAttributes);
UNREFERENCED_PARAMETER(hPort);
return E_NOTIMPL;
}
_Must_inspect_result_
HRESULT
WINAPI
FilterSendMessage(_In_ HANDLE hPort,
_In_reads_bytes_(dwInBufferSize) LPVOID lpInBuffer,
_In_ DWORD dwInBufferSize,
_Out_writes_bytes_to_opt_(dwOutBufferSize, *lpBytesReturned) LPVOID lpOutBuffer,
_In_ DWORD dwOutBufferSize,
_Out_ LPDWORD lpBytesReturned)
{
UNREFERENCED_PARAMETER(hPort);
UNREFERENCED_PARAMETER(lpInBuffer);
UNREFERENCED_PARAMETER(dwInBufferSize);
UNREFERENCED_PARAMETER(lpOutBuffer);
UNREFERENCED_PARAMETER(dwOutBufferSize);
UNREFERENCED_PARAMETER(lpBytesReturned);
return E_NOTIMPL;
}
_Must_inspect_result_
HRESULT
WINAPI
FilterGetMessage(_In_ HANDLE hPort,
_Out_writes_bytes_(dwMessageBufferSize) PFILTER_MESSAGE_HEADER lpMessageBuffer,
_In_ DWORD dwMessageBufferSize,
_Inout_opt_ LPOVERLAPPED lpOverlapped)
{
UNREFERENCED_PARAMETER(hPort);
UNREFERENCED_PARAMETER(lpMessageBuffer);
UNREFERENCED_PARAMETER(dwMessageBufferSize);
UNREFERENCED_PARAMETER(lpOverlapped);
return E_NOTIMPL;
}
_Must_inspect_result_
HRESULT
WINAPI
FilterReplyMessage(_In_ HANDLE hPort,
_In_reads_bytes_(dwReplyBufferSize) PFILTER_REPLY_HEADER lpReplyBuffer,
_In_ DWORD dwReplyBufferSize)
{
UNREFERENCED_PARAMETER(hPort);
UNREFERENCED_PARAMETER(lpReplyBuffer);
UNREFERENCED_PARAMETER(dwReplyBufferSize);
return E_NOTIMPL;
}
_Must_inspect_result_
HRESULT
WINAPI
FilterGetDosName(_In_ LPCWSTR lpVolumeName,
_Out_writes_(dwDosNameBufferSize) LPWSTR lpDosName,
_In_ DWORD dwDosNameBufferSize)
{
UNREFERENCED_PARAMETER(lpVolumeName);
UNREFERENCED_PARAMETER(lpDosName);
UNREFERENCED_PARAMETER(dwDosNameBufferSize);
return E_NOTIMPL;
}