ReactOS 0.4.16-dev-340-g0540c21
fltkernel.h File Reference
#include <ntifs.h>
#include <fltuserstructures.h>
#include <initguid.h>
#include "pshpack4.h"
#include "poppack.h"
Include dependency graph for fltkernel.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

union  _FLT_PARAMETERS
 
struct  _FLT_IO_PARAMETER_BLOCK
 
struct  _FLT_CALLBACK_DATA
 
struct  _FLT_RELATED_OBJECTS
 
struct  _FLT_RELATED_CONTEXTS
 
struct  _FLT_CONTEXT_REGISTRATION
 
struct  _FLT_OPERATION_REGISTRATION
 
struct  _FLT_TAG_DATA_BUFFER
 
struct  _FLT_NAME_CONTROL
 
struct  _FLT_REGISTRATION
 
struct  _FLT_FILE_NAME_INFORMATION
 
struct  _FLT_VOLUME_PROPERTIES
 
struct  _FLT_CALLBACK_DATA_QUEUE
 

Macros

#define __FLTKERNEL__
 
#define FLT_MGR_BASELINE
 
#define FLT_MGR_AFTER_XPSP2
 
#define FLT_MGR_LONGHORN   (NTDDI_VERSION >= NTDDI_VISTA)
 
#define FLT_MGR_WIN7   (NTDDI_VERSION >= NTDDI_WIN7)
 
#define FLT_ASSERT(_e)   NT_ASSERT(_e)
 
#define FLT_ASSERTMSG(_m, _e)   NT_ASSERTMSG(_m, _e)
 
#define Add2Ptr(P, I)   ((PVOID)((PUCHAR)(P) + (I)))
 
#define PtrOffset(B, O)   ((ULONG)((ULONG_PTR)(O) - (ULONG_PTR)(B)))
 
#define ROUND_TO_SIZE(_length, _alignment)    ((((ULONG_PTR)(_length)) + ((_alignment)-1)) & ~(ULONG_PTR) ((_alignment) - 1))
 
#define IS_ALIGNED(_pointer, _alignment)    ((((ULONG_PTR) (_pointer)) & ((_alignment) - 1)) == 0)
 
#define IRP_MJ_ACQUIRE_FOR_SECTION_SYNCHRONIZATION   ((UCHAR)-1)
 
#define IRP_MJ_RELEASE_FOR_SECTION_SYNCHRONIZATION   ((UCHAR)-2)
 
#define IRP_MJ_ACQUIRE_FOR_MOD_WRITE   ((UCHAR)-3)
 
#define IRP_MJ_RELEASE_FOR_MOD_WRITE   ((UCHAR)-4)
 
#define IRP_MJ_ACQUIRE_FOR_CC_FLUSH   ((UCHAR)-5)
 
#define IRP_MJ_RELEASE_FOR_CC_FLUSH   ((UCHAR)-6)
 
#define IRP_MJ_FAST_IO_CHECK_IF_POSSIBLE   ((UCHAR)-13)
 
#define IRP_MJ_NETWORK_QUERY_OPEN   ((UCHAR)-14)
 
#define IRP_MJ_MDL_READ   ((UCHAR)-15)
 
#define IRP_MJ_MDL_READ_COMPLETE   ((UCHAR)-16)
 
#define IRP_MJ_PREPARE_MDL_WRITE   ((UCHAR)-17)
 
#define IRP_MJ_MDL_WRITE_COMPLETE   ((UCHAR)-18)
 
#define IRP_MJ_VOLUME_MOUNT   ((UCHAR)-19)
 
#define IRP_MJ_VOLUME_DISMOUNT   ((UCHAR)-20)
 
#define IRP_MJ_OPERATION_END   ((UCHAR)0x80)
 
#define FLT_INTERNAL_OPERATION_COUNT   22
 
#define NULL_CONTEXT   ((PFLT_CONTEXT)NULL)
 
#define FLTFL_CALLBACK_DATA_REISSUE_MASK   0x0000FFFF
 
#define FLTFL_CALLBACK_DATA_IRP_OPERATION   0x00000001
 
#define FLTFL_CALLBACK_DATA_FAST_IO_OPERATION   0x00000002
 
#define FLTFL_CALLBACK_DATA_FS_FILTER_OPERATION   0x00000004
 
#define FLTFL_CALLBACK_DATA_SYSTEM_BUFFER   0x00000008
 
#define FLTFL_CALLBACK_DATA_GENERATED_IO   0x00010000
 
#define FLTFL_CALLBACK_DATA_REISSUED_IO   0x00020000
 
#define FLTFL_CALLBACK_DATA_DRAINING_IO   0x00040000
 
#define FLTFL_CALLBACK_DATA_POST_OPERATION   0x00080000
 
#define FLTFL_CALLBACK_DATA_NEW_SYSTEM_BUFFER   0x00100000
 
#define FLTFL_CALLBACK_DATA_DIRTY   0x80000000
 
#define FLT_SET_CALLBACK_DATA_DIRTY(Data)   FltSetCallbackDataDirty(Data)
 
#define FLT_CLEAR_CALLBACK_DATA_DIRTY(Data)   FltClearCallbackDataDirty(Data)
 
#define FLT_IS_CALLBACK_DATA_DIRTY(Data)   FltIsCallbackDataDirty(Data)
 
#define FLT_IS_IRP_OPERATION(Data)   (FlagOn((Data)->Flags, FLTFL_CALLBACK_DATA_IRP_OPERATION))
 
#define FLT_IS_FASTIO_OPERATION(Data)   (FlagOn((Data)->Flags, FLTFL_CALLBACK_DATA_FAST_IO_OPERATION))
 
#define FLT_IS_FS_FILTER_OPERATION(Data)   (FlagOn((Data)->Flags, FLTFL_CALLBACK_DATA_FS_FILTER_OPERATION))
 
#define FLT_IS_REISSUED_IO(Data)   (FlagOn((Data)->Flags, FLTFL_CALLBACK_DATA_REISSUED_IO))
 
#define FLT_IS_SYSTEM_BUFFER(Data)   (FlagOn((Data)->Flags, FLTFL_CALLBACK_DATA_SYSTEM_BUFFER))
 
#define FLT_VOLUME_CONTEXT   0x0001
 
#define FLT_INSTANCE_CONTEXT   0x0002
 
#define FLT_FILE_CONTEXT   0x0004
 
#define FLT_STREAM_CONTEXT   0x0008
 
#define FLT_STREAMHANDLE_CONTEXT   0x0010
 
#define FLT_TRANSACTION_CONTEXT   0x0020
 
#define FLT_CONTEXT_END   0xffff
 
#define FLT_ALL_CONTEXTS
 
#define FLT_ALLOCATE_CALLBACK_DATA_PREALLOCATE_ALL_MEMORY   0x00000001
 
#define FLTFL_CONTEXT_REGISTRATION_NO_EXACT_SIZE_MATCH   0x0001
 
#define FLT_VARIABLE_SIZED_CONTEXTS   ((SIZE_T)-1)
 
#define FLTFL_INSTANCE_SETUP_AUTOMATIC_ATTACHMENT   0x00000001
 
#define FLTFL_INSTANCE_SETUP_MANUAL_ATTACHMENT   0x00000002
 
#define FLTFL_INSTANCE_SETUP_NEWLY_MOUNTED_VOLUME   0x00000004
 
#define FLTFL_INSTANCE_SETUP_DETACHED_VOLUME   0x00000008
 
#define FLT_MAX_TRANSACTION_NOTIFICATIONS
 
#define FLTFL_INSTANCE_TEARDOWN_MANUAL   0x00000001
 
#define FLTFL_INSTANCE_TEARDOWN_FILTER_UNLOAD   0x00000002
 
#define FLTFL_INSTANCE_TEARDOWN_MANDATORY_FILTER_UNLOAD   0x00000004
 
#define FLTFL_INSTANCE_TEARDOWN_VOLUME_DISMOUNT   0x00000008
 
#define FLTFL_INSTANCE_TEARDOWN_INTERNAL_ERROR   0x00000010
 
#define FLTFL_POST_OPERATION_DRAINING   0x00000001
 
#define FLTFL_OPERATION_REGISTRATION_SKIP_PAGING_IO   0x00000001
 
#define FLTFL_OPERATION_REGISTRATION_SKIP_CACHED_IO   0x00000002
 
#define FLTFL_OPERATION_REGISTRATION_SKIP_NON_DASD_IO   0x00000004
 
#define FLT_TAG_DATA_BUFFER_HEADER_SIZE   FIELD_OFFSET(FLT_TAG_DATA_BUFFER, GenericReparseBuffer)
 
#define FLTFL_FILTER_UNLOAD_MANDATORY   0x00000001
 
#define FLTFL_NORMALIZE_NAME_CASE_SENSITIVE   0x01
 
#define FLTFL_NORMALIZE_NAME_DESTINATION_FILE_NAME   0x02
 
#define FLT_REGISTRATION_VERSION_0200   0x0200
 
#define FLT_REGISTRATION_VERSION_0201   0x0201
 
#define FLT_REGISTRATION_VERSION_0202   0x0202
 
#define FLT_REGISTRATION_VERSION_0203   0x0203
 
#define FLT_REGISTRATION_VERSION   FLT_REGISTRATION_VERSION_0202
 
#define FLTFL_REGISTRATION_DO_NOT_SUPPORT_SERVICE_STOP   0x00000001
 
#define FLTFL_REGISTRATION_SUPPORT_NPFS_MSFS   0x00000002
 
#define FLTFL_IO_OPERATION_NON_CACHED   0x00000001
 
#define FLTFL_IO_OPERATION_PAGING   0x00000002
 
#define FLTFL_IO_OPERATION_DO_NOT_UPDATE_BYTE_OFFSET   0x00000004
 
#define FLTFL_IO_OPERATION_SYNCHRONOUS_PAGING   0x00000008
 
#define FLT_VALID_FILE_NAME_FORMATS   0x000000ff
 
#define FLT_FILE_NAME_NORMALIZED   0x01
 
#define FLT_FILE_NAME_OPENED   0x02
 
#define FLT_FILE_NAME_SHORT   0x03
 
#define FltGetFileNameFormat(_NameOptions)   ((_NameOptions) & FLT_VALID_FILE_NAME_FORMATS)
 
#define FLT_VALID_FILE_NAME_QUERY_METHODS   0x0000ff00
 
#define FLT_FILE_NAME_QUERY_DEFAULT   0x0100
 
#define FLT_FILE_NAME_QUERY_CACHE_ONLY   0x0200
 
#define FLT_FILE_NAME_QUERY_FILESYSTEM_ONLY   0x0300
 
#define FLT_FILE_NAME_QUERY_ALWAYS_ALLOW_CACHE_LOOKUP   0x0400
 
#define FltGetFileNameQueryMethod(_NameOptions)   ((_NameOptions) & FLT_VALID_FILE_NAME_QUERY_METHODS)
 
#define FLT_VALID_FILE_NAME_FLAGS   0xff000000
 
#define FLT_FILE_NAME_REQUEST_FROM_CURRENT_PROVIDER   0x01000000
 
#define FLT_FILE_NAME_DO_NOT_CACHE   0x02000000
 
#define FLT_FILE_NAME_ALLOW_QUERY_ON_REPARSE   0x04000000
 
#define FLTFL_FILE_NAME_PARSED_FINAL_COMPONENT   0x0001
 
#define FLTFL_FILE_NAME_PARSED_EXTENSION   0x0002
 
#define FLTFL_FILE_NAME_PARSED_STREAM   0x0004
 
#define FLTFL_FILE_NAME_PARSED_PARENT_DIR   0x0008
 
#define FLT_PORT_CONNECT   0x0001
 
#define FLT_PORT_ALL_ACCESS   (FLT_PORT_CONNECT | STANDARD_RIGHTS_ALL)
 

Typedefs

typedef struct _FLT_FILTERPFLT_FILTER
 
typedef struct _FLT_VOLUMEPFLT_VOLUME
 
typedef struct _FLT_INSTANCEPFLT_INSTANCE
 
typedef struct _FLT_PORT * PFLT_PORT
 
typedef PVOID PFLT_CONTEXT
 
typedef union _FLT_PARAMETERS FLT_PARAMETERS
 
typedef union _FLT_PARAMETERSPFLT_PARAMETERS
 
typedef struct _FLT_IO_PARAMETER_BLOCK FLT_IO_PARAMETER_BLOCK
 
typedef struct _FLT_IO_PARAMETER_BLOCKPFLT_IO_PARAMETER_BLOCK
 
typedef USHORT FLT_CONTEXT_TYPE
 
typedef ULONG FLT_CALLBACK_DATA_FLAGS
 
typedef ULONG FLT_ALLOCATE_CALLBACK_DATA_FLAGS
 
typedef struct _FLT_CALLBACK_DATA FLT_CALLBACK_DATA
 
typedef struct _FLT_CALLBACK_DATAPFLT_CALLBACK_DATA
 
typedef struct _FLT_RELATED_OBJECTS FLT_RELATED_OBJECTS
 
typedef struct _FLT_RELATED_OBJECTSPFLT_RELATED_OBJECTS
 
typedef const struct _FLT_RELATED_OBJECTSPCFLT_RELATED_OBJECTS
 
typedef struct _FLT_RELATED_CONTEXTS FLT_RELATED_CONTEXTS
 
typedef struct _FLT_RELATED_CONTEXTSPFLT_RELATED_CONTEXTS
 
typedef VOID(FLTAPI * PFLT_CONTEXT_CLEANUP_CALLBACK) (_In_ PFLT_CONTEXT Context, _In_ FLT_CONTEXT_TYPE ContextType)
 
typedef PVOID(FLTAPI * PFLT_CONTEXT_ALLOCATE_CALLBACK) (_In_ POOL_TYPE PoolType, _In_ SIZE_T Size, _In_ FLT_CONTEXT_TYPE ContextType)
 
typedef VOID(FLTAPI * PFLT_CONTEXT_FREE_CALLBACK) (_In_ PVOID Pool, _In_ FLT_CONTEXT_TYPE ContextType)
 
typedef USHORT FLT_CONTEXT_REGISTRATION_FLAGS
 
typedef struct _FLT_CONTEXT_REGISTRATION FLT_CONTEXT_REGISTRATION
 
typedef struct _FLT_CONTEXT_REGISTRATIONPFLT_CONTEXT_REGISTRATION
 
typedef const struct _FLT_CONTEXT_REGISTRATIONPCFLT_CONTEXT_REGISTRATION
 
typedef ULONG FLT_INSTANCE_SETUP_FLAGS
 
typedef NTSTATUS(FLTAPI * PFLT_INSTANCE_SETUP_CALLBACK) (_In_ PCFLT_RELATED_OBJECTS FltObjects, _In_ FLT_INSTANCE_SETUP_FLAGS Flags, _In_ DEVICE_TYPE VolumeDeviceType, _In_ FLT_FILESYSTEM_TYPE VolumeFilesystemType)
 
typedef ULONG FLT_INSTANCE_QUERY_TEARDOWN_FLAGS
 
typedef NTSTATUS(FLTAPI * PFLT_INSTANCE_QUERY_TEARDOWN_CALLBACK) (_In_ PCFLT_RELATED_OBJECTS FltObjects, _In_ FLT_INSTANCE_QUERY_TEARDOWN_FLAGS Flags)
 
typedef ULONG FLT_INSTANCE_TEARDOWN_FLAGS
 
typedef VOID(FLTAPI * PFLT_INSTANCE_TEARDOWN_CALLBACK) (_In_ PCFLT_RELATED_OBJECTS FltObjects, _In_ FLT_INSTANCE_TEARDOWN_FLAGS Reason)
 
typedef enum _FLT_PREOP_CALLBACK_STATUS FLT_PREOP_CALLBACK_STATUS
 
typedef enum _FLT_PREOP_CALLBACK_STATUSPFLT_PREOP_CALLBACK_STATUS
 
typedef FLT_PREOP_CALLBACK_STATUS(FLTAPI * PFLT_PRE_OPERATION_CALLBACK) (_Inout_ PFLT_CALLBACK_DATA Data, _In_ PCFLT_RELATED_OBJECTS FltObjects, _Outptr_result_maybenull_ PVOID *CompletionContext)
 
typedef enum _FLT_POSTOP_CALLBACK_STATUS FLT_POSTOP_CALLBACK_STATUS
 
typedef enum _FLT_POSTOP_CALLBACK_STATUSPFLT_POSTOP_CALLBACK_STATUS
 
typedef ULONG FLT_POST_OPERATION_FLAGS
 
typedef FLT_POSTOP_CALLBACK_STATUS(FLTAPI * PFLT_POST_OPERATION_CALLBACK) (_Inout_ PFLT_CALLBACK_DATA Data, _In_ PCFLT_RELATED_OBJECTS FltObjects, _In_opt_ PVOID CompletionContext, _In_ FLT_POST_OPERATION_FLAGS Flags)
 
typedef ULONG FLT_OPERATION_REGISTRATION_FLAGS
 
typedef struct _FLT_OPERATION_REGISTRATION FLT_OPERATION_REGISTRATION
 
typedef struct _FLT_OPERATION_REGISTRATIONPFLT_OPERATION_REGISTRATION
 
typedef struct _FLT_TAG_DATA_BUFFER FLT_TAG_DATA_BUFFER
 
typedef struct _FLT_TAG_DATA_BUFFERPFLT_TAG_DATA_BUFFER
 
typedef ULONG FLT_FILTER_UNLOAD_FLAGS
 
typedef NTSTATUS(FLTAPI * PFLT_FILTER_UNLOAD_CALLBACK) (FLT_FILTER_UNLOAD_FLAGS Flags)
 
typedef struct _FLT_NAME_CONTROL FLT_NAME_CONTROL
 
typedef struct _FLT_NAME_CONTROLPFLT_NAME_CONTROL
 
typedef ULONG FLT_FILE_NAME_OPTIONS
 
typedef NTSTATUS(FLTAPI * PFLT_GENERATE_FILE_NAME) (_In_ PFLT_INSTANCE Instance, _In_ PFILE_OBJECT FileObject, _In_opt_ PFLT_CALLBACK_DATA CallbackData, _In_ FLT_FILE_NAME_OPTIONS NameOptions, _Out_ PBOOLEAN CacheFileNameInformation, _Out_ PFLT_NAME_CONTROL FileName)
 
typedef ULONG FLT_NORMALIZE_NAME_FLAGS
 
typedef NTSTATUS(FLTAPI * PFLT_NORMALIZE_NAME_COMPONENT) (_In_ PFLT_INSTANCE Instance, _In_ PCUNICODE_STRING ParentDirectory, _In_ USHORT VolumeNameLength, _In_ PCUNICODE_STRING Component, _Out_writes_bytes_(ExpandComponentNameLength) PFILE_NAMES_INFORMATION ExpandComponentName, _In_ ULONG ExpandComponentNameLength, _In_ FLT_NORMALIZE_NAME_FLAGS Flags, _Inout_ PVOID *NormalizationContext)
 
typedef NTSTATUS(FLTAPI * PFLT_NORMALIZE_NAME_COMPONENT_EX) (_In_ PFLT_INSTANCE Instance, _In_ PFILE_OBJECT FileObject, _In_ PCUNICODE_STRING ParentDirectory, _In_ USHORT VolumeNameLength, _In_ PCUNICODE_STRING Component, _Out_writes_bytes_(ExpandComponentNameLength) PFILE_NAMES_INFORMATION ExpandComponentName, _In_ ULONG ExpandComponentNameLength, _In_ FLT_NORMALIZE_NAME_FLAGS Flags, _Inout_ PVOID *NormalizationContext)
 
typedef VOID(FLTAPI * PFLT_NORMALIZE_CONTEXT_CLEANUP) (_In_opt_ PVOID *NormalizationContext)
 
typedef NTSTATUS(FLTAPI * PFLT_TRANSACTION_NOTIFICATION_CALLBACK) (_In_ PCFLT_RELATED_OBJECTS FltObjects, _In_ PFLT_CONTEXT TransactionContext, _In_ ULONG NotificationMask)
 
typedef ULONG FLT_REGISTRATION_FLAGS
 
typedef struct _FLT_REGISTRATION FLT_REGISTRATION
 
typedef struct _FLT_REGISTRATIONPFLT_REGISTRATION
 
typedef VOID(FLTAPI * PFLT_COMPLETED_ASYNC_IO_CALLBACK) (_In_ PFLT_CALLBACK_DATA CallbackData, _In_ PFLT_CONTEXT Context)
 
typedef ULONG FLT_IO_OPERATION_FLAGS
 
typedef VOID(FLTAPI * PFLT_GET_OPERATION_STATUS_CALLBACK) (_In_ PCFLT_RELATED_OBJECTS FltObjects, _In_ PFLT_IO_PARAMETER_BLOCK IopbSnapshot, _In_ NTSTATUS OperationStatus, _In_opt_ PVOID RequesterContext)
 
typedef USHORT FLT_FILE_NAME_PARSED_FLAGS
 
typedef struct _FLT_FILE_NAME_INFORMATION FLT_FILE_NAME_INFORMATION
 
typedef struct _FLT_FILE_NAME_INFORMATIONPFLT_FILE_NAME_INFORMATION
 
typedef enum _FLT_SET_CONTEXT_OPERATION FLT_SET_CONTEXT_OPERATION
 
typedef enum _FLT_SET_CONTEXT_OPERATIONPFLT_SET_CONTEXT_OPERATION
 
typedef struct _FLT_VOLUME_PROPERTIES FLT_VOLUME_PROPERTIES
 
typedef struct _FLT_VOLUME_PROPERTIESPFLT_VOLUME_PROPERTIES
 
typedef NTSTATUS(FLTAPI * PFLT_MESSAGE_NOTIFY) (_In_opt_ PVOID PortCookie, _In_reads_bytes_opt_(InputBufferLength) PVOID InputBuffer, _In_ ULONG InputBufferLength, _Out_writes_bytes_to_opt_(OutputBufferLength, *ReturnOutputBufferLength) PVOID OutputBuffer, _In_ ULONG OutputBufferLength, _Out_ PULONG ReturnOutputBufferLength)
 
typedef NTSTATUS(FLTAPI * PFLT_CONNECT_NOTIFY) (_In_ PFLT_PORT ClientPort, _In_opt_ PVOID ServerPortCookie, _In_reads_bytes_opt_(SizeOfContext) PVOID ConnectionContext, _In_ ULONG SizeOfContext, _Outptr_result_maybenull_ PVOID *ConnectionPortCookie)
 
typedef VOID(FLTAPI * PFLT_DISCONNECT_NOTIFY) (_In_opt_ PVOID ConnectionCookie)
 
typedef VOID(FLTAPI * PFLT_COMPLETE_CANCELED_CALLBACK) (_In_ PFLT_CALLBACK_DATA CallbackData)
 
typedef struct _FLT_DEFERRED_IO_WORKITEM * PFLT_DEFERRED_IO_WORKITEM
 
typedef struct _FLT_GENERIC_WORKITEM * PFLT_GENERIC_WORKITEM
 
typedef VOID(FLTAPI * PFLT_DEFERRED_IO_WORKITEM_ROUTINE) (_In_ PFLT_DEFERRED_IO_WORKITEM FltWorkItem, _In_ PFLT_CALLBACK_DATA CallbackData, _In_opt_ PVOID Context)
 
typedef VOID(FLTAPI * PFLT_GENERIC_WORKITEM_ROUTINE) (_In_ PFLT_GENERIC_WORKITEM FltWorkItem, _In_ PVOID FltObject, _In_opt_ PVOID Context)
 
typedef IO_CSQ_IRP_CONTEXT FLT_CALLBACK_DATA_QUEUE_IO_CONTEXT
 
typedef IO_CSQ_IRP_CONTEXTPFLT_CALLBACK_DATA_QUEUE_IO_CONTEXT
 
typedef struct _FLT_CALLBACK_DATA_QUEUE FLT_CALLBACK_DATA_QUEUE
 
typedef struct _FLT_CALLBACK_DATA_QUEUEPFLT_CALLBACK_DATA_QUEUE
 
typedef NTSTATUS(FLTAPI * PFLT_CALLBACK_DATA_QUEUE_INSERT_IO) (_Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq, _In_ PFLT_CALLBACK_DATA Cbd, _In_opt_ PVOID InsertContext)
 
typedef VOID(FLTAPI * PFLT_CALLBACK_DATA_QUEUE_REMOVE_IO) (_Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq, _In_ PFLT_CALLBACK_DATA Cbd)
 
typedef PFLT_CALLBACK_DATA(FLTAPI * PFLT_CALLBACK_DATA_QUEUE_PEEK_NEXT_IO) (_In_ PFLT_CALLBACK_DATA_QUEUE Cbdq, _In_opt_ PFLT_CALLBACK_DATA Cbd, _In_opt_ PVOID PeekContext)
 
typedef VOID(FLTAPI * PFLT_CALLBACK_DATA_QUEUE_ACQUIRE) (_Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq, _Out_opt_ PKIRQL Irql)
 
typedef VOID(FLTAPI * PFLT_CALLBACK_DATA_QUEUE_RELEASE) (_Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq, _In_opt_ KIRQL Irql)
 
typedef VOID(FLTAPI * PFLT_CALLBACK_DATA_QUEUE_COMPLETE_CANCELED_IO) (_Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq, _Inout_ PFLT_CALLBACK_DATA Cbd)
 
typedef ULONG FLT_CALLBACK_DATA_QUEUE_FLAGS
 
typedef NTSTATUS(* PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE) (_In_opt_ PVOID Context, _In_ PFLT_CALLBACK_DATA CallbackData)
 
typedef VOID(FLTAPI * PFLTOPLOCK_WAIT_COMPLETE_ROUTINE) (_In_ PFLT_CALLBACK_DATA CallbackData, _In_opt_ PVOID Context)
 
typedef VOID(FLTAPI * PFLTOPLOCK_PREPOST_CALLBACKDATA_ROUTINE) (_In_ PFLT_CALLBACK_DATA CallbackData, _In_opt_ PVOID Context)
 

Enumerations

enum  _FLT_PREOP_CALLBACK_STATUS {
  FLT_PREOP_SUCCESS_WITH_CALLBACK , FLT_PREOP_SUCCESS_NO_CALLBACK , FLT_PREOP_PENDING , FLT_PREOP_DISALLOW_FASTIO ,
  FLT_PREOP_COMPLETE , FLT_PREOP_SYNCHRONIZE
}
 
enum  _FLT_POSTOP_CALLBACK_STATUS { FLT_POSTOP_FINISHED_PROCESSING , FLT_POSTOP_MORE_PROCESSING_REQUIRED }
 
enum  _FLT_SET_CONTEXT_OPERATION { FLT_SET_CONTEXT_REPLACE_IF_EXISTS , FLT_SET_CONTEXT_KEEP_IF_EXISTS }
 

Functions

VOID FLTAPI FltSetCallbackDataDirty (_Inout_ PFLT_CALLBACK_DATA Data)
 
VOID FLTAPI FltClearCallbackDataDirty (_Inout_ PFLT_CALLBACK_DATA Data)
 
BOOLEAN FLTAPI FltIsCallbackDataDirty (_In_ PFLT_CALLBACK_DATA Data)
 
_Must_inspect_result_ BOOLEAN FLTAPI FltDoCompletionProcessingWhenSafe (_In_ PFLT_CALLBACK_DATA Data, _In_ PCFLT_RELATED_OBJECTS FltObjects, _In_opt_ PVOID CompletionContext, _In_ FLT_POST_OPERATION_FLAGS Flags, _In_ PFLT_POST_OPERATION_CALLBACK SafePostCallback, _Out_ PFLT_POSTOP_CALLBACK_STATUS RetPostOperationStatus)
 
_Must_inspect_result_ _IRQL_requires_max_ (APC_LEVEL) NTSTATUS FLTAPI FltCheckAndGrowNameControl(_Inout_ PFLT_NAME_CONTROL NameCtrl
 Probes and locks virtual pages in memory for the specified process.
 
 _When_ (CallbackStatus==FLT_PREOP_COMPLETE, _IRQL_requires_max_(DISPATCH_LEVEL)) _When_(CallbackStatus!
 
 _IRQL_requires_max_ (DISPATCH_LEVEL) VOID FLTAPI FltCompletePendedPostOperation(_In_ PFLT_CALLBACK_DATA CallbackData)
 
 _When_ ((PoolType==NonPagedPoolNx), _IRQL_requires_max_(DISPATCH_LEVEL)) _When_((PoolType!
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_opt_ HANDLE _In_reads_bytes_ (FileNameLength) PWSTR FileName
 
_Must_inspect_result_ _IRQL_requires_max_ (PASSIVE_LEVEL) NTSTATUS FLTAPI FltLoadFilter(_In_ PCUNICODE_STRING FilterName)
 Queries information details about a security descriptor.
 
 _When_ (FlagOn(CallbackData->Iopb->IrpFlags, IRP_PAGING_IO), _IRQL_requires_max_(APC_LEVEL)) _When_(!FlagOn(CallbackData -> Iopb->IrpFlags, IRP_PAGING_IO), _IRQL_requires_max_(PASSIVE_LEVEL)) VOID FLTAPI FltPerformSynchronousIo(_Inout_ PFLT_CALLBACK_DATA CallbackData)
 
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG _In_reads_bytes_opt_ (EaLength) PVOID EaBuffer
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_opt_ PLARGE_INTEGER _In_ ULONG _Out_writes_bytes_to_ (Length, *BytesRead) PVOID Buffer
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_opt_ GUID _In_reads_bytes_ (DataBufferLength) PVOID DataBuffer
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_opt_ PLARGE_INTEGER _In_ ULONG _In_reads_bytes_ (Length) PVOID Buffer
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ SECURITY_INFORMATION _Inout_updates_bytes_opt_ (Length) PSECURITY_DESCRIPTOR SecurityDescriptor
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_reads_bytes_opt_ (InputBufferLength) PVOID InputBuffer
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ ULONG _Out_writes_bytes_to_opt_ (OutputBufferLength, *LengthReturned) PVOID OutputBuffer
 
_Must_inspect_result_ _In_ FLT_CONTEXT_TYPE _In_ SIZE_T _In_ POOL_TYPE _Outptr_result_bytebuffer_ (ContextSize) PFLT_CONTEXT *ReturnedContext)
 
LONG FLTAPI FltCompareInstanceAltitudes (_In_ PFLT_INSTANCE Instance1, _In_ PFLT_INSTANCE Instance2)
 
_In_ FILTER_INFORMATION_CLASS _Out_writes_bytes_to_opt_ (BufferSize, *BytesReturned) PVOID Buffer
 
 _Out_writes_bytes_to_opt_ (VolumePropertiesLength, *LengthReturned) PFLT_VOLUME_PROPERTIES VolumeProperties
 
_Must_inspect_result_ _Out_ PIO_STATUS_BLOCK _Out_writes_bytes_ (Length) PVOID FsInformation
 
_Must_inspect_result_ _Out_writes_to_opt_ (VolumeListSize, *NumberVolumesReturned) PFLT_VOLUME *VolumeList
 
_Must_inspect_result_ _In_opt_ PFLT_FILTER _Out_writes_to_opt_ (InstanceListSize, *NumberInstancesReturned) PFLT_INSTANCE *InstanceList
 
_Must_inspect_result_ _In_ PFLT_PORT _In_reads_bytes_ (SenderBufferLength) PVOID SenderBuffer
 
BOOLEAN FLTAPI FltIsIoCanceled (_In_ PFLT_CALLBACK_DATA CallbackData)
 
NTSTATUS FLTAPI FltDecodeParameters (_In_ PFLT_CALLBACK_DATA CallbackData, _Outptr_opt_ PMDL **MdlAddressPointer, _Outptr_opt_result_bytebuffer_(**Length) PVOID **Buffer, _Outptr_opt_ PULONG *Length, _Out_opt_ LOCK_OPERATION *DesiredAccess)
 
PMDL FASTCALL FltGetSwappedBufferMdlAddress (_In_ PFLT_CALLBACK_DATA CallbackData)
 
VOID FASTCALL FltRetainSwappedBufferMdlAddress (_In_ PFLT_CALLBACK_DATA CallbackData)
 
NTSTATUS FLTAPI FltCbdqInitialize (_In_ PFLT_INSTANCE Instance, _Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq, _In_ PFLT_CALLBACK_DATA_QUEUE_INSERT_IO CbdqInsertIo, _In_ PFLT_CALLBACK_DATA_QUEUE_REMOVE_IO CbdqRemoveIo, _In_ PFLT_CALLBACK_DATA_QUEUE_PEEK_NEXT_IO CbdqPeekNextIo, _In_ PFLT_CALLBACK_DATA_QUEUE_ACQUIRE CbdqAcquire, _In_ PFLT_CALLBACK_DATA_QUEUE_RELEASE CbdqRelease, _In_ PFLT_CALLBACK_DATA_QUEUE_COMPLETE_CANCELED_IO CbdqCompleteCanceledIo)
 
VOID FLTAPI FltCbdqEnable (_Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq)
 
VOID FLTAPI FltCbdqDisable (_Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq)
 
_Must_inspect_result_ NTSTATUS FLTAPI FltCbdqInsertIo (_Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq, _In_ PFLT_CALLBACK_DATA Cbd, _In_opt_ PFLT_CALLBACK_DATA_QUEUE_IO_CONTEXT Context, _In_opt_ PVOID InsertContext)
 
_Must_inspect_result_ PFLT_CALLBACK_DATA FLTAPI FltCbdqRemoveIo (_Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq, _In_ PFLT_CALLBACK_DATA_QUEUE_IO_CONTEXT Context)
 
_Must_inspect_result_ PFLT_CALLBACK_DATA FLTAPI FltCbdqRemoveNextIo (_Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq, _In_opt_ PVOID PeekContext)
 
VOID FLTAPI FltInitializeFileLock (_Out_ PFILE_LOCK FileLock)
 
VOID FLTAPI FltUninitializeFileLock (_In_ PFILE_LOCK FileLock)
 
 _Acquires_lock_ (_Global_critical_region_) _IRQL_requires_max_(APC_LEVEL) VOID FLTAPI FltAcquireResourceExclusive(_Inout_ _Requires_lock_not_held_(*_Curr_) _Acquires_lock_(*_Curr_) PERESOURCE Resource)
 
 _Releases_lock_ (_Global_critical_region_) _IRQL_requires_max_(DISPATCH_LEVEL) VOID FLTAPI FltReleaseResource(_Inout_ _Requires_lock_held_(*_Curr_) _Releases_lock_(*_Curr_) PERESOURCE Resource)
 
BOOLEAN FLTAPI FltIsOperationSynchronous (_In_ PFLT_CALLBACK_DATA CallbackData)
 
PCHAR FLTAPI FltGetIrpName (_In_ UCHAR IrpMajorCode)
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ BOOLEAN _In_reads_bytes_opt_ (EaListLength) PVOID EaList
 
_Must_inspect_result_ _When_ (((CallbackData!=NULL) &&FLT_IS_IRP_OPERATION(CallbackData)), _IRQL_requires_max_(PASSIVE_LEVEL)) _When_((!((CallbackData!
 
_Must_inspect_result_ _IRQL_requires_max_ (DPC_LEVEL) PVOID FLTAPI FltGetNewSystemBufferAddress(_In_ PFLT_CALLBACK_DATA CallbackData)
 
BOOLEAN FLTAPI FltOplockKeysEqual (_In_opt_ PFILE_OBJECT Fo1, _In_opt_ PFILE_OBJECT Fo2)
 

Variables

_Must_inspect_result_ _In_ USHORT NewSize
 
_Must_inspect_result_ _In_opt_ PFILE_OBJECT FileObject
 
_Must_inspect_result_ _In_ CONST FLT_REGISTRATIONRegistration
 
_Must_inspect_result_ _In_ CONST FLT_REGISTRATION _Outptr_ PFLT_FILTERRetFilter
 
_In_ FLT_PREOP_CALLBACK_STATUS CallbackStatus
 
_In_ FLT_PREOP_CALLBACK_STATUS _In_opt_ PVOID Context
 
_Must_inspect_result_ _In_ PFLT_GET_OPERATION_STATUS_CALLBACK CallbackRoutine
 
_Must_inspect_result_ _In_ PFLT_GET_OPERATION_STATUS_CALLBACK _In_opt_ PVOID RequesterContext
 
_In_ PVOID Buffer
 
_In_ PVOID _In_ ULONG Tag
 
_Must_inspect_result_ _In_ FLT_FILE_NAME_OPTIONS NameOptions
 
_Must_inspect_result_ _In_ FLT_FILE_NAME_OPTIONS _Outptr_ PFLT_FILE_NAME_INFORMATIONFileNameInformation
 
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE Instance
 
_Inout_opt_ PUNICODE_STRING Extension
 
_Inout_opt_ PUNICODE_STRING _Inout_opt_ PUNICODE_STRING Stream
 
_Inout_opt_ PUNICODE_STRING _Inout_opt_ PUNICODE_STRING _Inout_opt_ PUNICODE_STRING FinalComponent
 
_Must_inspect_result_ _In_ PFLT_FILE_NAME_INFORMATION _Outptr_result_maybenull_ PFLT_FILE_NAME_INFORMATIONRetTunneledFileNameInformation
 
_Must_inspect_result_ _Inout_opt_ PUNICODE_STRING VolumeName
 
_Must_inspect_result_ _Inout_opt_ PUNICODE_STRING _Out_opt_ PULONG BufferSizeNeeded
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_opt_ HANDLE RootDirectory
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_opt_ HANDLE _In_ ULONG FileNameLength
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_opt_ HANDLE _In_ ULONG _In_ FLT_FILE_NAME_OPTIONS _Outptr_ PFLT_FILE_NAME_INFORMATIONRetFileNameInformation
 
_Must_inspect_result_ _In_ PFLT_INSTANCE _Out_ PBOOLEAN IsDirectory
 
_Must_inspect_result_ _Inout_ PFLT_VOLUME Volume
 
_Must_inspect_result_ _Inout_ PFLT_VOLUME _In_opt_ PCUNICODE_STRING InstanceName
 
_Must_inspect_result_ _Inout_ PFLT_VOLUME _In_opt_ PCUNICODE_STRING _Outptr_opt_result_maybenull_ PFLT_INSTANCERetInstance
 
_Must_inspect_result_ _Inout_ PFLT_VOLUME _In_ PCUNICODE_STRING Altitude
 
_Must_inspect_result_ _In_opt_ PFILE_OBJECT _Outptr_ PFLT_CALLBACK_DATARetNewCallbackData
 
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE FileHandle
 
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK DesiredAccess
 
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES ObjectAttributes
 
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK IoStatusBlock
 
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER AllocationSize
 
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG FileAttributes
 
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG ShareAccess
 
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _In_ ULONG CreateDisposition
 
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG CreateOptions
 
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG EaLength
 
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG Flags
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_opt_ PLARGE_INTEGER ByteOffset
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_opt_ PLARGE_INTEGER _In_ ULONG Length
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ FLT_IO_OPERATION_FLAGS _Out_opt_ PULONG BytesRead
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ FLT_IO_OPERATION_FLAGS _Out_opt_ PULONG _In_opt_ PFLT_COMPLETED_ASYNC_IO_CALLBACK _In_opt_ PVOID CallbackContext
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG FileTag
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_opt_ GUIDGuid
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_opt_ GUID _In_ USHORT DataBufferLength
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ FLT_IO_OPERATION_FLAGS _Out_opt_ PULONG BytesWritten
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ FILE_INFORMATION_CLASS FileInformationClass
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ FILE_INFORMATION_CLASS _Out_opt_ PULONG LengthReturned
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ FS_INFORMATION_CLASS FsInformationClass
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ SECURITY_INFORMATION SecurityInformation
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ SECURITY_INFORMATION _In_ ULONG _Out_opt_ PULONG LengthNeeded
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ SECURITY_INFORMATION _In_ PSECURITY_DESCRIPTOR SecurityDescriptor
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG FsControlCode
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ ULONG InputBufferLength
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ ULONG _In_ ULONG OutputBufferLength
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG IoControlCode
 
_Must_inspect_result_ _In_ FLT_CONTEXT_TYPE ContextType
 
_Must_inspect_result_ _In_ FLT_CONTEXT_TYPE _In_ SIZE_T ContextSize
 
_Must_inspect_result_ _In_ FLT_CONTEXT_TYPE _In_ SIZE_T _In_ POOL_TYPE PoolType
 
_In_ FLT_CONTEXT_TYPE DesiredContexts
 
_In_ FLT_CONTEXT_TYPE _Out_ PFLT_RELATED_CONTEXTS Contexts
 
_In_ FLT_SET_CONTEXT_OPERATION Operation
 
_In_ FLT_SET_CONTEXT_OPERATION _In_ PFLT_CONTEXT NewContext
 
_In_ FLT_SET_CONTEXT_OPERATION _In_ PFLT_CONTEXT _Outptr_opt_result_maybenull_ PFLT_CONTEXTOldContext
 
_In_ PCUNICODE_STRING _Outptr_ PFLT_VOLUMERetVolume
 
_In_ PDEVICE_OBJECT DeviceObject
 
_Outptr_ PDEVICE_OBJECTDiskDeviceObject
 
_Outptr_ PFLT_INSTANCELowerInstance
 
_Outptr_ PFLT_INSTANCEUpperInstance
 
_In_ FILTER_INFORMATION_CLASS InformationClass
 
_In_ FILTER_INFORMATION_CLASS _In_ ULONG BufferSize
 
_In_ FILTER_INFORMATION_CLASS _In_ ULONG _Out_ PULONG BytesReturned
 
_In_ ULONG VolumePropertiesLength
 
_Must_inspect_result_ _Out_ PBOOLEAN IsWritable
 
_Must_inspect_result_ _Out_ PUNICODE_STRING VolumeGuidName
 
_Must_inspect_result_ _Out_ PIO_STATUS_BLOCK Iosb
 
_Must_inspect_result_ *NumberFiltersReturned PFLT_FILTERFilterList
 
_Must_inspect_result_ *NumberFiltersReturned PFLT_FILTER _In_ ULONG FilterListSize
 
_Must_inspect_result_ *NumberFiltersReturned PFLT_FILTER _In_ ULONG _Out_ PULONG NumberFiltersReturned
 
_Must_inspect_result_ _In_ ULONG VolumeListSize
 
_Must_inspect_result_ _In_ ULONG _Out_ PULONG NumberVolumesReturned
 
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
 
_Must_inspect_result_ _In_opt_ PFLT_FILTER _In_ ULONG InstanceListSize
 
_Must_inspect_result_ _In_opt_ PFLT_FILTER _In_ ULONG _Out_ PULONG NumberInstancesReturned
 
_Must_inspect_result_ _In_ ULONG Index
 
_Must_inspect_result_ _Outptr_ PFLT_PORTServerPort
 
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID ServerPortCookie
 
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY ConnectNotifyCallback
 
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY _In_ PFLT_DISCONNECT_NOTIFY DisconnectNotifyCallback
 
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY _In_ PFLT_DISCONNECT_NOTIFY _In_opt_ PFLT_MESSAGE_NOTIFY MessageNotifyCallback
 
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY _In_ PFLT_DISCONNECT_NOTIFY _In_opt_ PFLT_MESSAGE_NOTIFY _In_ LONG MaxConnections
 
_Outptr_ PFLT_PORTClientPort
 
_Must_inspect_result_ _In_ PFLT_PORT _In_ ULONG SenderBufferLength
 
_Must_inspect_result_ _In_ PFLT_PORT _In_ ULONG _Out_writes_bytes_opt_ ReplyLength PVOID ReplyBuffer
 
_Must_inspect_result_ _In_ PFLT_PORT _In_ ULONG _Out_writes_bytes_opt_ ReplyLength PVOID _Inout_opt_ PULONG ReplyLength
 
_Must_inspect_result_ _In_ PFLT_PORT _In_ ULONG _Out_writes_bytes_opt_ ReplyLength PVOID _Inout_opt_ PULONG _In_opt_ PLARGE_INTEGER Timeout
 
_In_ PFLT_COMPLETE_CANCELED_CALLBACK CanceledCallback
 
_Must_inspect_result_ _In_ PFLT_CALLBACK_DATA Data
 
_Must_inspect_result_ _In_ PFLT_CALLBACK_DATA _In_ PFLT_DEFERRED_IO_WORKITEM_ROUTINE WorkerRoutine
 
_Must_inspect_result_ _In_ PFLT_CALLBACK_DATA _In_ PFLT_DEFERRED_IO_WORKITEM_ROUTINE _In_ WORK_QUEUE_TYPE QueueType
 
_Must_inspect_result_ _In_ PVOID FltObject
 
_Must_inspect_result_ _In_ PFLT_CALLBACK_DATA CallbackData
 
_Must_inspect_result_ _In_ PFLT_CALLBACK_DATA _In_ ULONG OpenCount
 
_Must_inspect_result_ _In_ PFLT_CALLBACK_DATA _In_opt_ PVOID _In_opt_ PFLTOPLOCK_WAIT_COMPLETE_ROUTINE WaitCompletionRoutine
 
_Must_inspect_result_ _In_ PFLT_CALLBACK_DATA _In_opt_ PVOID _In_opt_ PFLTOPLOCK_WAIT_COMPLETE_ROUTINE _In_opt_ PFLTOPLOCK_PREPOST_CALLBACKDATA_ROUTINE PrePostCallbackDataRoutine
 
_Must_inspect_result_ _In_opt_ PUNLOCK_ROUTINE UnlockRoutine
 
_Inout_ PLIST_ENTRY NotifyList
 
_Inout_ PLIST_ENTRY _In_ PVOID FsContext
 
_Inout_ PLIST_ENTRY _In_ PVOID _In_ PSTRING FullDirectoryName
 
_Inout_ PLIST_ENTRY _In_ PVOID _In_ PSTRING _In_ BOOLEAN WatchTree
 
_Inout_ PLIST_ENTRY _In_ PVOID _In_ PSTRING _In_ BOOLEAN _In_ BOOLEAN IgnoreBuffer
 
_Inout_ PLIST_ENTRY _In_ PVOID _In_ PSTRING _In_ BOOLEAN _In_ BOOLEAN _In_ ULONG CompletionFilter
 
_Inout_ PLIST_ENTRY _In_ PVOID _In_ PSTRING _In_ BOOLEAN _In_ BOOLEAN _In_ ULONG _In_ PFLT_CALLBACK_DATA NotifyCallbackData
 
_Inout_ PLIST_ENTRY _In_ PVOID _In_ PSTRING _In_ BOOLEAN _In_ BOOLEAN _In_ ULONG _In_ PFLT_CALLBACK_DATA _In_opt_ PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback
 
_Inout_ PLIST_ENTRY _In_ PVOID _In_ PSTRING _In_ BOOLEAN _In_ BOOLEAN _In_ ULONG _In_ PFLT_CALLBACK_DATA _In_opt_ PCHECK_FOR_TRAVERSE_ACCESS _In_opt_ PSECURITY_SUBJECT_CONTEXT SubjectContext
 
_Inout_ PLIST_ENTRY _In_ PVOID _In_ PSTRING _In_ BOOLEAN _In_ BOOLEAN _In_ ULONG _In_ PFLT_CALLBACK_DATA _In_opt_ PCHECK_FOR_TRAVERSE_ACCESS _In_opt_ PSECURITY_SUBJECT_CONTEXT _In_opt_ PFILTER_REPORT_CHANGE FilterCallback
 
_Must_inspect_result_ _Out_ PHANDLE VolumeHandle
 
_Must_inspect_result_ _Out_ PHANDLE _Outptr_opt_ PFILE_OBJECTVolumeFileObject
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ BOOLEAN ReturnSingleEntry
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ BOOLEAN _In_ ULONG EaListLength
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ BOOLEAN _In_ ULONG _In_opt_ PULONG EaIndex
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ BOOLEAN _In_ ULONG _In_opt_ PULONG _In_ BOOLEAN RestartScan
 
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _Outptr_opt_ PFILE_OBJECT _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG _In_opt_ PIO_DRIVER_CREATE_CONTEXT DriverContext
 
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ FILE_INFORMATION_CLASS _In_ BOOLEAN _In_opt_ PUNICODE_STRING FileName
 
_In_ PKTRANSACTION Transaction
 
_Out_ PFLT_FILESYSTEM_TYPE FileSystemType
 
_Must_inspect_result_ _Out_ PBOOLEAN IsSnapshotVolume
 
_Must_inspect_result_ _In_ PKTRANSACTION _In_ PFLT_CONTEXT TransactionContext
 
_Must_inspect_result_ _In_ PKTRANSACTION _In_ PFLT_CONTEXT _In_ NOTIFICATION_MASK NotificationMask
 
_Must_inspect_result_ _In_ FSRTL_ALLOCATE_ECPLIST_FLAGS _Outptr_ PECP_LISTEcpList
 
_Must_inspect_result_ _In_ LPCGUID EcpType
 
_Must_inspect_result_ _In_ LPCGUID ULONG SizeOfContext
 
_Must_inspect_result_ _In_ LPCGUID ULONG _In_ FSRTL_ALLOCATE_ECP_FLAGS _In_opt_ PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK CleanupCallback
 
_Must_inspect_result_ _In_ LPCGUID ULONG _In_ FSRTL_ALLOCATE_ECP_FLAGS _In_opt_ PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK _In_ ULONG PoolTag
 
_Must_inspect_result_ _In_ LPCGUID ULONG _In_ FSRTL_ALLOCATE_ECP_FLAGS _In_opt_ PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK _In_ ULONG _Outptr_ PVOIDEcpContext
 
_Inout_ PVOID Lookaside
 
_Inout_ PVOID _In_ FSRTL_ECP_LOOKASIDE_FLAGS _In_ SIZE_T Size
 
_Must_inspect_result_ _In_ LPCGUID _In_ ULONG _In_ FSRTL_ALLOCATE_ECP_FLAGS _In_opt_ PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK _Inout_ PVOID LookasideList
 
_In_ PECP_LIST _In_ LPCGUID _Outptr_opt_ PVOID _Out_opt_ ULONGEcpContextSize
 
_In_ PECP_LIST _In_opt_ PVOID CurrentEcpContext
 
_In_ PECP_LIST _In_opt_ PVOID _Out_opt_ LPGUID NextEcpType
 
_In_ PECP_LIST _In_opt_ PVOID _Out_opt_ LPGUID _Outptr_opt_ PVOIDNextEcpContext
 
_In_ PECP_LIST _In_opt_ PVOID _Out_opt_ LPGUID _Outptr_opt_ PVOID _Out_opt_ ULONGNextEcpContextSize
 
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
 
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD _Inout_ PIO_PRIORITY_INFO PriorityInfo
 
_Out_opt_ PIO_PRIORITY_INFO OutputPriorityInfo
 
_In_ IO_PRIORITY_HINT PriorityHint
 
_Must_inspect_result_ _Out_ PULONG SessionId
 
_In_ PFLT_INSTANCE TargetInstance
 
_In_ PFLT_INSTANCE _Out_opt_ PBOOLEAN SourceDeviceStackSizeModified
 
_In_ PFLT_INSTANCE _Out_ PBOOLEAN RedirectionAllowed
 
_In_ PFLT_INSTANCE _Out_ PBOOLEAN RedirectionAllowedThisIo
 
_In_ PFLT_INSTANCE _Out_ PBOOLEAN _Out_opt_ PBOOLEAN RedirectionAllowedAllIo
 

Macro Definition Documentation

◆ __FLTKERNEL__

#define __FLTKERNEL__

Definition at line 23 of file fltkernel.h.

◆ Add2Ptr

#define Add2Ptr (   P,
  I 
)    ((PVOID)((PUCHAR)(P) + (I)))

Definition at line 56 of file fltkernel.h.

◆ FLT_ALL_CONTEXTS

#define FLT_ALL_CONTEXTS
Value:
#define FLT_TRANSACTION_CONTEXT
Definition: fltkernel.h:443
#define FLT_STREAMHANDLE_CONTEXT
Definition: fltkernel.h:442
#define FLT_VOLUME_CONTEXT
Definition: fltkernel.h:438
#define FLT_FILE_CONTEXT
Definition: fltkernel.h:440
#define FLT_STREAM_CONTEXT
Definition: fltkernel.h:441
#define FLT_INSTANCE_CONTEXT
Definition: fltkernel.h:439

Definition at line 446 of file fltkernel.h.

◆ FLT_ALLOCATE_CALLBACK_DATA_PREALLOCATE_ALL_MEMORY

#define FLT_ALLOCATE_CALLBACK_DATA_PREALLOCATE_ALL_MEMORY   0x00000001

Definition at line 454 of file fltkernel.h.

◆ FLT_ASSERT

#define FLT_ASSERT (   _e)    NT_ASSERT(_e)

Definition at line 49 of file fltkernel.h.

◆ FLT_ASSERTMSG

#define FLT_ASSERTMSG (   _m,
  _e 
)    NT_ASSERTMSG(_m, _e)

Definition at line 50 of file fltkernel.h.

◆ FLT_CLEAR_CALLBACK_DATA_DIRTY

#define FLT_CLEAR_CALLBACK_DATA_DIRTY (   Data)    FltClearCallbackDataDirty(Data)

Definition at line 427 of file fltkernel.h.

◆ FLT_CONTEXT_END

#define FLT_CONTEXT_END   0xffff

Definition at line 444 of file fltkernel.h.

◆ FLT_FILE_CONTEXT

#define FLT_FILE_CONTEXT   0x0004

Definition at line 440 of file fltkernel.h.

◆ FLT_FILE_NAME_ALLOW_QUERY_ON_REPARSE

#define FLT_FILE_NAME_ALLOW_QUERY_ON_REPARSE   0x04000000

Definition at line 795 of file fltkernel.h.

◆ FLT_FILE_NAME_DO_NOT_CACHE

#define FLT_FILE_NAME_DO_NOT_CACHE   0x02000000

Definition at line 792 of file fltkernel.h.

◆ FLT_FILE_NAME_NORMALIZED

#define FLT_FILE_NAME_NORMALIZED   0x01

Definition at line 774 of file fltkernel.h.

◆ FLT_FILE_NAME_OPENED

#define FLT_FILE_NAME_OPENED   0x02

Definition at line 775 of file fltkernel.h.

◆ FLT_FILE_NAME_QUERY_ALWAYS_ALLOW_CACHE_LOOKUP

#define FLT_FILE_NAME_QUERY_ALWAYS_ALLOW_CACHE_LOOKUP   0x0400

Definition at line 785 of file fltkernel.h.

◆ FLT_FILE_NAME_QUERY_CACHE_ONLY

#define FLT_FILE_NAME_QUERY_CACHE_ONLY   0x0200

Definition at line 783 of file fltkernel.h.

◆ FLT_FILE_NAME_QUERY_DEFAULT

#define FLT_FILE_NAME_QUERY_DEFAULT   0x0100

Definition at line 782 of file fltkernel.h.

◆ FLT_FILE_NAME_QUERY_FILESYSTEM_ONLY

#define FLT_FILE_NAME_QUERY_FILESYSTEM_ONLY   0x0300

Definition at line 784 of file fltkernel.h.

◆ FLT_FILE_NAME_REQUEST_FROM_CURRENT_PROVIDER

#define FLT_FILE_NAME_REQUEST_FROM_CURRENT_PROVIDER   0x01000000

Definition at line 791 of file fltkernel.h.

◆ FLT_FILE_NAME_SHORT

#define FLT_FILE_NAME_SHORT   0x03

Definition at line 776 of file fltkernel.h.

◆ FLT_INSTANCE_CONTEXT

#define FLT_INSTANCE_CONTEXT   0x0002

Definition at line 439 of file fltkernel.h.

◆ FLT_INTERNAL_OPERATION_COUNT

#define FLT_INTERNAL_OPERATION_COUNT   22

Definition at line 80 of file fltkernel.h.

◆ FLT_IS_CALLBACK_DATA_DIRTY

#define FLT_IS_CALLBACK_DATA_DIRTY (   Data)    FltIsCallbackDataDirty(Data)

Definition at line 428 of file fltkernel.h.

◆ FLT_IS_FASTIO_OPERATION

#define FLT_IS_FASTIO_OPERATION (   Data)    (FlagOn((Data)->Flags, FLTFL_CALLBACK_DATA_FAST_IO_OPERATION))

Definition at line 431 of file fltkernel.h.

◆ FLT_IS_FS_FILTER_OPERATION

#define FLT_IS_FS_FILTER_OPERATION (   Data)    (FlagOn((Data)->Flags, FLTFL_CALLBACK_DATA_FS_FILTER_OPERATION))

Definition at line 432 of file fltkernel.h.

◆ FLT_IS_IRP_OPERATION

#define FLT_IS_IRP_OPERATION (   Data)    (FlagOn((Data)->Flags, FLTFL_CALLBACK_DATA_IRP_OPERATION))

Definition at line 430 of file fltkernel.h.

◆ FLT_IS_REISSUED_IO

#define FLT_IS_REISSUED_IO (   Data)    (FlagOn((Data)->Flags, FLTFL_CALLBACK_DATA_REISSUED_IO))

Definition at line 433 of file fltkernel.h.

◆ FLT_IS_SYSTEM_BUFFER

#define FLT_IS_SYSTEM_BUFFER (   Data)    (FlagOn((Data)->Flags, FLTFL_CALLBACK_DATA_SYSTEM_BUFFER))

Definition at line 434 of file fltkernel.h.

◆ FLT_MAX_TRANSACTION_NOTIFICATIONS

#define FLT_MAX_TRANSACTION_NOTIFICATIONS
Value:
#define TRANSACTION_NOTIFY_COMMIT
Definition: ktmtypes.h:50
#define TRANSACTION_NOTIFY_ROLLBACK
Definition: ktmtypes.h:51
#define TRANSACTION_NOTIFY_PREPARE
Definition: ktmtypes.h:49
#define TRANSACTION_NOTIFY_COMMIT_FINALIZE
Definition: ktmtypes.h:74
#define TRANSACTION_NOTIFY_PREPREPARE
Definition: ktmtypes.h:48

Definition at line 537 of file fltkernel.h.

◆ FLT_MGR_AFTER_XPSP2

#define FLT_MGR_AFTER_XPSP2
Value:
#define NTDDI_VERSION
Definition: k32.h:33
#define OSVER(Version)
Definition: sdkddkver.h:142
#define NTDDI_WINXP
Definition: sdkddkver.h:87
#define NTDDI_VISTA
Definition: sdkddkver.h:103
#define NTDDI_WINXPSP2
Definition: sdkddkver.h:89
#define NTDDI_WS03
Definition: sdkddkver.h:92
#define NTDDI_WS03SP1
Definition: sdkddkver.h:93
#define NTDDI_WIN2KSP4
Definition: sdkddkver.h:86
#define NTDDI_WIN2K
Definition: sdkddkver.h:82
#define SPVER(Version)
Definition: sdkddkver.h:143

Definition at line 34 of file fltkernel.h.

◆ FLT_MGR_BASELINE

◆ FLT_MGR_LONGHORN

#define FLT_MGR_LONGHORN   (NTDDI_VERSION >= NTDDI_VISTA)

Definition at line 39 of file fltkernel.h.

◆ FLT_MGR_WIN7

#define FLT_MGR_WIN7   (NTDDI_VERSION >= NTDDI_WIN7)

Definition at line 40 of file fltkernel.h.

◆ FLT_PORT_ALL_ACCESS

#define FLT_PORT_ALL_ACCESS   (FLT_PORT_CONNECT | STANDARD_RIGHTS_ALL)

Definition at line 836 of file fltkernel.h.

◆ FLT_PORT_CONNECT

#define FLT_PORT_CONNECT   0x0001

Definition at line 835 of file fltkernel.h.

◆ FLT_REGISTRATION_VERSION

#define FLT_REGISTRATION_VERSION   FLT_REGISTRATION_VERSION_0202

Definition at line 718 of file fltkernel.h.

◆ FLT_REGISTRATION_VERSION_0200

#define FLT_REGISTRATION_VERSION_0200   0x0200

Definition at line 712 of file fltkernel.h.

◆ FLT_REGISTRATION_VERSION_0201

#define FLT_REGISTRATION_VERSION_0201   0x0201

Definition at line 713 of file fltkernel.h.

◆ FLT_REGISTRATION_VERSION_0202

#define FLT_REGISTRATION_VERSION_0202   0x0202

Definition at line 714 of file fltkernel.h.

◆ FLT_REGISTRATION_VERSION_0203

#define FLT_REGISTRATION_VERSION_0203   0x0203

Definition at line 715 of file fltkernel.h.

◆ FLT_SET_CALLBACK_DATA_DIRTY

#define FLT_SET_CALLBACK_DATA_DIRTY (   Data)    FltSetCallbackDataDirty(Data)

Definition at line 426 of file fltkernel.h.

◆ FLT_STREAM_CONTEXT

#define FLT_STREAM_CONTEXT   0x0008

Definition at line 441 of file fltkernel.h.

◆ FLT_STREAMHANDLE_CONTEXT

#define FLT_STREAMHANDLE_CONTEXT   0x0010

Definition at line 442 of file fltkernel.h.

◆ FLT_TAG_DATA_BUFFER_HEADER_SIZE

#define FLT_TAG_DATA_BUFFER_HEADER_SIZE   FIELD_OFFSET(FLT_TAG_DATA_BUFFER, GenericReparseBuffer)

Definition at line 647 of file fltkernel.h.

◆ FLT_TRANSACTION_CONTEXT

#define FLT_TRANSACTION_CONTEXT   0x0020

Definition at line 443 of file fltkernel.h.

◆ FLT_VALID_FILE_NAME_FLAGS

#define FLT_VALID_FILE_NAME_FLAGS   0xff000000

Definition at line 789 of file fltkernel.h.

◆ FLT_VALID_FILE_NAME_FORMATS

#define FLT_VALID_FILE_NAME_FORMATS   0x000000ff

Definition at line 772 of file fltkernel.h.

◆ FLT_VALID_FILE_NAME_QUERY_METHODS

#define FLT_VALID_FILE_NAME_QUERY_METHODS   0x0000ff00

Definition at line 780 of file fltkernel.h.

◆ FLT_VARIABLE_SIZED_CONTEXTS

#define FLT_VARIABLE_SIZED_CONTEXTS   ((SIZE_T)-1)

Definition at line 513 of file fltkernel.h.

◆ FLT_VOLUME_CONTEXT

#define FLT_VOLUME_CONTEXT   0x0001

Definition at line 438 of file fltkernel.h.

◆ FLTFL_CALLBACK_DATA_DIRTY

#define FLTFL_CALLBACK_DATA_DIRTY   0x80000000

Definition at line 424 of file fltkernel.h.

◆ FLTFL_CALLBACK_DATA_DRAINING_IO

#define FLTFL_CALLBACK_DATA_DRAINING_IO   0x00040000

Definition at line 421 of file fltkernel.h.

◆ FLTFL_CALLBACK_DATA_FAST_IO_OPERATION

#define FLTFL_CALLBACK_DATA_FAST_IO_OPERATION   0x00000002

Definition at line 416 of file fltkernel.h.

◆ FLTFL_CALLBACK_DATA_FS_FILTER_OPERATION

#define FLTFL_CALLBACK_DATA_FS_FILTER_OPERATION   0x00000004

Definition at line 417 of file fltkernel.h.

◆ FLTFL_CALLBACK_DATA_GENERATED_IO

#define FLTFL_CALLBACK_DATA_GENERATED_IO   0x00010000

Definition at line 419 of file fltkernel.h.

◆ FLTFL_CALLBACK_DATA_IRP_OPERATION

#define FLTFL_CALLBACK_DATA_IRP_OPERATION   0x00000001

Definition at line 415 of file fltkernel.h.

◆ FLTFL_CALLBACK_DATA_NEW_SYSTEM_BUFFER

#define FLTFL_CALLBACK_DATA_NEW_SYSTEM_BUFFER   0x00100000

Definition at line 423 of file fltkernel.h.

◆ FLTFL_CALLBACK_DATA_POST_OPERATION

#define FLTFL_CALLBACK_DATA_POST_OPERATION   0x00080000

Definition at line 422 of file fltkernel.h.

◆ FLTFL_CALLBACK_DATA_REISSUE_MASK

#define FLTFL_CALLBACK_DATA_REISSUE_MASK   0x0000FFFF

Definition at line 414 of file fltkernel.h.

◆ FLTFL_CALLBACK_DATA_REISSUED_IO

#define FLTFL_CALLBACK_DATA_REISSUED_IO   0x00020000

Definition at line 420 of file fltkernel.h.

◆ FLTFL_CALLBACK_DATA_SYSTEM_BUFFER

#define FLTFL_CALLBACK_DATA_SYSTEM_BUFFER   0x00000008

Definition at line 418 of file fltkernel.h.

◆ FLTFL_CONTEXT_REGISTRATION_NO_EXACT_SIZE_MATCH

#define FLTFL_CONTEXT_REGISTRATION_NO_EXACT_SIZE_MATCH   0x0001

Definition at line 511 of file fltkernel.h.

◆ FLTFL_FILE_NAME_PARSED_EXTENSION

#define FLTFL_FILE_NAME_PARSED_EXTENSION   0x0002

Definition at line 801 of file fltkernel.h.

◆ FLTFL_FILE_NAME_PARSED_FINAL_COMPONENT

#define FLTFL_FILE_NAME_PARSED_FINAL_COMPONENT   0x0001

Definition at line 800 of file fltkernel.h.

◆ FLTFL_FILE_NAME_PARSED_PARENT_DIR

#define FLTFL_FILE_NAME_PARSED_PARENT_DIR   0x0008

Definition at line 803 of file fltkernel.h.

◆ FLTFL_FILE_NAME_PARSED_STREAM

#define FLTFL_FILE_NAME_PARSED_STREAM   0x0004

Definition at line 802 of file fltkernel.h.

◆ FLTFL_FILTER_UNLOAD_MANDATORY

#define FLTFL_FILTER_UNLOAD_MANDATORY   0x00000001

Definition at line 651 of file fltkernel.h.

◆ FLTFL_INSTANCE_SETUP_AUTOMATIC_ATTACHMENT

#define FLTFL_INSTANCE_SETUP_AUTOMATIC_ATTACHMENT   0x00000001

Definition at line 529 of file fltkernel.h.

◆ FLTFL_INSTANCE_SETUP_DETACHED_VOLUME

#define FLTFL_INSTANCE_SETUP_DETACHED_VOLUME   0x00000008

Definition at line 535 of file fltkernel.h.

◆ FLTFL_INSTANCE_SETUP_MANUAL_ATTACHMENT

#define FLTFL_INSTANCE_SETUP_MANUAL_ATTACHMENT   0x00000002

Definition at line 530 of file fltkernel.h.

◆ FLTFL_INSTANCE_SETUP_NEWLY_MOUNTED_VOLUME

#define FLTFL_INSTANCE_SETUP_NEWLY_MOUNTED_VOLUME   0x00000004

Definition at line 531 of file fltkernel.h.

◆ FLTFL_INSTANCE_TEARDOWN_FILTER_UNLOAD

#define FLTFL_INSTANCE_TEARDOWN_FILTER_UNLOAD   0x00000002

Definition at line 562 of file fltkernel.h.

◆ FLTFL_INSTANCE_TEARDOWN_INTERNAL_ERROR

#define FLTFL_INSTANCE_TEARDOWN_INTERNAL_ERROR   0x00000010

Definition at line 565 of file fltkernel.h.

◆ FLTFL_INSTANCE_TEARDOWN_MANDATORY_FILTER_UNLOAD

#define FLTFL_INSTANCE_TEARDOWN_MANDATORY_FILTER_UNLOAD   0x00000004

Definition at line 563 of file fltkernel.h.

◆ FLTFL_INSTANCE_TEARDOWN_MANUAL

#define FLTFL_INSTANCE_TEARDOWN_MANUAL   0x00000001

Definition at line 561 of file fltkernel.h.

◆ FLTFL_INSTANCE_TEARDOWN_VOLUME_DISMOUNT

#define FLTFL_INSTANCE_TEARDOWN_VOLUME_DISMOUNT   0x00000008

Definition at line 564 of file fltkernel.h.

◆ FLTFL_IO_OPERATION_DO_NOT_UPDATE_BYTE_OFFSET

#define FLTFL_IO_OPERATION_DO_NOT_UPDATE_BYTE_OFFSET   0x00000004

Definition at line 757 of file fltkernel.h.

◆ FLTFL_IO_OPERATION_NON_CACHED

#define FLTFL_IO_OPERATION_NON_CACHED   0x00000001

Definition at line 755 of file fltkernel.h.

◆ FLTFL_IO_OPERATION_PAGING

#define FLTFL_IO_OPERATION_PAGING   0x00000002

Definition at line 756 of file fltkernel.h.

◆ FLTFL_IO_OPERATION_SYNCHRONOUS_PAGING

#define FLTFL_IO_OPERATION_SYNCHRONOUS_PAGING   0x00000008

Definition at line 760 of file fltkernel.h.

◆ FLTFL_NORMALIZE_NAME_CASE_SENSITIVE

#define FLTFL_NORMALIZE_NAME_CASE_SENSITIVE   0x01

Definition at line 674 of file fltkernel.h.

◆ FLTFL_NORMALIZE_NAME_DESTINATION_FILE_NAME

#define FLTFL_NORMALIZE_NAME_DESTINATION_FILE_NAME   0x02

Definition at line 675 of file fltkernel.h.

◆ FLTFL_OPERATION_REGISTRATION_SKIP_CACHED_IO

#define FLTFL_OPERATION_REGISTRATION_SKIP_CACHED_IO   0x00000002

Definition at line 606 of file fltkernel.h.

◆ FLTFL_OPERATION_REGISTRATION_SKIP_NON_DASD_IO

#define FLTFL_OPERATION_REGISTRATION_SKIP_NON_DASD_IO   0x00000004

Definition at line 607 of file fltkernel.h.

◆ FLTFL_OPERATION_REGISTRATION_SKIP_PAGING_IO

#define FLTFL_OPERATION_REGISTRATION_SKIP_PAGING_IO   0x00000001

Definition at line 605 of file fltkernel.h.

◆ FLTFL_POST_OPERATION_DRAINING

#define FLTFL_POST_OPERATION_DRAINING   0x00000001

Definition at line 594 of file fltkernel.h.

◆ FLTFL_REGISTRATION_DO_NOT_SUPPORT_SERVICE_STOP

#define FLTFL_REGISTRATION_DO_NOT_SUPPORT_SERVICE_STOP   0x00000001

Definition at line 725 of file fltkernel.h.

◆ FLTFL_REGISTRATION_SUPPORT_NPFS_MSFS

#define FLTFL_REGISTRATION_SUPPORT_NPFS_MSFS   0x00000002

Definition at line 726 of file fltkernel.h.

◆ FltGetFileNameFormat

#define FltGetFileNameFormat (   _NameOptions)    ((_NameOptions) & FLT_VALID_FILE_NAME_FORMATS)

Definition at line 778 of file fltkernel.h.

◆ FltGetFileNameQueryMethod

#define FltGetFileNameQueryMethod (   _NameOptions)    ((_NameOptions) & FLT_VALID_FILE_NAME_QUERY_METHODS)

Definition at line 787 of file fltkernel.h.

◆ IRP_MJ_ACQUIRE_FOR_CC_FLUSH

#define IRP_MJ_ACQUIRE_FOR_CC_FLUSH   ((UCHAR)-5)

Definition at line 69 of file fltkernel.h.

◆ IRP_MJ_ACQUIRE_FOR_MOD_WRITE

#define IRP_MJ_ACQUIRE_FOR_MOD_WRITE   ((UCHAR)-3)

Definition at line 67 of file fltkernel.h.

◆ IRP_MJ_ACQUIRE_FOR_SECTION_SYNCHRONIZATION

#define IRP_MJ_ACQUIRE_FOR_SECTION_SYNCHRONIZATION   ((UCHAR)-1)

Definition at line 65 of file fltkernel.h.

◆ IRP_MJ_FAST_IO_CHECK_IF_POSSIBLE

#define IRP_MJ_FAST_IO_CHECK_IF_POSSIBLE   ((UCHAR)-13)

Definition at line 71 of file fltkernel.h.

◆ IRP_MJ_MDL_READ

#define IRP_MJ_MDL_READ   ((UCHAR)-15)

Definition at line 73 of file fltkernel.h.

◆ IRP_MJ_MDL_READ_COMPLETE

#define IRP_MJ_MDL_READ_COMPLETE   ((UCHAR)-16)

Definition at line 74 of file fltkernel.h.

◆ IRP_MJ_MDL_WRITE_COMPLETE

#define IRP_MJ_MDL_WRITE_COMPLETE   ((UCHAR)-18)

Definition at line 76 of file fltkernel.h.

◆ IRP_MJ_NETWORK_QUERY_OPEN

#define IRP_MJ_NETWORK_QUERY_OPEN   ((UCHAR)-14)

Definition at line 72 of file fltkernel.h.

◆ IRP_MJ_OPERATION_END

#define IRP_MJ_OPERATION_END   ((UCHAR)0x80)

Definition at line 79 of file fltkernel.h.

◆ IRP_MJ_PREPARE_MDL_WRITE

#define IRP_MJ_PREPARE_MDL_WRITE   ((UCHAR)-17)

Definition at line 75 of file fltkernel.h.

◆ IRP_MJ_RELEASE_FOR_CC_FLUSH

#define IRP_MJ_RELEASE_FOR_CC_FLUSH   ((UCHAR)-6)

Definition at line 70 of file fltkernel.h.

◆ IRP_MJ_RELEASE_FOR_MOD_WRITE

#define IRP_MJ_RELEASE_FOR_MOD_WRITE   ((UCHAR)-4)

Definition at line 68 of file fltkernel.h.

◆ IRP_MJ_RELEASE_FOR_SECTION_SYNCHRONIZATION

#define IRP_MJ_RELEASE_FOR_SECTION_SYNCHRONIZATION   ((UCHAR)-2)

Definition at line 66 of file fltkernel.h.

◆ IRP_MJ_VOLUME_DISMOUNT

#define IRP_MJ_VOLUME_DISMOUNT   ((UCHAR)-20)

Definition at line 78 of file fltkernel.h.

◆ IRP_MJ_VOLUME_MOUNT

#define IRP_MJ_VOLUME_MOUNT   ((UCHAR)-19)

Definition at line 77 of file fltkernel.h.

◆ IS_ALIGNED

#define IS_ALIGNED (   _pointer,
  _alignment 
)     ((((ULONG_PTR) (_pointer)) & ((_alignment) - 1)) == 0)

Definition at line 62 of file fltkernel.h.

◆ NULL_CONTEXT

#define NULL_CONTEXT   ((PFLT_CONTEXT)NULL)

Definition at line 82 of file fltkernel.h.

◆ PtrOffset

#define PtrOffset (   B,
  O 
)    ((ULONG)((ULONG_PTR)(O) - (ULONG_PTR)(B)))

Definition at line 57 of file fltkernel.h.

◆ ROUND_TO_SIZE

#define ROUND_TO_SIZE (   _length,
  _alignment 
)     ((((ULONG_PTR)(_length)) + ((_alignment)-1)) & ~(ULONG_PTR) ((_alignment) - 1))

Definition at line 59 of file fltkernel.h.

Typedef Documentation

◆ FLT_ALLOCATE_CALLBACK_DATA_FLAGS

Definition at line 453 of file fltkernel.h.

◆ FLT_CALLBACK_DATA

◆ FLT_CALLBACK_DATA_FLAGS

Definition at line 450 of file fltkernel.h.

◆ FLT_CALLBACK_DATA_QUEUE

◆ FLT_CALLBACK_DATA_QUEUE_FLAGS

Definition at line 914 of file fltkernel.h.

◆ FLT_CALLBACK_DATA_QUEUE_IO_CONTEXT

◆ FLT_CONTEXT_REGISTRATION

◆ FLT_CONTEXT_REGISTRATION_FLAGS

Definition at line 509 of file fltkernel.h.

◆ FLT_CONTEXT_TYPE

Definition at line 436 of file fltkernel.h.

◆ FLT_FILE_NAME_INFORMATION

◆ FLT_FILE_NAME_OPTIONS

Definition at line 661 of file fltkernel.h.

◆ FLT_FILE_NAME_PARSED_FLAGS

Definition at line 798 of file fltkernel.h.

◆ FLT_FILTER_UNLOAD_FLAGS

Definition at line 649 of file fltkernel.h.

◆ FLT_INSTANCE_QUERY_TEARDOWN_FLAGS

Definition at line 552 of file fltkernel.h.

◆ FLT_INSTANCE_SETUP_FLAGS

Definition at line 527 of file fltkernel.h.

◆ FLT_INSTANCE_TEARDOWN_FLAGS

Definition at line 559 of file fltkernel.h.

◆ FLT_IO_OPERATION_FLAGS

Definition at line 753 of file fltkernel.h.

◆ FLT_IO_PARAMETER_BLOCK

◆ FLT_NAME_CONTROL

◆ FLT_NORMALIZE_NAME_FLAGS

Definition at line 672 of file fltkernel.h.

◆ FLT_OPERATION_REGISTRATION

◆ FLT_OPERATION_REGISTRATION_FLAGS

Definition at line 603 of file fltkernel.h.

◆ FLT_PARAMETERS

◆ FLT_POST_OPERATION_FLAGS

Definition at line 592 of file fltkernel.h.

◆ FLT_POSTOP_CALLBACK_STATUS

◆ FLT_PREOP_CALLBACK_STATUS

◆ FLT_REGISTRATION

◆ FLT_REGISTRATION_FLAGS

Definition at line 723 of file fltkernel.h.

◆ FLT_RELATED_CONTEXTS

◆ FLT_RELATED_OBJECTS

◆ FLT_SET_CONTEXT_OPERATION

◆ FLT_TAG_DATA_BUFFER

◆ FLT_VOLUME_PROPERTIES

◆ PCFLT_CONTEXT_REGISTRATION

◆ PCFLT_RELATED_OBJECTS

Definition at line 482 of file fltkernel.h.

◆ PFLT_CALLBACK_DATA

◆ PFLT_CALLBACK_DATA_QUEUE

◆ PFLT_CALLBACK_DATA_QUEUE_ACQUIRE

typedef VOID(FLTAPI * PFLT_CALLBACK_DATA_QUEUE_ACQUIRE) (_Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq, _Out_opt_ PKIRQL Irql)

Definition at line 899 of file fltkernel.h.

◆ PFLT_CALLBACK_DATA_QUEUE_COMPLETE_CANCELED_IO

typedef VOID(FLTAPI * PFLT_CALLBACK_DATA_QUEUE_COMPLETE_CANCELED_IO) (_Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq, _Inout_ PFLT_CALLBACK_DATA Cbd)

Definition at line 909 of file fltkernel.h.

◆ PFLT_CALLBACK_DATA_QUEUE_INSERT_IO

typedef NTSTATUS(FLTAPI * PFLT_CALLBACK_DATA_QUEUE_INSERT_IO) (_Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq, _In_ PFLT_CALLBACK_DATA Cbd, _In_opt_ PVOID InsertContext)

Definition at line 882 of file fltkernel.h.

◆ PFLT_CALLBACK_DATA_QUEUE_IO_CONTEXT

◆ PFLT_CALLBACK_DATA_QUEUE_PEEK_NEXT_IO

typedef PFLT_CALLBACK_DATA(FLTAPI * PFLT_CALLBACK_DATA_QUEUE_PEEK_NEXT_IO) (_In_ PFLT_CALLBACK_DATA_QUEUE Cbdq, _In_opt_ PFLT_CALLBACK_DATA Cbd, _In_opt_ PVOID PeekContext)

Definition at line 893 of file fltkernel.h.

◆ PFLT_CALLBACK_DATA_QUEUE_RELEASE

typedef VOID(FLTAPI * PFLT_CALLBACK_DATA_QUEUE_RELEASE) (_Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq, _In_opt_ KIRQL Irql)

Definition at line 904 of file fltkernel.h.

◆ PFLT_CALLBACK_DATA_QUEUE_REMOVE_IO

typedef VOID(FLTAPI * PFLT_CALLBACK_DATA_QUEUE_REMOVE_IO) (_Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq, _In_ PFLT_CALLBACK_DATA Cbd)

Definition at line 888 of file fltkernel.h.

◆ PFLT_COMPLETE_CANCELED_CALLBACK

typedef VOID(FLTAPI * PFLT_COMPLETE_CANCELED_CALLBACK) (_In_ PFLT_CALLBACK_DATA CallbackData)

Definition at line 859 of file fltkernel.h.

◆ PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE

typedef NTSTATUS(* PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE) (_In_opt_ PVOID Context, _In_ PFLT_CALLBACK_DATA CallbackData)

Definition at line 928 of file fltkernel.h.

◆ PFLT_COMPLETED_ASYNC_IO_CALLBACK

typedef VOID(FLTAPI * PFLT_COMPLETED_ASYNC_IO_CALLBACK) (_In_ PFLT_CALLBACK_DATA CallbackData, _In_ PFLT_CONTEXT Context)

Definition at line 748 of file fltkernel.h.

◆ PFLT_CONNECT_NOTIFY

typedef NTSTATUS(FLTAPI * PFLT_CONNECT_NOTIFY) (_In_ PFLT_PORT ClientPort, _In_opt_ PVOID ServerPortCookie, _In_reads_bytes_opt_(SizeOfContext) PVOID ConnectionContext, _In_ ULONG SizeOfContext, _Outptr_result_maybenull_ PVOID *ConnectionPortCookie)

Definition at line 847 of file fltkernel.h.

◆ PFLT_CONTEXT

Definition at line 89 of file fltkernel.h.

◆ PFLT_CONTEXT_ALLOCATE_CALLBACK

typedef PVOID(FLTAPI * PFLT_CONTEXT_ALLOCATE_CALLBACK) (_In_ POOL_TYPE PoolType, _In_ SIZE_T Size, _In_ FLT_CONTEXT_TYPE ContextType)

Definition at line 498 of file fltkernel.h.

◆ PFLT_CONTEXT_CLEANUP_CALLBACK

typedef VOID(FLTAPI * PFLT_CONTEXT_CLEANUP_CALLBACK) (_In_ PFLT_CONTEXT Context, _In_ FLT_CONTEXT_TYPE ContextType)

Definition at line 493 of file fltkernel.h.

◆ PFLT_CONTEXT_FREE_CALLBACK

typedef VOID(FLTAPI * PFLT_CONTEXT_FREE_CALLBACK) (_In_ PVOID Pool, _In_ FLT_CONTEXT_TYPE ContextType)

Definition at line 504 of file fltkernel.h.

◆ PFLT_CONTEXT_REGISTRATION

◆ PFLT_DEFERRED_IO_WORKITEM

typedef struct _FLT_DEFERRED_IO_WORKITEM* PFLT_DEFERRED_IO_WORKITEM

Definition at line 863 of file fltkernel.h.

◆ PFLT_DEFERRED_IO_WORKITEM_ROUTINE

typedef VOID(FLTAPI * PFLT_DEFERRED_IO_WORKITEM_ROUTINE) (_In_ PFLT_DEFERRED_IO_WORKITEM FltWorkItem, _In_ PFLT_CALLBACK_DATA CallbackData, _In_opt_ PVOID Context)

Definition at line 866 of file fltkernel.h.

◆ PFLT_DISCONNECT_NOTIFY

typedef VOID(FLTAPI * PFLT_DISCONNECT_NOTIFY) (_In_opt_ PVOID ConnectionCookie)

Definition at line 855 of file fltkernel.h.

◆ PFLT_FILE_NAME_INFORMATION

◆ PFLT_FILTER

Definition at line 84 of file fltkernel.h.

◆ PFLT_FILTER_UNLOAD_CALLBACK

typedef NTSTATUS(FLTAPI * PFLT_FILTER_UNLOAD_CALLBACK) (FLT_FILTER_UNLOAD_FLAGS Flags)

Definition at line 653 of file fltkernel.h.

◆ PFLT_GENERATE_FILE_NAME

◆ PFLT_GENERIC_WORKITEM

typedef struct _FLT_GENERIC_WORKITEM* PFLT_GENERIC_WORKITEM

Definition at line 864 of file fltkernel.h.

◆ PFLT_GENERIC_WORKITEM_ROUTINE

typedef VOID(FLTAPI * PFLT_GENERIC_WORKITEM_ROUTINE) (_In_ PFLT_GENERIC_WORKITEM FltWorkItem, _In_ PVOID FltObject, _In_opt_ PVOID Context)

Definition at line 872 of file fltkernel.h.

◆ PFLT_GET_OPERATION_STATUS_CALLBACK

typedef VOID(FLTAPI * PFLT_GET_OPERATION_STATUS_CALLBACK) (_In_ PCFLT_RELATED_OBJECTS FltObjects, _In_ PFLT_IO_PARAMETER_BLOCK IopbSnapshot, _In_ NTSTATUS OperationStatus, _In_opt_ PVOID RequesterContext)

Definition at line 763 of file fltkernel.h.

◆ PFLT_INSTANCE

Definition at line 86 of file fltkernel.h.

◆ PFLT_INSTANCE_QUERY_TEARDOWN_CALLBACK

typedef NTSTATUS(FLTAPI * PFLT_INSTANCE_QUERY_TEARDOWN_CALLBACK) (_In_ PCFLT_RELATED_OBJECTS FltObjects, _In_ FLT_INSTANCE_QUERY_TEARDOWN_FLAGS Flags)

Definition at line 554 of file fltkernel.h.

◆ PFLT_INSTANCE_SETUP_CALLBACK

typedef NTSTATUS(FLTAPI * PFLT_INSTANCE_SETUP_CALLBACK) (_In_ PCFLT_RELATED_OBJECTS FltObjects, _In_ FLT_INSTANCE_SETUP_FLAGS Flags, _In_ DEVICE_TYPE VolumeDeviceType, _In_ FLT_FILESYSTEM_TYPE VolumeFilesystemType)

Definition at line 545 of file fltkernel.h.

◆ PFLT_INSTANCE_TEARDOWN_CALLBACK

typedef VOID(FLTAPI * PFLT_INSTANCE_TEARDOWN_CALLBACK) (_In_ PCFLT_RELATED_OBJECTS FltObjects, _In_ FLT_INSTANCE_TEARDOWN_FLAGS Reason)

Definition at line 567 of file fltkernel.h.

◆ PFLT_IO_PARAMETER_BLOCK

◆ PFLT_MESSAGE_NOTIFY

Definition at line 838 of file fltkernel.h.

◆ PFLT_NAME_CONTROL

◆ PFLT_NORMALIZE_CONTEXT_CLEANUP

typedef VOID(FLTAPI * PFLT_NORMALIZE_CONTEXT_CLEANUP) (_In_opt_ PVOID *NormalizationContext)

Definition at line 700 of file fltkernel.h.

◆ PFLT_NORMALIZE_NAME_COMPONENT

typedef NTSTATUS(FLTAPI * PFLT_NORMALIZE_NAME_COMPONENT) (_In_ PFLT_INSTANCE Instance, _In_ PCUNICODE_STRING ParentDirectory, _In_ USHORT VolumeNameLength, _In_ PCUNICODE_STRING Component, _Out_writes_bytes_(ExpandComponentNameLength) PFILE_NAMES_INFORMATION ExpandComponentName, _In_ ULONG ExpandComponentNameLength, _In_ FLT_NORMALIZE_NAME_FLAGS Flags, _Inout_ PVOID *NormalizationContext)

Definition at line 677 of file fltkernel.h.

◆ PFLT_NORMALIZE_NAME_COMPONENT_EX

typedef NTSTATUS(FLTAPI * PFLT_NORMALIZE_NAME_COMPONENT_EX) (_In_ PFLT_INSTANCE Instance, _In_ PFILE_OBJECT FileObject, _In_ PCUNICODE_STRING ParentDirectory, _In_ USHORT VolumeNameLength, _In_ PCUNICODE_STRING Component, _Out_writes_bytes_(ExpandComponentNameLength) PFILE_NAMES_INFORMATION ExpandComponentName, _In_ ULONG ExpandComponentNameLength, _In_ FLT_NORMALIZE_NAME_FLAGS Flags, _Inout_ PVOID *NormalizationContext)

Definition at line 688 of file fltkernel.h.

◆ PFLT_OPERATION_REGISTRATION

◆ PFLT_PARAMETERS

◆ PFLT_PORT

typedef struct _FLT_PORT* PFLT_PORT

Definition at line 87 of file fltkernel.h.

◆ PFLT_POST_OPERATION_CALLBACK

Definition at line 596 of file fltkernel.h.

◆ PFLT_POSTOP_CALLBACK_STATUS

◆ PFLT_PRE_OPERATION_CALLBACK

Definition at line 581 of file fltkernel.h.

◆ PFLT_PREOP_CALLBACK_STATUS

◆ PFLT_REGISTRATION

◆ PFLT_RELATED_CONTEXTS

◆ PFLT_RELATED_OBJECTS

◆ PFLT_SET_CONTEXT_OPERATION

◆ PFLT_TAG_DATA_BUFFER

◆ PFLT_TRANSACTION_NOTIFICATION_CALLBACK

typedef NTSTATUS(FLTAPI * PFLT_TRANSACTION_NOTIFICATION_CALLBACK) (_In_ PCFLT_RELATED_OBJECTS FltObjects, _In_ PFLT_CONTEXT TransactionContext, _In_ ULONG NotificationMask)

Definition at line 705 of file fltkernel.h.

◆ PFLT_VOLUME

Definition at line 85 of file fltkernel.h.

◆ PFLT_VOLUME_PROPERTIES

◆ PFLTOPLOCK_PREPOST_CALLBACKDATA_ROUTINE

typedef VOID(FLTAPI * PFLTOPLOCK_PREPOST_CALLBACKDATA_ROUTINE) (_In_ PFLT_CALLBACK_DATA CallbackData, _In_opt_ PVOID Context)

Definition at line 938 of file fltkernel.h.

◆ PFLTOPLOCK_WAIT_COMPLETE_ROUTINE

typedef VOID(FLTAPI * PFLTOPLOCK_WAIT_COMPLETE_ROUTINE) (_In_ PFLT_CALLBACK_DATA CallbackData, _In_opt_ PVOID Context)

Definition at line 933 of file fltkernel.h.

Enumeration Type Documentation

◆ _FLT_POSTOP_CALLBACK_STATUS

Enumerator
FLT_POSTOP_FINISHED_PROCESSING 
FLT_POSTOP_MORE_PROCESSING_REQUIRED 

Definition at line 587 of file fltkernel.h.

587 {
enum _FLT_POSTOP_CALLBACK_STATUS FLT_POSTOP_CALLBACK_STATUS
@ FLT_POSTOP_MORE_PROCESSING_REQUIRED
Definition: fltkernel.h:589
@ FLT_POSTOP_FINISHED_PROCESSING
Definition: fltkernel.h:588
enum _FLT_POSTOP_CALLBACK_STATUS * PFLT_POSTOP_CALLBACK_STATUS

◆ _FLT_PREOP_CALLBACK_STATUS

Enumerator
FLT_PREOP_SUCCESS_WITH_CALLBACK 
FLT_PREOP_SUCCESS_NO_CALLBACK 
FLT_PREOP_PENDING 
FLT_PREOP_DISALLOW_FASTIO 
FLT_PREOP_COMPLETE 
FLT_PREOP_SYNCHRONIZE 

Definition at line 572 of file fltkernel.h.

572 {
enum _FLT_PREOP_CALLBACK_STATUS FLT_PREOP_CALLBACK_STATUS
@ FLT_PREOP_DISALLOW_FASTIO
Definition: fltkernel.h:576
@ FLT_PREOP_COMPLETE
Definition: fltkernel.h:577
@ FLT_PREOP_PENDING
Definition: fltkernel.h:575
@ FLT_PREOP_SUCCESS_WITH_CALLBACK
Definition: fltkernel.h:573
@ FLT_PREOP_SUCCESS_NO_CALLBACK
Definition: fltkernel.h:574
@ FLT_PREOP_SYNCHRONIZE
Definition: fltkernel.h:578
enum _FLT_PREOP_CALLBACK_STATUS * PFLT_PREOP_CALLBACK_STATUS

◆ _FLT_SET_CONTEXT_OPERATION

Enumerator
FLT_SET_CONTEXT_REPLACE_IF_EXISTS 
FLT_SET_CONTEXT_KEEP_IF_EXISTS 

Definition at line 818 of file fltkernel.h.

818 {
@ FLT_SET_CONTEXT_KEEP_IF_EXISTS
Definition: fltkernel.h:820
@ FLT_SET_CONTEXT_REPLACE_IF_EXISTS
Definition: fltkernel.h:819
enum _FLT_SET_CONTEXT_OPERATION * PFLT_SET_CONTEXT_OPERATION
enum _FLT_SET_CONTEXT_OPERATION FLT_SET_CONTEXT_OPERATION

Function Documentation

◆ _Acquires_lock_()

_Acquires_lock_ ( _Global_critical_region_  )

Definition at line 59 of file Object.c.

64{
66
67 /* Try acquiring the lock */
69 {
70 /* Someone changed it, use the slow path */
72 }
73
74 /* Sanity check */
75 FLT_ASSERT(PushLock->Locked);
76}
#define EX_PUSH_LOCK_LOCK_V
Definition: Object.c:28
#define FLT_ASSERT(_e)
Definition: fltkernel.h:49
#define InterlockedBitTestAndSet
Definition: interlocked.h:30
#define KeEnterCriticalRegion()
Definition: ke_x.h:88
VOID FASTCALL ExfAcquirePushLockExclusive(PEX_PUSH_LOCK PushLock)
Definition: pushlock.c:471
int32_t * PLONG
Definition: typedefs.h:58

◆ _In_reads_bytes_() [1/4]

◆ _In_reads_bytes_() [2/4]

◆ _In_reads_bytes_() [3/4]

◆ _In_reads_bytes_() [4/4]

◆ _In_reads_bytes_opt_() [1/3]

◆ _In_reads_bytes_opt_() [2/3]

◆ _In_reads_bytes_opt_() [3/3]

◆ _Inout_updates_bytes_opt_()

◆ _IRQL_requires_max_() [1/4]

_Must_inspect_result_ _IRQL_requires_max_ ( APC_LEVEL  )

Probes and locks virtual pages in memory for the specified process.

Parameters
[in,out]MemoryDescriptorListMemory Descriptor List (MDL) containing the buffer to be probed and locked.
[in]ProcessThe process for which the buffer should be probed and locked.
[in]AccessModeAccess mode for probing the pages. Can be KernelMode or UserMode.
[in]LockOperationThe type of the probing and locking operation. Can be IoReadAccess, IoWriteAccess or IoModifyAccess.
Returns
Nothing.
See also
MmProbeAndLockPages
Remarks
Must be called at IRQL <= APC_LEVEL

Probes and locks virtual pages in memory for the specified process.

Frees previously reserved amount of memory in system virtual address space.

Parameters
[in]NumberOfBytesSize, in bytes, of memory to reserve.
[in]PoolTagPool Tag identifying the buffer. Usually consists from 4 characters in reversed order.
Returns
A pointer to the 1st memory block of the reserved buffer in case of success, NULL otherwise.
Remarks
Must be called at IRQL <= APC_LEVEL
Parameters
[in]BaseAddressA pointer to the 1st memory block of the reserved buffer.
[in]PoolTagPool Tag identifying the buffer. Usually consists from 4 characters in reversed order.
Returns
Nothing.
See also
MmAllocateMappingAddress
Remarks
Must be called at IRQL <= APC_LEVEL

Definition at line 37 of file cddata.c.

254{
255 THREAD_CONTEXT ThreadContext = {0};
256 PIRP_CONTEXT IrpContext = NULL;
258
259#ifdef CD_SANITY
260 PVOID PreviousTopLevel;
261#endif
262
264
265#if DBG
266
267 KIRQL SaveIrql = KeGetCurrentIrql();
268
269#endif
270
272
274
276
277#ifdef CD_SANITY
278 PreviousTopLevel = IoGetTopLevelIrp();
279#endif
280
281 //
282 // Loop until this request has been completed or posted.
283 //
284
285 do {
286
287 //
288 // Use a try-except to handle the exception cases.
289 //
290
291 _SEH2_TRY {
292
293 //
294 // If the IrpContext is NULL then this is the first pass through
295 // this loop.
296 //
297
298 if (IrpContext == NULL) {
299
300 //
301 // Decide if this request is waitable an allocate the IrpContext.
302 // If the file object in the stack location is NULL then this
303 // is a mount which is always waitable. Otherwise we look at
304 // the file object flags.
305 //
306
308
309 Wait = TRUE;
310
311 } else {
312
313 Wait = CanFsdWait( Irp );
314 }
315
316 IrpContext = CdCreateIrpContext( Irp, Wait );
317
318 //
319 // Update the thread context information.
320 //
321
322 CdSetThreadContext( IrpContext, &ThreadContext );
323
324#ifdef CD_SANITY
325 NT_ASSERT( !CdTestTopLevel ||
326 SafeNodeType( IrpContext->TopLevel ) == CDFS_NTC_IRP_CONTEXT );
327#endif
328
329 //
330 // Otherwise cleanup the IrpContext for the retry.
331 //
332
333 } else {
334
335 //
336 // Set the MORE_PROCESSING flag to make sure the IrpContext
337 // isn't inadvertently deleted here. Then cleanup the
338 // IrpContext to perform the retry.
339 //
340
341 SetFlag( IrpContext->Flags, IRP_CONTEXT_FLAG_MORE_PROCESSING );
342 CdCleanupIrpContext( IrpContext, FALSE );
343 }
344
345 //
346 // Case on the major irp code.
347 //
348
349 switch (IrpContext->MajorFunction) {
350
351 case IRP_MJ_CREATE :
352
353 Status = CdCommonCreate( IrpContext, Irp );
354 break;
355
356 case IRP_MJ_CLOSE :
357
358 Status = CdCommonClose( IrpContext, Irp );
359 break;
360
361 case IRP_MJ_READ :
362
363 //
364 // If this is an Mdl complete request, don't go through
365 // common read.
366 //
367
368 if (FlagOn( IrpContext->MinorFunction, IRP_MN_COMPLETE )) {
369
370 Status = CdCompleteMdl( IrpContext, Irp );
371
372 } else {
373
374 Status = CdCommonRead( IrpContext, Irp );
375 }
376
377 break;
378
379 case IRP_MJ_WRITE :
380
381 Status = CdCommonWrite( IrpContext, Irp );
382 break;
383
385
386 Status = CdCommonQueryInfo( IrpContext, Irp );
387 break;
388
390
391 Status = CdCommonSetInfo( IrpContext, Irp );
392 break;
393
395
396 Status = CdCommonQueryVolInfo( IrpContext, Irp );
397 break;
398
400
401 Status = CdCommonDirControl( IrpContext, Irp );
402 break;
403
405
406 Status = CdCommonFsControl( IrpContext, Irp );
407 break;
408
410
411 Status = CdCommonDevControl( IrpContext, Irp );
412 break;
413
415
416 Status = CdCommonLockControl( IrpContext, Irp );
417 break;
418
419 case IRP_MJ_CLEANUP :
420
421 Status = CdCommonCleanup( IrpContext, Irp );
422 break;
423
424 case IRP_MJ_PNP :
425
426 Status = CdCommonPnp( IrpContext, Irp );
427 break;
428
429 case IRP_MJ_SHUTDOWN :
430
431 Status = CdCommonShutdown( IrpContext, Irp );
432 break;
433
434 default :
435
437 CdCompleteRequest( IrpContext, Irp, Status );
438 }
439
441
442 Status = CdProcessException( IrpContext, Irp, _SEH2_GetExceptionCode() );
443 } _SEH2_END;
444
445 } while (Status == STATUS_CANT_WAIT);
446
447#ifdef CD_SANITY
448 NT_ASSERT( !CdTestTopLevel ||
449 (PreviousTopLevel == IoGetTopLevelIrp()) );
450#endif
451
453
454 NT_ASSERT( SaveIrql == KeGetCurrentIrql( ));
455
456 return Status;
457}
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
unsigned char BOOLEAN
LONG NTSTATUS
Definition: precomp.h:26
VOID CdCompleteRequest(_Inout_opt_ PIRP_CONTEXT IrpContext, _Inout_opt_ PIRP Irp, _In_ NTSTATUS Status)
Definition: cddata.c:914
LONG CdExceptionFilter(_Inout_ PIRP_CONTEXT IrpContext, _In_ PEXCEPTION_POINTERS ExceptionPointer)
Definition: cddata.c:525
VOID CdSetThreadContext(_Inout_ PIRP_CONTEXT IrpContext, _In_ PTHREAD_CONTEXT ThreadContext)
Definition: cddata.c:981
#define ASSERT_OPTIONAL_IRP(I)
Definition: cddata.h:251
NTSTATUS CdCompleteMdl(_In_ PIRP_CONTEXT IrpContext, _Inout_ PIRP Irp)
Definition: cachesup.c:411
VOID CdCleanupIrpContext(_In_ PIRP_CONTEXT IrpContext, _In_ BOOLEAN Post)
Definition: strucsup.c:1733
#define CanFsdWait(I)
Definition: cdprocs.h:2001
NTSTATUS CdCommonLockControl(_Inout_ PIRP_CONTEXT IrpContext, _Inout_ PIRP Irp)
Definition: lockctrl.c:35
NTSTATUS CdCommonDevControl(_Inout_ PIRP_CONTEXT IrpContext, _Inout_ PIRP Irp)
Definition: devctrl.c:46
_Ret_valid_ PIRP_CONTEXT CdCreateIrpContext(_In_ PIRP Irp, _In_ BOOLEAN Wait)
Definition: strucsup.c:1573
#define IRP_MJ_PNP
Definition: cdrw_usr.h:52
#define IRP_CONTEXT_FLAG_MORE_PROCESSING
Definition: cdstruc.h:1214
_In_ PIRP Irp
Definition: csq.h:116
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define CDFS_NTC_IRP_CONTEXT
Definition: nodetype.h:34
#define SafeNodeType(Ptr)
Definition: nodetype.h:54
UCHAR KIRQL
Definition: env_spec_w32.h:591
#define KeGetCurrentIrql()
Definition: env_spec_w32.h:706
#define SetFlag(_F, _SF)
Definition: ext2fs.h:187
#define FlagOn(_F, _SF)
Definition: ext2fs.h:179
#define FsRtlEnterFileSystem
#define FsRtlExitFileSystem
Status
Definition: gdiplustypes.h:25
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:325
PIRP NTAPI IoGetTopLevelIrp(VOID)
Definition: irp.c:1843
#define STATUS_CANT_WAIT
Definition: ntstatus.h:452
#define _SEH2_GetExceptionCode()
Definition: pseh2_64.h:165
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:66
#define _SEH2_GetExceptionInformation()
Definition: pseh2_64.h:164
#define _SEH2_END
Definition: pseh2_64.h:155
#define _SEH2_TRY
Definition: pseh2_64.h:55
#define IRP_MJ_DIRECTORY_CONTROL
Definition: rdpdr.c:51
#define IRP_MJ_CLOSE
Definition: rdpdr.c:45
#define IRP_MJ_READ
Definition: rdpdr.c:46
#define IRP_MJ_DEVICE_CONTROL
Definition: rdpdr.c:52
#define IRP_MJ_QUERY_VOLUME_INFORMATION
Definition: rdpdr.c:50
#define IRP_MJ_LOCK_CONTROL
Definition: rdpdr.c:53
#define IRP_MJ_WRITE
Definition: rdpdr.c:47
#define IRP_MJ_SET_INFORMATION
Definition: rdpdr.c:49
#define IRP_MJ_CREATE
Definition: rdpdr.c:44
#define IRP_MJ_QUERY_INFORMATION
Definition: rdpdr.c:48
#define STATUS_INVALID_DEVICE_REQUEST
Definition: udferr_usr.h:138
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
Definition: wdfdevice.h:550
_In_ WDFDPC _In_ BOOLEAN Wait
Definition: wdfdpc.h:170
#define IRP_MN_COMPLETE
Definition: iotypes.h:4420
#define IRP_MJ_FILE_SYSTEM_CONTROL
#define IRP_MJ_SHUTDOWN
#define IRP_MJ_CLEANUP
#define NT_ASSERT
Definition: rtlfuncs.h:3327

◆ _IRQL_requires_max_() [2/4]

_IRQL_requires_max_ ( DISPATCH_LEVEL  )

Definition at line 347 of file common.c.

3587{
3589 BOOLEAN requestSent = FALSE;
3590
3591 BOOLEAN shouldRetry = TRUE;
3592 PCDB cdb = (PCDB)DeviceExtension->PowerContext.Srb.Cdb;
3593 ULONG timeoutValue = DeviceExtension->TimeOutValue;
3594 ULONG retryCount = 1;
3595
3596 // reset some fields.
3597 DeviceExtension->PowerContext.RetryIntervalIn100ns = 0;
3598 status = PowerContextReuseRequest(DeviceExtension);
3599 RequestClearSendTime(DeviceExtension->PowerContext.PowerRequest);
3600
3601 if (!NT_SUCCESS(status))
3602 {
3603 return status;
3604 }
3605
3606 // set proper timeout value and max retry count.
3607 switch(DeviceExtension->PowerContext.PowerChangeState.PowerDown)
3608 {
3612 break;
3613
3615 // Case of issuing SYNC CACHE command. Do not use power irp timeout remaining time in this case
3616 // as we want to give best try on SYNC CACHE command.
3617 retryCount = MAXIMUM_RETRIES;
3618 timeoutValue = DeviceExtension->TimeOutValue;
3619 break;
3620
3622 {
3623 // Case of issuing STOP UNIT command
3624 // As "Imme" bit is set to '1', this command should be completed in short time.
3625 // This command is at low importance, failure of this command has very small impact.
3626 ULONG secondsRemaining = 0;
3627
3628#if (WINVER >= 0x0601)
3629 // this API is introduced in Windows7
3630 PoQueryWatchdogTime(DeviceExtension->LowerPdo, &secondsRemaining);
3631#endif
3632
3633 if (secondsRemaining == 0)
3634 {
3635 // not able to retrieve remaining time from PoQueryWatchdogTime API, use default values.
3636 retryCount = MAXIMUM_RETRIES;
3637 timeoutValue = SCSI_CDROM_TIMEOUT;
3638 }
3639 else
3640 {
3641 // plan to leave about 30 seconds to lower level drivers if possible.
3642 if (secondsRemaining >= 32)
3643 {
3644 retryCount = (secondsRemaining - 30)/SCSI_CDROM_TIMEOUT + 1;
3645 timeoutValue = SCSI_CDROM_TIMEOUT;
3646
3647 if (retryCount > MAXIMUM_RETRIES)
3648 {
3649 retryCount = MAXIMUM_RETRIES;
3650 }
3651
3652 if (retryCount == 1)
3653 {
3654 timeoutValue = secondsRemaining - 30;
3655 }
3656 }
3657 else
3658 {
3659 // issue the command with minimal timeout value and do not retry on it.
3660 retryCount = 1;
3661 timeoutValue = 2;
3662 }
3663 }
3664 }
3665 break;
3666 default:
3667 NT_ASSERT( FALSE );
3669 return status;
3670 }
3671
3672 DeviceExtension->PowerContext.RetryCount = retryCount;
3673
3674 // issue command.
3675 while (shouldRetry)
3676 {
3677
3678 // set SRB fields.
3679 DeviceExtension->PowerContext.Srb.SrbFlags = SRB_FLAGS_NO_DATA_TRANSFER |
3684
3685 DeviceExtension->PowerContext.Srb.Function = SRB_FUNCTION_EXECUTE_SCSI;
3686 DeviceExtension->PowerContext.Srb.TimeOutValue = timeoutValue;
3687
3688 if (DeviceExtension->PowerContext.PowerChangeState.PowerDown == PowerDownDeviceInitial)
3689 {
3690 DeviceExtension->PowerContext.Srb.Function = SRB_FUNCTION_LOCK_QUEUE;
3691 }
3692 else if (DeviceExtension->PowerContext.PowerChangeState.PowerDown == PowerDownDeviceLocked)
3693 {
3694 DeviceExtension->PowerContext.Srb.Function = SRB_FUNCTION_QUIESCE_DEVICE;
3695 }
3696 else if (DeviceExtension->PowerContext.PowerChangeState.PowerDown == PowerDownDeviceQuiesced)
3697 {
3698 // Case of issuing SYNC CACHE command.
3699 DeviceExtension->PowerContext.Srb.CdbLength = 10;
3700 cdb->SYNCHRONIZE_CACHE10.OperationCode = SCSIOP_SYNCHRONIZE_CACHE;
3701 }
3702 else if (DeviceExtension->PowerContext.PowerChangeState.PowerDown == PowerDownDeviceFlushed)
3703 {
3704 // Case of issuing STOP UNIT command.
3705 DeviceExtension->PowerContext.Srb.CdbLength = 6;
3706 cdb->START_STOP.OperationCode = SCSIOP_START_STOP_UNIT;
3707 cdb->START_STOP.Start = 0;
3708 cdb->START_STOP.Immediate = 1;
3709 }
3710 else if (DeviceExtension->PowerContext.PowerChangeState.PowerDown == PowerDownDeviceStopped)
3711 {
3712 DeviceExtension->PowerContext.Srb.Function = SRB_FUNCTION_UNLOCK_QUEUE;
3713 }
3714
3715 // Set up completion routine and context if requested
3717 {
3718 WdfRequestSetCompletionRoutine(DeviceExtension->PowerContext.PowerRequest,
3720 Context);
3721 }
3722
3723 status = RequestSend(DeviceExtension,
3724 DeviceExtension->PowerContext.PowerRequest,
3725 DeviceExtension->IoTarget,
3727 &requestSent);
3728
3729 if (requestSent)
3730 {
3731 if ((CompletionRoutine == NULL) &&
3732 (SRB_STATUS(DeviceExtension->PowerContext.Srb.SrbStatus) != SRB_STATUS_SUCCESS))
3733 {
3734 TracePrint((TRACE_LEVEL_ERROR,
3735 TRACE_FLAG_POWER,
3736 "%p\tError occured when issuing %s command to device. Srb %p, Status %x\n",
3737 DeviceExtension->PowerContext.PowerRequest,
3738 (DeviceExtension->PowerContext.PowerChangeState.PowerDown == PowerDownDeviceQuiesced) ? "SYNC CACHE" : "STOP UNIT",
3739 &DeviceExtension->PowerContext.Srb,
3740 DeviceExtension->PowerContext.Srb.SrbStatus));
3741
3742 NT_ASSERT(!(TEST_FLAG(DeviceExtension->PowerContext.Srb.SrbStatus, SRB_STATUS_QUEUE_FROZEN)));
3743
3744 shouldRetry = RequestSenseInfoInterpret(DeviceExtension,
3745 DeviceExtension->PowerContext.PowerRequest,
3746 &(DeviceExtension->PowerContext.Srb),
3747 retryCount - DeviceExtension->PowerContext.RetryCount,
3748 &status,
3749 &(DeviceExtension->PowerContext.RetryIntervalIn100ns));
3750
3751 if (shouldRetry && (DeviceExtension->PowerContext.RetryCount-- == 0))
3752 {
3753 shouldRetry = FALSE;
3754 }
3755 }
3756 else
3757 {
3758 // succeeded, do not need to retry.
3759 shouldRetry = FALSE;
3760 }
3761
3762 }
3763 else
3764 {
3765 // request failed to be sent
3766 shouldRetry = FALSE;
3767 }
3768
3769 if (shouldRetry)
3770 {
3772 t.QuadPart = -DeviceExtension->PowerContext.RetryIntervalIn100ns;
3774
3775 status = PowerContextReuseRequest(DeviceExtension);
3776 if (!NT_SUCCESS(status))
3777 {
3778 shouldRetry = FALSE;
3779 }
3780 }
3781 }
3782
3783 if (DeviceExtension->PowerContext.PowerChangeState.PowerDown == PowerDownDeviceQuiesced)
3784 {
3785 // record SYNC CACHE command completion time stamp.
3786 KeQueryTickCount(&DeviceExtension->PowerContext.Step1CompleteTime);
3787 }
3788
3789 return status;
3790}
#define MAXIMUM_RETRIES
Definition: cdrom.h:124
#define SCSI_CDROM_TIMEOUT
Definition: cdrom.h:680
BOOLEAN RequestSenseInfoInterpret(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ PSCSI_REQUEST_BLOCK Srb, _In_ ULONG RetriedCount, _Out_ NTSTATUS *Status, _Out_opt_ _Deref_out_range_(0, MAXIMUM_RETRY_FOR_SINGLE_IO_IN_100NS_UNITS) LONGLONG *RetryIntervalIn100ns)
Definition: sense.c:2467
#define TEST_FLAG(Flags, Bit)
Definition: cdrom.h:1495
@ PowerDownDeviceStopped
Definition: cdrom.h:412
@ PowerDownDeviceQuiesced
Definition: cdrom.h:410
@ PowerDownDeviceInitial
Definition: cdrom.h:408
@ PowerDownDeviceLocked
Definition: cdrom.h:409
@ PowerDownDeviceFlushed
Definition: cdrom.h:411
union _CDB * PCDB
#define SCSIOP_START_STOP_UNIT
Definition: cdrw_hw.h:897
#define SCSIOP_SYNCHRONIZE_CACHE
Definition: cdrw_hw.h:918
#define STATUS_NOT_IMPLEMENTED
Definition: d3dkmdt.h:42
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:33
NTSTATUS RequestSend(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ WDFIOTARGET IoTarget, _In_ ULONG Flags, _Out_opt_ PBOOLEAN RequestSent)
Definition: common.c:3793
VOID RequestClearSendTime(_In_ WDFREQUEST Request)
Definition: common.c:111
#define SRB_FUNCTION_EXECUTE_SCSI
Definition: srb.h:315
#define SRB_FLAGS_NO_DATA_TRANSFER
Definition: srb.h:402
#define SRB_FUNCTION_LOCK_QUEUE
Definition: srb.h:332
#define SRB_FUNCTION_UNLOCK_QUEUE
Definition: srb.h:333
#define SRB_FLAGS_BYPASS_LOCKED_QUEUE
Definition: srb.h:410
#define SRB_FLAGS_DISABLE_SYNCH_TRANSFER
Definition: srb.h:397
#define SRB_STATUS(Status)
Definition: srb.h:389
#define SRB_STATUS_QUEUE_FROZEN
Definition: srb.h:386
#define SRB_FLAGS_NO_QUEUE_FREEZE
Definition: srb.h:404
#define SRB_STATUS_SUCCESS
Definition: srb.h:341
#define KeDelayExecutionThread(mode, foo, t)
Definition: env_spec_w32.h:484
GLdouble GLdouble t
Definition: gl.h:2047
#define KernelMode
Definition: asm.h:34
#define SRB_FLAGS_D3_PROCESSING
Definition: srb.h:165
#define SRB_FUNCTION_QUIESCE_DEVICE
Definition: srb.h:99
#define KeQueryTickCount(CurrentCount)
Definition: ke.h:43
#define TRACE_LEVEL_ERROR
Definition: storswtr.h:27
Definition: ps.c:97
uint32_t ULONG
Definition: typedefs.h:59
Definition: cdrw_hw.h:28
struct _CDB::_START_STOP START_STOP
struct _CDB::_SYNCHRONIZE_CACHE10 SYNCHRONIZE_CACHE10
@ WDF_REQUEST_SEND_OPTION_SYNCHRONOUS
Definition: wdfrequest.h:109
_In_ WDFREQUEST _In_opt_ PFN_WDF_REQUEST_COMPLETION_ROUTINE CompletionRoutine
Definition: wdfrequest.h:895

◆ _IRQL_requires_max_() [3/4]

_Must_inspect_result_ _IRQL_requires_max_ ( DPC_LEVEL  )

◆ _IRQL_requires_max_() [4/4]

_Must_inspect_result_ _IRQL_requires_max_ ( PASSIVE_LEVEL  )

Queries information details about a security descriptor.

Computes the quota size of a security descriptor.

Assigns a security descriptor for a new object.

An extended function that assigns a security descriptor for a new object.

Frees a security descriptor.

An extended function that sets new information data to a security descriptor.

Modifies some information data about a security descriptor.

Parameters
[in]SecurityInformationSecurity information details to be queried from a security descriptor.
[out]SecurityDescriptorThe returned security descriptor with security information data.
[in,out]LengthThe returned length of a security descriptor.
[in,out]ObjectsSecurityDescriptorThe returned object security descriptor.
Returns
Returns STATUS_SUCCESS if the operations have been completed successfully and that the specific information about the security descriptor has been queried. STATUS_BUFFER_TOO_SMALL is returned if the buffer size is too small to contain the queried info about the security descriptor.
Parameters
[in]ObjectIf specified, the function will use this arbitrary object that points to an object security descriptor.
[in]SecurityInformationSecurity information details to be set.
[in]SecurityDescriptorA security descriptor where its info is to be changed.
[in,out]ObjectsSecurityDescriptorThe returned pointer to security descriptor objects.
[in]PoolTypePool type for the new security descriptor to allocate.
[in]GenericMappingThe generic mapping of access rights masks.
Returns
See SeSetSecurityDescriptorInfoEx.
Parameters
[in]ObjectIf specified, the function will use this arbitrary object that points to an object security descriptor.
[in]SecurityInformationSecurity information details to be set.
[in]SecurityDescriptorA security descriptor where its info is to be changed.
[in,out]ObjectsSecurityDescriptorThe returned pointer to security descriptor objects.
[in]AutoInheritFlagsFlags bitmask inheritation, influencing how the security descriptor can be inherited and if it can be in the first place.
[in]PoolTypePool type for the new security descriptor to allocate.
[in]GenericMappingThe generic mapping of access rights masks.
Returns
Returns STATUS_SUCCESS if the operations have been completed without problems and that new info has been set to the security descriptor. STATUS_NO_SECURITY_ON_OBJECT is returned if the object does not have a security descriptor. STATUS_INSUFFICIENT_RESOURCES is returned if memory pool allocation for the new security descriptor with new info set has failed.
Parameters
[in]SecurityDescriptorA security descriptor to be freed from memory.
Returns
Returns STATUS_SUCCESS.
Parameters
[in]_ParentDescriptorA security descriptor of the parent object that is being created.
[in]_ExplicitDescriptorAn explicit security descriptor that is applied to a new object.
[out]NewDescriptorThe new allocated security descriptor.
[in]ObjectTypeThe type of the new object.
[in]IsDirectoryObjectSet this to TRUE if the newly created object is a directory object, otherwise set this to FALSE.
[in]AutoInheritFlagsAutomatic inheritance flags that influence how access control entries within ACLs from security descriptors are inherited.
[in]SubjectContextSecurity subject context of the new object.
[in]GenericMappingGeneric mapping of access mask rights.
[in]PoolTypeThis parameter is unused.
Returns
Returns STATUS_SUCCESS if the operations have been completed successfully and that the security descriptor has been assigned to the new object. STATUS_NO_TOKEN is returned if the caller hasn't supplied a valid argument to a security subject context. STATUS_INVALID_OWNER is returned if the caller hasn't supplied a parent descriptor that belongs to the main user (owner). STATUS_INVALID_PRIMARY_GROUP is returned by the same reason as with the previous NTSTATUS code. The two NTSTATUS codes are returned if the calling thread stated that the owner and/or group is defaulted to the parent descriptor (SEF_DEFAULT_OWNER_FROM_PARENT and/or SEF_DEFAULT_GROUP_FROM_PARENT respectively). STATUS_INSUFFICIENT_RESOURCES is returned if memory pool allocation for the descriptor buffer has failed. A failure NTSTATUS is returned otherwise.
Parameters
[in]ParentDescriptorA security descriptor of the parent object that is being created.
[in]ExplicitDescriptorAn explicit security descriptor that is applied to a new object.
[out]NewDescriptorThe new allocated security descriptor.
[in]IsDirectoryObjectSet this to TRUE if the newly created object is a directory object, otherwise set this to FALSE.
[in]SubjectContextSecurity subject context of the new object.
[in]GenericMappingGeneric mapping of access mask rights.
[in]PoolTypeThis parameter is unused.
Returns
See SeAssignSecurityEx.
Parameters
[in]SecurityDescriptorA security descriptor.
[out]QuotaInfoSizeThe returned quota size of the given security descriptor to the caller. The function may return 0 to this parameter if the descriptor doesn't have a group or a discretionary access control list (DACL) even.
Returns
Returns STATUS_SUCCESS if the quota size of a security descriptor has been computed successfully. STATUS_UNKNOWN_REVISION is returned if the security descriptor has an invalid revision.

Definition at line 923 of file Messaging.c.

75{
76 PFLT_SERVER_PORT_OBJECT PortObject;
78
79 /* The caller must allow at least one connection */
80 if (MaxConnections == 0)
81 {
83 }
84
85 /* The request must be for a kernel handle */
86 if (!(ObjectAttributes->Attributes & OBJ_KERNEL_HANDLE))
87 {
89 }
90
91 /*
92 * Get rundown protection on the target to stop the owner
93 * from unloading whilst this port object is open. It gets
94 * removed in the FltpServerPortClose callback
95 */
97 if (!NT_SUCCESS(Status))
98 {
99 return Status;
100 }
101
102 /* Create the server port object for this filter */
107 NULL,
109 0,
110 0,
111 (PVOID *)&PortObject);
112 if (NT_SUCCESS(Status))
113 {
114 /* Zero out the struct */
115 RtlZeroMemory(PortObject, sizeof(FLT_SERVER_PORT_OBJECT));
116
117 /* Increment the ref count on the target filter */
119
120 /* Setup the filter port object */
121 PortObject->Filter = Filter;
125 PortObject->Cookie = ServerPortCookie;
126 PortObject->MaxConnections = MaxConnections;
127
128 /* Insert the object */
129 Status = ObInsertObject(PortObject,
130 NULL,
132 0,
133 NULL,
135 if (NT_SUCCESS(Status))
136 {
137 /* Lock the connection list */
139
140 /* Add the new port object to the connection list and increment the count */
143
144 /* Unlock the connection list*/
146 }
147 }
148
149 if (!NT_SUCCESS(Status))
150 {
151 /* Allow the filter to be cleaned up */
153 }
154
155 return Status;
156}
static const INTERNET_PORT ServerPort
Definition: CWebService.cpp:11
POBJECT_TYPE ServerPortObjectType
Definition: Messaging.c:24
VOID FLTAPI FltObjectDereference(_Inout_ PVOID Object)
Definition: Object.c:53
NTSTATUS FLTAPI FltObjectReference(_Inout_ PVOID Object)
Definition: Object.c:41
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
Definition: conport.c:36
#define InsertTailList(ListHead, Entry)
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
Definition: fltkernel.h:1801
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY _In_ PFLT_DISCONNECT_NOTIFY _In_opt_ PFLT_MESSAGE_NOTIFY MessageNotifyCallback
Definition: fltkernel.h:1877
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY ConnectNotifyCallback
Definition: fltkernel.h:1875
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID ServerPortCookie
Definition: fltkernel.h:1874
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY _In_ PFLT_DISCONNECT_NOTIFY DisconnectNotifyCallback
Definition: fltkernel.h:1876
ULONG FltpObjectPointerReference(_In_ PFLT_OBJECT Object)
Definition: Object.c:322
VOID FASTCALL ExAcquireFastMutex(IN PFAST_MUTEX FastMutex)
Definition: fmutex.c:23
VOID FASTCALL ExReleaseFastMutex(IN PFAST_MUTEX FastMutex)
Definition: fmutex.c:31
#define OBJ_KERNEL_HANDLE
Definition: winternl.h:231
static LONG MaxConnections
#define FILE_READ_DATA
Definition: nt_native.h:628
#define STANDARD_RIGHTS_ALL
Definition: nt_native.h:69
PVOID *typedef PHANDLE
Definition: ntsecpkg.h:455
NTSTATUS NTAPI ObInsertObject(IN PVOID Object, IN PACCESS_STATE AccessState OPTIONAL, IN ACCESS_MASK DesiredAccess, IN ULONG ObjectPointerBias, OUT PVOID *NewObject OPTIONAL, OUT PHANDLE Handle)
Definition: obhandle.c:2935
NTSTATUS NTAPI ObCreateObject(IN KPROCESSOR_MODE ProbeMode OPTIONAL, IN POBJECT_TYPE Type, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN KPROCESSOR_MODE AccessMode, IN OUT PVOID ParseContext OPTIONAL, IN ULONG ObjectSize, IN ULONG PagedPoolCharge OPTIONAL, IN ULONG NonPagedPoolCharge OPTIONAL, OUT PVOID *Object)
Definition: oblife.c:1039
FLT_MUTEX_LIST_HEAD ConnectionList
Definition: fltmgrint.h:121
LIST_ENTRY mList
Definition: fltmgrint.h:56
FAST_MUTEX mLock
Definition: fltmgrint.h:55
PFLT_DISCONNECT_NOTIFY DisconnectNotify
Definition: fltmgrint.h:192
PFLT_MESSAGE_NOTIFY MessageNotify
Definition: fltmgrint.h:193
PFLT_CONNECT_NOTIFY ConnectNotify
Definition: fltmgrint.h:191
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135

◆ _Out_writes_bytes_()

◆ _Out_writes_bytes_to_()

_Must_inspect_result_ _In_ PFILE_OBJECT _In_opt_ PLARGE_INTEGER _In_ ULONG _Out_writes_bytes_to_ ( Length  ,
BytesRead 
)

◆ _Out_writes_bytes_to_opt_() [1/3]

_In_ FILTER_INFORMATION_CLASS _Out_writes_bytes_to_opt_ ( BufferSize  ,
BytesReturned 
)

◆ _Out_writes_bytes_to_opt_() [2/3]

_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ ULONG _Out_writes_bytes_to_opt_ ( OutputBufferLength  ,
LengthReturned 
)

◆ _Out_writes_bytes_to_opt_() [3/3]

_Out_writes_bytes_to_opt_ ( VolumePropertiesLength  ,
LengthReturned 
)

◆ _Out_writes_to_opt_() [1/2]

_Must_inspect_result_ _In_opt_ PFLT_FILTER _Out_writes_to_opt_ ( InstanceListSize  ,
NumberInstancesReturned 
)

◆ _Out_writes_to_opt_() [2/2]

_Must_inspect_result_ _Out_writes_to_opt_ ( VolumeListSize  ,
NumberVolumesReturned 
)

◆ _Outptr_result_bytebuffer_()

◆ _Releases_lock_()

_Releases_lock_ ( _Global_critical_region_  )

Definition at line 101 of file Object.c.

106{
107 EX_PUSH_LOCK OldValue = *PushLock;
108 EX_PUSH_LOCK NewValue;
109
110 /* Sanity checks */
111 FLT_ASSERT(OldValue.Locked);
112
113 /* Check if the pushlock is shared */
114 if (OldValue.Shared > 1)
115 {
116 /* Decrease the share count */
117 NewValue.Value = OldValue.Value - EX_PUSH_LOCK_SHARE_INC;
118 }
119 else
120 {
121 /* Clear the pushlock entirely */
122 NewValue.Value = 0;
123 }
124
125 /* Check if nobody is waiting on us and try clearing the lock here */
126 if ((OldValue.Waiting) ||
127 (ExpChangePushlock(PushLock, NewValue.Ptr, OldValue.Ptr) !=
128 OldValue.Ptr))
129 {
130 /* We have waiters, use the long path */
131 ExfReleasePushLock(PushLock);
132 }
133
135}
#define EX_PUSH_LOCK_SHARE_INC
Definition: Object.c:33
#define ExpChangePushlock(x, y, z)
Definition: Object.c:23
#define KeLeaveCriticalRegion()
Definition: ke_x.h:119
VOID FASTCALL ExfReleasePushLock(PEX_PUSH_LOCK PushLock)
Definition: pushlock.c:810
ULONG_PTR Value
Definition: extypes.h:465
PVOID Ptr
Definition: extypes.h:466
ULONG_PTR Waiting
Definition: extypes.h:460
ULONG_PTR Shared
Definition: extypes.h:463
ULONG_PTR Locked
Definition: extypes.h:459

◆ _When_() [1/4]

◆ _When_() [2/4]

_When_ ( (PoolType==NonPagedPoolNx)  ,
_IRQL_requires_max_(DISPATCH_LEVEL  
)

◆ _When_() [3/4]

◆ _When_() [4/4]

_When_ ( FlagOn(CallbackData->Iopb->IrpFlags, IRP_PAGING_IO ,
_IRQL_requires_max_(APC_LEVEL  
) -> Iopb->IrpFlags, IRP_PAGING_IO), _IRQL_requires_max_(PASSIVE_LEVEL)) VOID FLTAPI FltPerformSynchronousIo(_Inout_ PFLT_CALLBACK_DATA CallbackData)

◆ FltCbdqDisable()

VOID FLTAPI FltCbdqDisable ( _Inout_ PFLT_CALLBACK_DATA_QUEUE  Cbdq)

◆ FltCbdqEnable()

VOID FLTAPI FltCbdqEnable ( _Inout_ PFLT_CALLBACK_DATA_QUEUE  Cbdq)

◆ FltCbdqInitialize()

◆ FltCbdqInsertIo()

◆ FltCbdqRemoveIo()

◆ FltCbdqRemoveNextIo()

_Must_inspect_result_ PFLT_CALLBACK_DATA FLTAPI FltCbdqRemoveNextIo ( _Inout_ PFLT_CALLBACK_DATA_QUEUE  Cbdq,
_In_opt_ PVOID  PeekContext 
)

◆ FltClearCallbackDataDirty()

VOID FLTAPI FltClearCallbackDataDirty ( _Inout_ PFLT_CALLBACK_DATA  Data)

◆ FltCompareInstanceAltitudes()

LONG FLTAPI FltCompareInstanceAltitudes ( _In_ PFLT_INSTANCE  Instance1,
_In_ PFLT_INSTANCE  Instance2 
)

◆ FltDecodeParameters()

NTSTATUS FLTAPI FltDecodeParameters ( _In_ PFLT_CALLBACK_DATA  CallbackData,
_Outptr_opt_ PMDL **  MdlAddressPointer,
_Outptr_opt_result_bytebuffer_ **Length PVOID **  Buffer,
_Outptr_opt_ PULONG Length,
_Out_opt_ LOCK_OPERATION DesiredAccess 
)

◆ FltDoCompletionProcessingWhenSafe()

_Must_inspect_result_ BOOLEAN FLTAPI FltDoCompletionProcessingWhenSafe ( _In_ PFLT_CALLBACK_DATA  Data,
_In_ PCFLT_RELATED_OBJECTS  FltObjects,
_In_opt_ PVOID  CompletionContext,
_In_ FLT_POST_OPERATION_FLAGS  Flags,
_In_ PFLT_POST_OPERATION_CALLBACK  SafePostCallback,
_Out_ PFLT_POSTOP_CALLBACK_STATUS  RetPostOperationStatus 
)

◆ FltGetIrpName()

PCHAR FLTAPI FltGetIrpName ( _In_ UCHAR  IrpMajorCode)

◆ FltGetSwappedBufferMdlAddress()

PMDL FASTCALL FltGetSwappedBufferMdlAddress ( _In_ PFLT_CALLBACK_DATA  CallbackData)

◆ FltInitializeFileLock()

VOID FLTAPI FltInitializeFileLock ( _Out_ PFILE_LOCK  FileLock)

◆ FltIsCallbackDataDirty()

BOOLEAN FLTAPI FltIsCallbackDataDirty ( _In_ PFLT_CALLBACK_DATA  Data)

◆ FltIsIoCanceled()

BOOLEAN FLTAPI FltIsIoCanceled ( _In_ PFLT_CALLBACK_DATA  CallbackData)

◆ FltIsOperationSynchronous()

BOOLEAN FLTAPI FltIsOperationSynchronous ( _In_ PFLT_CALLBACK_DATA  CallbackData)

◆ FltOplockKeysEqual()

BOOLEAN FLTAPI FltOplockKeysEqual ( _In_opt_ PFILE_OBJECT  Fo1,
_In_opt_ PFILE_OBJECT  Fo2 
)

◆ FltRetainSwappedBufferMdlAddress()

VOID FASTCALL FltRetainSwappedBufferMdlAddress ( _In_ PFLT_CALLBACK_DATA  CallbackData)

◆ FltSetCallbackDataDirty()

VOID FLTAPI FltSetCallbackDataDirty ( _Inout_ PFLT_CALLBACK_DATA  Data)

◆ FltUninitializeFileLock()

VOID FLTAPI FltUninitializeFileLock ( _In_ PFILE_LOCK  FileLock)

Variable Documentation

◆ AllocationSize

◆ Altitude

◆ Buffer

Definition at line 1053 of file fltkernel.h.

◆ BufferSize

_In_ FILTER_VOLUME_INFORMATION_CLASS _In_ ULONG BufferSize

Definition at line 1715 of file fltkernel.h.

◆ BufferSizeNeeded

◆ ByteOffset

◆ BytesRead

◆ BytesReturned

_In_ FILTER_VOLUME_INFORMATION_CLASS _In_ ULONG _Out_ PULONG BytesReturned

Definition at line 1716 of file fltkernel.h.

◆ BytesWritten

◆ CallbackContext

◆ CallbackData

◆ CallbackRoutine

◆ CallbackStatus

Definition at line 1020 of file fltkernel.h.

Referenced by AcpiPsNextParseState(), KeUserModeCallback(), and NtCallbackReturn().

◆ CanceledCallback

Definition at line 1932 of file fltkernel.h.

◆ CleanupCallback

◆ ClientPort

◆ CompletionFilter

◆ ConnectNotifyCallback

◆ Context

◆ Contexts

Definition at line 1454 of file fltkernel.h.

◆ ContextSize

◆ ContextType

Definition at line 1443 of file fltkernel.h.

Referenced by BaseInitializeContext(), and IsContextTypeValid().

◆ CreateDisposition

◆ CreateOptions

◆ CurrentEcpContext

_In_ PECP_LIST _In_opt_ PVOID CurrentEcpContext

Definition at line 2621 of file fltkernel.h.

Referenced by FsRtlGetNextExtraCreateParameter().

◆ Data

◆ DataBufferLength

◆ DesiredAccess

◆ DesiredContexts

_In_ FLT_CONTEXT_TYPE DesiredContexts

Definition at line 1453 of file fltkernel.h.

◆ DeviceObject

Definition at line 1657 of file fltkernel.h.

◆ DisconnectNotifyCallback

◆ DiskDeviceObject

_Outptr_ PDEVICE_OBJECT* DiskDeviceObject

Definition at line 1672 of file fltkernel.h.

Referenced by FltGetDiskDeviceObject(), and IoGetDiskDeviceObject().

◆ DriverContext

◆ EaIndex

◆ EaLength

◆ EaListLength

◆ EcpContext

Definition at line 2524 of file fltkernel.h.

◆ EcpContextSize

Definition at line 2573 of file fltkernel.h.

◆ EcpList

◆ EcpType

Definition at line 2519 of file fltkernel.h.

◆ Extension

◆ FileAttributes

◆ FileHandle

Definition at line 1231 of file fltkernel.h.

Referenced by _IRQL_requires_max_(), AddDiskToList(), ApphelpCheckRunAppEx(), BaseCheckAppcompatCache(), BaseCheckRunApp(), BaseMarkFileForDelete(), BasepCheckBadapp(), BasepCheckWebBladeHashes(), BasepOpenFileForMove(), BasepShimCacheCheckBypass(), BasepShimCacheLookup(), BasepShimCacheSearch(), BasicBehaviorChecks(), BindIoCompletionCallback(), BlImgLoadImageWithProgress2(), BmFwInitializeBootDirectoryPath(), call_ApphelpCheckRunApp(), CallApphelpWithImage(), CheckForValidPEAndVendor(), clean_main(), CmosWriteFile(), CmpInitHiveFromFile(), CmSaveKey(), CmSaveMergedKeys(), CompareFileContents(), CreateFileA(), CreateFileW(), CreateIoCompletionPort(), CreatePartitionList(), CreateProcessInternalW(), CreateRegistryFile(), CSR_API(), DbgUiConvertStateChangeStructure(), DeleteFileW(), DoesPathExist_UStr(), DosCreateFile(), DosCreateFileEx(), DosDeviceIoControl(), DosFlushFileBuffers(), DosInt21h(), DosLoadDriver(), DosLoadExecutable(), DosOpenFile(), DosPrintCharacter(), DosReadCharacter(), DosReadFile(), DosReadLineBuffered(), DosSeekFile(), DosWriteFile(), DumpDisk(), DumpPartition(), Ext2Close(), Ext2GetFileInformation(), Ext2Open(), Ext2OpenDevice(), Ext2OpenFile(), Ext2Read(), Ext2Seek(), Fat12Format(), Fat12WriteBootSector(), Fat12WriteFAT(), Fat12WriteRootDirectory(), Fat16Format(), Fat16WriteBootSector(), Fat16WriteFAT(), Fat16WriteRootDirectory(), Fat32Format(), Fat32WriteBootSector(), Fat32WriteFAT(), Fat32WriteFsInfo(), Fat32WriteRootDirectory(), FatClose(), FatGetFileInformation(), FatOpen(), FatRead(), FatSeek(), FatWipeSectors(), Fatx16WriteFAT(), Fatx32WriteFAT(), FatxFormat(), FatxWriteBootSector(), FatxWriteRootDirectory(), FileClose(), FileLoadByHandle(), FilterConnectCommunicationPort(), FindBootStore(), FindFirstStreamW(), FsRecRegisterFs(), GetFileSecurityW(), GetFileSystem(), GetPhysicalFileSize(), ImageAddCertificate(), ImageGetDigestStream(), ImageRemoveCertificate(), InfOpenFile(), InfWriteFile(), IniCacheLoad(), IniCacheLoadByHandle(), IniCacheSave(), IniCacheSaveByHandle(), InstallBootCodeToFile(), InstallSetupInfFile(), IntGdiAddFontResourceEx(), IntGetCodePageEntry(), IoCreateFile(), IoCreateFileSpecifyDeviceObjectHint(), IoCreateStreamFileObjectEx(), IopCreateFile(), IopCreateLogFile(), IopGetDeviceObjectPointer(), IopMarkBootPartition(), IopWriteLogFile(), IsoClose(), IsoGetFileInformation(), IsoOpen(), IsoRead(), IsoSeek(), kbd_c(), kbd_def(), kbd_h(), kbd_rc(), LdrpCheckForLoadedDll(), LdrpCreateDllSection(), LdrVerifyImageMatchesChecksum(), LoadSymbolsRoutine(), LogMessage(), main(), MapDebugInformation(), MapFile(), MiShutdownSystem(), MmCreateArm3Section(), MmCreateSection(), MmLoadSystemImage(), DriveVolume::MoveFileDumb(), MyDeleteFile(), NdisCloseFile(), NdisMapFile(), NdisOpenFile(), NdisUnmapFile(), NtCancelIoFile(), NtCreateFile(), NtCreateMailslotFile(), NtCreateNamedPipeFile(), NtCreatePagingFile(), NtCreateSection(), NtFlushBuffersFile(), NtfsClose(), NtfsGetFileInformation(), NtfsOpen(), NtfsRead(), NtfsSeek(), NtLockFile(), NtNotifyChangeDirectoryFile(), NtOpenFile(), NtQueryDirectoryFile(), NtQueryInformationFile(), NtQueryVolumeInformationFile(), NtReadFile(), NtSaveKey(), NtSaveKeyEx(), NtSaveMergedKeys(), NtSetInformationFile(), NtSetVolumeInformationFile(), NtUnlockFile(), NtWriteFile(), OpenAndMapFile(), OpenFile(), PopAddRemoveSysCapsCallback(), PrintNameTable(), ProtectFile(), PsLocateSystemDll(), QueryDeviceInformation(), QueryFileInfo(), ReadBlock(), ReadBootCodeByHandle(), ReadBootCodeFromFile(), RegRestoreKeyW(), RegSaveKeyW(), RtlCreateBootStatusDataFile(), RtlGetSetBootStatusData(), RtlLockBootStatusData(), RtlSetIoCompletionCallback(), RtlUnlockBootStatusData(), SaveBootSector(), SetFileAttributesW(), SetFileCompletionNotificationModes(), SetFileSecurityW(), SetLastWriteTime(), SetupDeleteFile(), SmpDeletePagingFile(), SmpGetPagingFileSize(), SmpInitializeKnownDllsInternal(), SmpProcessFileRenames(), START_TEST(), Test_ApphelpCheckRunApp(), Test_ImageSection(), Test_ImageSection2(), TestAllInformation(), TestProviderInfo(), TestRead(), TestRelativeNames(), TestSharedCacheMap(), TestWrite(), TouchFileTimes(), VfatFormat(), VfatxFormat(), WaitNamedPipeW(), WritePartitions(), xHalIoAssignDriveLetters(), and xOpenFile().

◆ FileInformationClass

Definition at line 1307 of file fltkernel.h.

◆ FileName

◆ FileNameInformation

Definition at line 1063 of file fltkernel.h.

◆ FileNameLength

◆ FileObject

◆ FileSystemType

_Out_ PFLT_FILESYSTEM_TYPE FileSystemType

Definition at line 2407 of file fltkernel.h.

◆ FileTag

Definition at line 1267 of file fltkernel.h.

◆ Filter

CopyMemory & Filter

Definition at line 1801 of file fltkernel.h.

Referenced by _IRQL_requires_max_(), _SEH3$_GetFilterResult(), _SEH3$_InvokeNestedFunctionFilter(), AudioPositionPropertyHandler(), BdaMethodCreatePin(), BdaMethodCreateTopology(), BdaPropertyGetPinControl(), BdaPropertyTemplateConnections(), BuildFilterStrings(), CredEnumerateA(), CredEnumerateW(), DECLARE_INTERFACE_(), DeleteWithWildcard(), DoOpenFile(), DoSaveFile(), EthCreateFilter(), EthDeleteFilter(), EthFilterDprIndicateReceive(), EthFilterDprIndicateReceiveComplete(), Ext2NotifyReportChange(), FilterAudioMuteHandler(), FilterAudioVolumeHandler(), FilterMapper3_UnregisterFilter(), FilterMapper_RegisterPin(), FilterMapper_UnregisterFilter(), FilterMapper_UnregisterPin(), FindDeviceByGuid(), FindDeviceByMappedId(), FltEnumerateVolumes(), FltpOpenFilterServicesKey(), FltpRegisterContexts(), FltRegisterFilter(), FltStartFiltering(), FltUnregisterFilter(), GetDeviceID(), GetFilterAltitude(), GetFilterFrame(), GetPinIdFromFilter(), IKsFilter_AddPin(), IKsFilter_AttachFilterToFilterFactory(), IKsFilter_DispatchClose(), IKsFilter_DispatchDeviceIoControl(), IKsFilter_GetFilterFromIrp(), IKsFilter_RemoveFilterFromFilterFactory(), IKsFilter_RemovePin(), IKsPin_DispatchKsStream(), InitOpenFileName(), KsFilterAcquireProcessingMutex(), KsFilterAddTopologyConnections(), KsFilterAttemptProcessing(), KsFilterCreatePinFactory(), KsFilterGetAndGate(), KsFilterGetChildPinCount(), KsFilterGetFirstChildPin(), KsFilterRegisterPowerCallbacks(), KsFilterReleaseProcessingMutex(), KspCreateFilterFactory(), KspCreatePin(), KSPropertySetImpl_Get(), LoadHive(), NewDirectSoundCaptureBuffer(), NewPrimarySoundBuffer(), NewSecondarySoundBuffer(), nfs41_QueryDirectory(), PcCreateItemDispatch(), PcCreatePinDispatch(), PinCreate(), PinReset(), PinState(), TestFltRegisterFilter(), USBAudioFilterCreate(), USBAudioPinCreate(), UsbAudioPinDataIntersect(), and VfatWrite().

◆ FilterCallback

◆ FilterList

Definition at line 1781 of file fltkernel.h.

Referenced by CODE_SEG().

◆ FilterListSize

Definition at line 1782 of file fltkernel.h.

◆ FinalComponent

◆ Flags

◆ FltObject

Definition at line 1987 of file fltkernel.h.

◆ FsContext

◆ FsControlCode

Definition at line 1370 of file fltkernel.h.

Referenced by Ext2UserFsRequest(), and NpControlPipe().

◆ FsInformationClass

◆ FullDirectoryName

◆ Guid

◆ IgnoreBuffer

◆ Index

Definition at line 1823 of file fltkernel.h.

◆ InformationClass

◆ InputBufferLength

◆ Instance

Definition at line 1071 of file fltkernel.h.

◆ InstanceListSize

Definition at line 1803 of file fltkernel.h.

◆ InstanceName

◆ IoControlCode

◆ Iosb

Definition at line 1760 of file fltkernel.h.

◆ IoStatusBlock

◆ IsDirectory

Definition at line 1140 of file fltkernel.h.

◆ IsSnapshotVolume

Definition at line 2415 of file fltkernel.h.

◆ IsWritable

Definition at line 1743 of file fltkernel.h.

Referenced by DiskDetermineMediaTypes().

◆ Length

◆ LengthNeeded

◆ LengthReturned

◆ Lookaside

Definition at line 2531 of file fltkernel.h.

◆ LookasideList

◆ LowerInstance

_Outptr_ PFLT_INSTANCE* LowerInstance

Definition at line 1679 of file fltkernel.h.

◆ MaxConnections

◆ MessageNotifyCallback

◆ NameOptions

◆ NewContext

◆ NewSize

◆ NextEcpContext

◆ NextEcpContextSize

◆ NextEcpType

Definition at line 2622 of file fltkernel.h.

Referenced by FsRtlGetNextExtraCreateParameter().

◆ NotificationMask

Definition at line 2454 of file fltkernel.h.

◆ NotifyCallbackData

◆ NotifyList

◆ NumberFiltersReturned

_Must_inspect_result_ * NumberFiltersReturned PFLT_FILTER _In_ ULONG _Out_ PULONG NumberFiltersReturned

Definition at line 1783 of file fltkernel.h.

◆ NumberInstancesReturned

Definition at line 1804 of file fltkernel.h.

◆ NumberVolumesReturned

_Must_inspect_result_ _In_ ULONG _Out_ PULONG NumberVolumesReturned

Definition at line 1793 of file fltkernel.h.

Referenced by FltEnumerateVolumes().

◆ ObjectAttributes

◆ OldContext

_In_ PKTRANSACTION _Outptr_opt_ PFLT_CONTEXT * OldContext

Definition at line 1469 of file fltkernel.h.

Referenced by ArchSwitchContext().

◆ OpenCount

Definition at line 2082 of file fltkernel.h.

◆ Operation

_In_ PKTRANSACTION _In_ FLT_SET_CONTEXT_OPERATION Operation

Definition at line 1467 of file fltkernel.h.

◆ OutputBufferLength

◆ OutputPriorityInfo

_Out_opt_ PIO_PRIORITY_INFO OutputPriorityInfo

Definition at line 2661 of file fltkernel.h.

◆ PoolTag

◆ PoolType

◆ PrePostCallbackDataRoutine

◆ PriorityHint

_In_ IO_PRIORITY_HINT PriorityHint

Definition at line 2681 of file fltkernel.h.

◆ PriorityInfo

Definition at line 2654 of file fltkernel.h.

Referenced by $endif().

◆ QueueType

◆ RedirectionAllowed

_In_ PFLT_INSTANCE _Out_ PBOOLEAN RedirectionAllowed

Definition at line 2831 of file fltkernel.h.

◆ RedirectionAllowedAllIo

Definition at line 2840 of file fltkernel.h.

◆ RedirectionAllowedThisIo

_In_ PFLT_INSTANCE _Out_ PBOOLEAN RedirectionAllowedThisIo

Definition at line 2839 of file fltkernel.h.

◆ Registration

Definition at line 991 of file fltkernel.h.

Referenced by DriverEntry(), and FltRegisterFilter().

◆ ReplyBuffer

◆ ReplyLength

◆ RequesterContext

◆ RestartScan

◆ RetFileNameInformation

◆ RetFilter

_Outptr_ PFLT_FILTER * RetFilter

Definition at line 992 of file fltkernel.h.

Referenced by FltGetFilterFromName(), and FltRegisterFilter().

◆ RetInstance

Definition at line 1164 of file fltkernel.h.

◆ RetNewCallbackData

◆ RetTunneledFileNameInformation

◆ ReturnSingleEntry

◆ RetVolume

Definition at line 1619 of file fltkernel.h.

◆ RootDirectory

Definition at line 1127 of file fltkernel.h.

◆ SecurityDescriptor

◆ SecurityInformation

◆ SenderBufferLength

Definition at line 1901 of file fltkernel.h.

Referenced by _IRQL_requires_max_().

◆ ServerPort

Definition at line 1872 of file fltkernel.h.

◆ ServerPortCookie

◆ SessionId

Definition at line 2815 of file fltkernel.h.

◆ ShareAccess

◆ Size

◆ SizeOfContext

Definition at line 2520 of file fltkernel.h.

◆ SourceDeviceStackSizeModified

_In_ PFLT_INSTANCE _Out_opt_ PBOOLEAN SourceDeviceStackSizeModified

Definition at line 2823 of file fltkernel.h.

◆ Stream

◆ SubjectContext