mirror of
https://github.com/reactos/reactos.git
synced 2025-02-23 17:05:46 +00:00
[FLTLIB]
- 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:
parent
d89d2873bc
commit
35623f5db9
4 changed files with 579 additions and 113 deletions
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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)
|
||||
|
|
403
reactos/dll/win32/fltlib/stubs.c
Normal file
403
reactos/dll/win32/fltlib/stubs.c
Normal 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;
|
||||
}
|
Loading…
Reference in a new issue