ReactOS  0.4.15-dev-1397-g19779b3
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
 
 _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)
 
 _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:
FLT_FILE_CONTEXT | FLT_STREAM_CONTEXT | \
FLT_STREAMHANDLE_CONTEXT | FLT_TRANSACTION_CONTEXT)
#define FLT_TRANSACTION_CONTEXT
Definition: fltkernel.h:443
#define FLT_STREAM_CONTEXT
Definition: fltkernel.h:441
#define FLT_INSTANCE_CONTEXT
Definition: fltkernel.h:439
#define FLT_VOLUME_CONTEXT
Definition: fltkernel.h:438

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:
TRANSACTION_NOTIFY_PREPARE | \
TRANSACTION_NOTIFY_COMMIT | \
TRANSACTION_NOTIFY_ROLLBACK | \
TRANSACTION_NOTIFY_COMMIT_FINALIZE)
#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 SPVER(Version)
Definition: sdkddkver.h:132
#define NTDDI_WS03
Definition: sdkddkver.h:92
#define NTDDI_WINXP
Definition: sdkddkver.h:87
#define NTDDI_VERSION
Definition: k32.h:33
#define NTDDI_WIN2K
Definition: sdkddkver.h:82
#define OSVER(Version)
Definition: sdkddkver.h:131
#define NTDDI_WIN2KSP4
Definition: sdkddkver.h:86
#define NTDDI_VISTA
Definition: sdkddkver.h:103
#define NTDDI_WINXPSP2
Definition: sdkddkver.h:89
#define NTDDI_WS03SP1
Definition: sdkddkver.h:93

Definition at line 34 of file fltkernel.h.

◆ FLT_MGR_BASELINE

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

Definition at line 29 of file fltkernel.h.

◆ 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 900 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 910 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 883 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 894 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 905 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 889 of file fltkernel.h.

◆ PFLT_COMPLETE_CANCELED_CALLBACK

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

Definition at line 860 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 929 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 749 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 848 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 499 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 494 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 505 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 867 of file fltkernel.h.

◆ PFLT_DISCONNECT_NOTIFY

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

Definition at line 856 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 654 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 873 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 764 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 555 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 546 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 568 of file fltkernel.h.

◆ PFLT_IO_PARAMETER_BLOCK

◆ PFLT_MESSAGE_NOTIFY

Definition at line 839 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 701 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 678 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 689 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 597 of file fltkernel.h.

◆ PFLT_POSTOP_CALLBACK_STATUS

◆ PFLT_PRE_OPERATION_CALLBACK

Definition at line 582 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 706 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 939 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 934 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
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.

◆ _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  {
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 InterlockedBitTestAndSet
Definition: interlocked.h:30
VOID FASTCALL ExfAcquirePushLockExclusive(PEX_PUSH_LOCK PushLock)
Definition: pushlock.c:471
#define KeEnterCriticalRegion()
Definition: ke_x.h:83
#define EX_PUSH_LOCK_LOCK_V
Definition: Object.c:28
signed int * PLONG
Definition: retypes.h:5
#define FLT_ASSERT(_e)
Definition: fltkernel.h:49

◆ _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  )

Definition at line 197 of file cddata.c.

254 {
255  THREAD_CONTEXT ThreadContext = {0};
256  PIRP_CONTEXT IrpContext = NULL;
257  BOOLEAN Wait;
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 
409  case IRP_MJ_DEVICE_CONTROL :
410 
411  Status = CdCommonDevControl( IrpContext, Irp );
412  break;
413 
414  case IRP_MJ_LOCK_CONTROL :
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 }
#define KeGetCurrentIrql()
Definition: env_spec_w32.h:706
VOID CdSetThreadContext(_Inout_ PIRP_CONTEXT IrpContext, _In_ PTHREAD_CONTEXT ThreadContext)
Definition: cddata.c:981
#define IRP_MJ_CREATE
Definition: rdpdr.c:44
#define FsRtlEnterFileSystem
#define FsRtlExitFileSystem
#define IRP_MJ_SHUTDOWN
#define TRUE
Definition: types.h:120
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:317
#define IRP_CONTEXT_FLAG_MORE_PROCESSING
Definition: cdstruc.h:1214
_In_ WDFDPC _In_ BOOLEAN Wait
Definition: wdfdpc.h:167
#define SafeNodeType(Ptr)
Definition: nodetype.h:54
#define IRP_MJ_PNP
Definition: cdrw_usr.h:52
LONG NTSTATUS
Definition: precomp.h:26
#define STATUS_INVALID_DEVICE_REQUEST
Definition: udferr_usr.h:138
_SEH2_TRY
Definition: create.c:4226
#define IRP_MN_COMPLETE
Definition: iotypes.h:4399
UCHAR KIRQL
Definition: env_spec_w32.h:591
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
#define FALSE
Definition: types.h:117
_In_ PIRP Irp
Definition: csq.h:116
VOID CdCompleteRequest(_Inout_opt_ PIRP_CONTEXT IrpContext, _Inout_opt_ PIRP Irp, _In_ NTSTATUS Status)
Definition: cddata.c:914
#define _SEH2_GetExceptionInformation()
Definition: pseh2_64.h:11
unsigned char BOOLEAN
#define IRP_MJ_QUERY_VOLUME_INFORMATION
Definition: rdpdr.c:50
#define IRP_MJ_DIRECTORY_CONTROL
Definition: rdpdr.c:51
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
Definition: wdfdevice.h:547
Status
Definition: gdiplustypes.h:24
#define IRP_MJ_FILE_SYSTEM_CONTROL
PIRP NTAPI IoGetTopLevelIrp(VOID)
Definition: irp.c:1843
#define CanFsdWait(I)
Definition: cdprocs.h:2001
NTSTATUS CdCompleteMdl(_In_ PIRP_CONTEXT IrpContext, _Inout_ PIRP Irp)
Definition: cachesup.c:411
#define IRP_MJ_CLOSE
Definition: rdpdr.c:45
NTSTATUS CdCommonDevControl(_Inout_ PIRP_CONTEXT IrpContext, _Inout_ PIRP Irp)
Definition: devctrl.c:46
#define FlagOn(_F, _SF)
Definition: ext2fs.h:179
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
Definition: iofuncs.h:2789
#define SetFlag(_F, _SF)
Definition: ext2fs.h:187
_SEH2_END
Definition: create.c:4400
LONG CdExceptionFilter(_Inout_ PIRP_CONTEXT IrpContext, _In_ PEXCEPTION_POINTERS ExceptionPointer)
Definition: cddata.c:525
#define ASSERT_OPTIONAL_IRP(I)
Definition: cddata.h:252
#define NULL
Definition: types.h:112
VOID CdCleanupIrpContext(_In_ PIRP_CONTEXT IrpContext, _In_ BOOLEAN Post)
Definition: strucsup.c:1733
NTSTATUS CdCommonLockControl(_Inout_ PIRP_CONTEXT IrpContext, _Inout_ PIRP Irp)
Definition: lockctrl.c:35
#define CDFS_NTC_IRP_CONTEXT
Definition: nodetype.h:34
#define IRP_MJ_LOCK_CONTROL
Definition: rdpdr.c:53
#define IRP_MJ_READ
Definition: rdpdr.c:46
#define IRP_MJ_CLEANUP
#define IRP_MJ_SET_INFORMATION
Definition: rdpdr.c:49
#define IRP_MJ_WRITE
Definition: rdpdr.c:47
#define IRP_MJ_QUERY_INFORMATION
Definition: rdpdr.c:48
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:6
#define _SEH2_GetExceptionCode()
Definition: pseh2_64.h:12
_Ret_valid_ PIRP_CONTEXT CdCreateIrpContext(_In_ PIRP Irp, _In_ BOOLEAN Wait)
Definition: strucsup.c:1573
#define IRP_MJ_DEVICE_CONTROL
Definition: rdpdr.c:52
#define STATUS_CANT_WAIT
Definition: ntstatus.h:452
#define NT_ASSERT
Definition: rtlfuncs.h:3312

◆ _IRQL_requires_max_() [2/4]

_IRQL_requires_max_ ( DISPATCH_LEVEL  )

Definition at line 3557 of file common.c.

3587 {
3588  NTSTATUS status;
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 
3614  case PowerDownDeviceLocked:
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
3716  if (CompletionRoutine)
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  {
3771  LARGE_INTEGER t;
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 SRB_FUNCTION_UNLOCK_QUEUE
Definition: srb.h:325
#define SCSIOP_SYNCHRONIZE_CACHE
Definition: cdrw_hw.h:918
#define SRB_FUNCTION_QUIESCE_DEVICE
Definition: srb.h:90
#define SRB_FLAGS_NO_QUEUE_FREEZE
Definition: srb.h:396
#define TRUE
Definition: types.h:120
Definition: cdrw_hw.h:28
LONG NTSTATUS
Definition: precomp.h:26
struct _CDB::_SYNCHRONIZE_CACHE10 SYNCHRONIZE_CACHE10
GLdouble GLdouble t
Definition: gl.h:2047
#define SRB_STATUS(Status)
Definition: srb.h:381
VOID RequestClearSendTime(_In_ WDFREQUEST Request)
Definition: common.c:111
#define MAXIMUM_RETRIES
Definition: cdrom.h:124
return STATUS_NOT_IMPLEMENTED
#define SCSI_CDROM_TIMEOUT
Definition: cdrom.c:170
#define FALSE
Definition: types.h:117
NTSTATUS NTAPI KeDelayExecutionThread(IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Interval OPTIONAL)
Definition: wait.c:283
#define SRB_FLAGS_BYPASS_LOCKED_QUEUE
Definition: srb.h:402
unsigned char BOOLEAN
union _CDB * PCDB
struct _CDB::_START_STOP START_STOP
VOID NTAPI KeQueryTickCount(IN PLARGE_INTEGER TickCount)
Definition: clock.c:165
#define TEST_FLAG(Flags, Bit)
Definition: cdrom.h:1495
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define SRB_FLAGS_DISABLE_SYNCH_TRANSFER
Definition: srb.h:389
#define SRB_FLAGS_NO_DATA_TRANSFER
Definition: srb.h:394
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 SRB_STATUS_QUEUE_FROZEN
Definition: srb.h:378
NTSTATUS RequestSend(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ WDFIOTARGET IoTarget, _In_ ULONG Flags, _Out_opt_ PBOOLEAN RequestSent)
Definition: common.c:3793
#define TRACE_LEVEL_ERROR
Definition: storswtr.h:27
_In_ WDFREQUEST _In_opt_ PFN_WDF_REQUEST_COMPLETION_ROUTINE CompletionRoutine
Definition: wdfrequest.h:893
#define NULL
Definition: types.h:112
#define SRB_FUNCTION_EXECUTE_SCSI
Definition: srb.h:307
unsigned int ULONG
Definition: retypes.h:1
#define SRB_STATUS_SUCCESS
Definition: srb.h:333
#define SRB_FLAGS_D3_PROCESSING
Definition: srb.h:156
static SERVICE_STATUS status
Definition: service.c:31
#define SCSIOP_START_STOP_UNIT
Definition: cdrw_hw.h:897
#define SRB_FUNCTION_LOCK_QUEUE
Definition: srb.h:324
#define NT_ASSERT
Definition: rtlfuncs.h:3312
Definition: ps.c:97

◆ _IRQL_requires_max_() [3/4]

_Must_inspect_result_ _IRQL_requires_max_ ( PASSIVE_LEVEL  )

Definition at line 64 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 */
106  KernelMode,
107  NULL,
108  sizeof(FLT_SERVER_PORT_OBJECT),
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;
122  PortObject->ConnectNotify = ConnectNotifyCallback;
124  PortObject->MessageNotify = MessageNotifyCallback;
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 }
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
Definition: conport.c:35
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135
_Must_inspect_result_ _Outptr_ PFLT_PORT * ServerPort
Definition: fltkernel.h:1873
PFLT_CONNECT_NOTIFY ConnectNotify
Definition: fltmgrint.h:191
VOID FLTAPI FltObjectDereference(_Inout_ PVOID Object)
Definition: Object.c:53
LONG NTSTATUS
Definition: precomp.h:26
#define InsertTailList(ListHead, Entry)
#define OBJ_KERNEL_HANDLE
Definition: winternl.h:231
VOID FASTCALL ExReleaseFastMutex(IN PFAST_MUTEX FastMutex)
Definition: fmutex.c:31
ULONG FltpObjectPointerReference(_In_ PFLT_OBJECT Object)
Definition: Object.c:322
LIST_ENTRY mList
Definition: fltmgrint.h:56
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
Definition: fltkernel.h:1802
#define FILE_READ_DATA
Definition: nt_native.h:628
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:952
Status
Definition: gdiplustypes.h:24
POBJECT_TYPE ServerPortObjectType
Definition: Messaging.c:24
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY _In_ PFLT_DISCONNECT_NOTIFY DisconnectNotifyCallback
Definition: fltkernel.h:1873
PVOID *typedef PHANDLE
Definition: ntsecpkg.h:454
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY ConnectNotifyCallback
Definition: fltkernel.h:1873
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:2932
#define STANDARD_RIGHTS_ALL
Definition: nt_native.h:69
VOID FASTCALL ExAcquireFastMutex(IN PFAST_MUTEX FastMutex)
Definition: fmutex.c:23
NTSTATUS FLTAPI FltObjectReference(_Inout_ PVOID Object)
Definition: Object.c:41
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID ServerPortCookie
Definition: fltkernel.h:1873
#define NULL
Definition: types.h:112
FAST_MUTEX mLock
Definition: fltmgrint.h:55
PFLT_MESSAGE_NOTIFY MessageNotify
Definition: fltmgrint.h:193
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
_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
Definition: fltkernel.h:1873
PFLT_DISCONNECT_NOTIFY DisconnectNotify
Definition: fltmgrint.h:192
_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:1873
FLT_MUTEX_LIST_HEAD ConnectionList
Definition: fltmgrint.h:121

◆ _IRQL_requires_max_() [4/4]

_Must_inspect_result_ _IRQL_requires_max_ ( DPC_LEVEL  )

◆ _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]

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

◆ _Out_writes_bytes_to_opt_() [2/3]

_In_ FILTER_INFORMATION_CLASS _Out_writes_bytes_to_opt_ ( BufferSize  ,
BytesReturned 
)

◆ _Out_writes_bytes_to_opt_() [3/3]

_Out_writes_bytes_to_opt_ ( VolumePropertiesLength  ,
LengthReturned 
)

◆ _Out_writes_to_opt_() [1/2]

_Must_inspect_result_ _Out_writes_to_opt_ ( VolumeListSize  ,
NumberVolumesReturned 
)

◆ _Out_writes_to_opt_() [2/2]

_Must_inspect_result_ _In_opt_ PFLT_FILTER _Out_writes_to_opt_ ( InstanceListSize  ,
NumberInstancesReturned 
)

◆ _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 }
ULONG_PTR Value
Definition: extypes.h:465
PVOID Ptr
Definition: extypes.h:466
ULONG_PTR Waiting
Definition: extypes.h:460
VOID FASTCALL ExfReleasePushLock(PEX_PUSH_LOCK PushLock)
Definition: pushlock.c:810
#define ExpChangePushlock(x, y, z)
Definition: Object.c:23
ULONG_PTR Shared
Definition: extypes.h:463
#define KeLeaveCriticalRegion()
Definition: ke_x.h:114
#define EX_PUSH_LOCK_SHARE_INC
Definition: Object.c:33
ULONG_PTR Locked
Definition: extypes.h:459
#define FLT_ASSERT(_e)
Definition: fltkernel.h:49

◆ _When_() [1/4]

◆ _When_() [2/4]

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

◆ _When_() [3/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)

◆ _When_() [4/4]

◆ 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 1716 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

◆ CanceledCallback

Definition at line 1933 of file fltkernel.h.

◆ CleanupCallback

◆ ClientPort

◆ CompletionFilter

◆ ConnectNotifyCallback

◆ Context

◆ Contexts

Definition at line 1454 of file fltkernel.h.

◆ ContextSize

◆ ContextType

Definition at line 1444 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 1454 of file fltkernel.h.

◆ DeviceObject

Definition at line 1658 of file fltkernel.h.

◆ DisconnectNotifyCallback

◆ DiskDeviceObject

_Outptr_ PDEVICE_OBJECT* DiskDeviceObject

Definition at line 1673 of file fltkernel.h.

Referenced by FltGetDiskDeviceObject(), IoGetDiskDeviceObject(), and ReportToMountMgr().

◆ DriverContext

◆ EaIndex

◆ EaLength

◆ EaListLength

◆ EcpContext

Definition at line 2520 of file fltkernel.h.

◆ EcpContextSize

Definition at line 2571 of file fltkernel.h.

◆ EcpList

◆ EcpType

Definition at line 2520 of file fltkernel.h.

◆ Extension

◆ FileAttributes

◆ FileHandle

Definition at line 1230 of file fltkernel.h.

◆ FileInformationClass

Definition at line 1306 of file fltkernel.h.

◆ FileName

◆ FileNameInformation

Definition at line 1062 of file fltkernel.h.

◆ FileNameLength

◆ FileObject

◆ FileSystemType

_Out_ PFLT_FILESYSTEM_TYPE FileSystemType

Definition at line 2408 of file fltkernel.h.

◆ FileTag

Definition at line 1266 of file fltkernel.h.

◆ Filter

CopyMemory & Filter

Definition at line 1802 of file fltkernel.h.

Referenced by $_GetFilterResult(), $_InvokeNestedFunctionFilter(), _IRQL_requires_max_(), AudioPositionPropertyHandler(), BdaMethodCreatePin(), BdaMethodCreateTopology(), BdaPropertyGetPinControl(), BdaPropertyTemplateConnections(), BuildFilterStrings(), CredEnumerateA(), CredEnumerateW(), DECLARE_INTERFACE_(), DoOpenFile(), DoSaveFile(), EthCreateFilter(), EthDeleteFilter(), EthFilterDprIndicateReceive(), EthFilterDprIndicateReceiveComplete(), Ext2NotifyReportChange(), FFSNotifyReportChange(), 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(), InbvInstallDisplayStringFilter(), 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(), RfsdNotifyReportChange(), TestFltRegisterFilter(), USBAudioFilterCreate(), USBAudioPinCreate(), UsbAudioPinDataIntersect(), and VfatWrite().

◆ FilterCallback

◆ FilterList

Definition at line 1782 of file fltkernel.h.

Referenced by DriverEntry().

◆ FilterListSize

Definition at line 1782 of file fltkernel.h.

◆ FinalComponent

◆ Flags

◆ FltObject

Definition at line 1988 of file fltkernel.h.

◆ FsContext

◆ FsControlCode

◆ FsInformationClass

◆ FullDirectoryName

◆ Guid

◆ IgnoreBuffer

◆ Index

Definition at line 1824 of file fltkernel.h.

◆ InformationClass

◆ InputBufferLength

◆ Instance

Definition at line 1071 of file fltkernel.h.

◆ InstanceListSize

Definition at line 1804 of file fltkernel.h.

◆ InstanceName

◆ IoControlCode

◆ Iosb

Definition at line 1761 of file fltkernel.h.

◆ IoStatusBlock

◆ IsDirectory

◆ IsSnapshotVolume

Definition at line 2416 of file fltkernel.h.

◆ IsWritable

Definition at line 1744 of file fltkernel.h.

Referenced by DiskDetermineMediaTypes().

◆ Length

◆ LengthNeeded

◆ LengthReturned

◆ Lookaside

Definition at line 2532 of file fltkernel.h.

◆ LookasideList

◆ LowerInstance

_Outptr_ PFLT_INSTANCE* LowerInstance

Definition at line 1680 of file fltkernel.h.

◆ MaxConnections

◆ MessageNotifyCallback

◆ NameOptions

◆ NewContext

◆ NewSize

◆ NextEcpContext

◆ NextEcpContextSize

◆ NextEcpType

Definition at line 2621 of file fltkernel.h.

Referenced by FsRtlGetNextExtraCreateParameter().

◆ NotificationMask

Definition at line 2453 of file fltkernel.h.

◆ NotifyCallbackData

◆ NotifyList

◆ NumberFiltersReturned

_Must_inspect_result_ * NumberFiltersReturned PFLT_FILTER _In_ ULONG _Out_ PULONG NumberFiltersReturned

Definition at line 1782 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 1468 of file fltkernel.h.

Referenced by ArchSwitchContext().

◆ OpenCount

Definition at line 2082 of file fltkernel.h.

◆ Operation

◆ OutputBufferLength

◆ OutputPriorityInfo

_Out_opt_ PIO_PRIORITY_INFO OutputPriorityInfo

Definition at line 2662 of file fltkernel.h.

◆ PoolTag

◆ PoolType

◆ PrePostCallbackDataRoutine

◆ PriorityHint

_In_ IO_PRIORITY_HINT PriorityHint

Definition at line 2682 of file fltkernel.h.

◆ PriorityInfo

Definition at line 2653 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 2839 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 991 of file fltkernel.h.

Referenced by FltGetFilterFromName(), and FltRegisterFilter().

◆ RetInstance

Definition at line 1162 of file fltkernel.h.

◆ RetNewCallbackData

◆ RetTunneledFileNameInformation

◆ ReturnSingleEntry

◆ RetVolume

Definition at line 1619 of file fltkernel.h.

◆ RootDirectory

Definition at line 1126 of file fltkernel.h.

◆ SecurityDescriptor

◆ SecurityInformation

◆ SenderBufferLength

Definition at line 1902 of file fltkernel.h.

Referenced by _IRQL_requires_max_().

◆ ServerPort

◆ ServerPortCookie

◆ SessionId

Definition at line 2816 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

◆ Tag

◆ TargetInstance

_In_ PFLT_INSTANCE TargetInstance

Definition at line 2823 of file fltkernel.h.

◆ Thread

Definition at line 2653 of file fltkernel.h.

Referenced by _ExAcquireFastMutexUnsafe(), _IRQL_requires_min_(), _KeAcquireGuardedMutex(), _KeAcquireGuardedMutexUnsafe(), _KeReleaseGuardedMutex(), _KeTryToAcquireGuardedMutex(), _Requires_lock_held_(), _tWinMain(), AcpiDsCallControlMethod(), AcpiDsCreateWalkState(), AcpiDsGetCurrentWalkState(), AcpiDsPopWalkState(), AcpiDsPushWalkState(), AcpiExLinkMutex(), AcpiExReleaseAllMutexes(), AcpiExUnlinkMutex(), AcpiPsParseAml(), AllocW32Thread(), CallSoundThread(), CcInitializeCacheManager(), CmpInitializeHiveList(), connect(), ConSrvConsoleCtrlEventTimeout(), CreateSoundThread(), CsrInsertThread(), DbgkCreateThread(), DbgkExitProcess(), DbgkExitThread(), DbgkMapViewOfSection(), DbgkpOpenHandles(), DbgkpPostFakeModuleMessages(), DbgkpQueueMessage(), DbgkpWakeTarget(), DbgkUnMapViewOfSection(), DECLSPEC_ALIGN(), DestroySoundThread(), DLDAcquireExclusive(), DLDAcquireShared(), DLDpAcquireResourceExclusiveLite(), DLDpFindCurrentThread(), DLDProcessThread(), CDownloadManager::DownloadDlgProc(), ExAcquireResourceExclusiveLite(), ExAcquireResourceSharedLite(), ExAcquireSharedStarveExclusive(), ExAcquireSharedWaitForExclusive(), ExIsResourceAcquiredSharedLite(), ExitThreadCallback(), ExpBoostOwnerThread(), ExpCreateWorkerThread(), ExpFindEntryForThread(), ExpInitializeWorkerThreads(), ExpRaiseHardError(), ExpTimerApcKernelRoutine(), ExpWaitForResource(), ExpWorkerThreadEntryPoint(), ExReleaseResourceForThreadLite(), ExSetResourceOwnerPointer(), ExSwapinWorkerThreads(), Ext2ExceptionHandler(), ExTimerRundown(), ExTryToAcquireResourceExclusiveLite(), FFSExceptionHandler(), find_thread(), FirstSendHandler(), gdb_send_exception(), gethostbyaddr(), gethostbyname(), GetProcessIdOfThread(), GetProcessLuid(), getprotobyname(), getprotobynumber(), getservbyname(), getservbyport(), getsockopt(), GetThreadId(), GuiConsoleShowConsoleProperties(), GUIDisplayStatusMessage(), handle_gdb_query(), handle_gdb_thread_alive(), inet_ntoa(), InitThreadCallback(), IntFindWindowToRepaint(), IntGetPaintMessage(), IntTID2PTI(), IoCancelThreadIo(), IofCompleteRequest(), IoGetDeviceToVerify(), IoIsSystemThread(), IoRaiseHardError(), IoSetDeviceToVerify(), IoSetThreadHardErrorMode(), IoThreadToProcess(), KdbpAttachToProcess(), KdbpAttachToThread(), KdbpCmdThread(), KdbpInternalEnter(), Ke386CallBios(), Ke386GetGdtEntryThread(), Ke386SetIOPL(), KeAlertResumeThread(), KeAlertThread(), KeAttachProcess(), KeBoostPriorityThread(), KeDelayExecutionThread(), KeDetachProcess(), KeFlushQueueApc(), KeForceResumeThread(), KeInitializeApc(), KeInitializeThread(), KeInitThread(), KeInsertQueueApc(), KePulseEvent(), KeQueryBasePriorityThread(), KeQueryPriorityThread(), KeQueryRuntimeProcess(), KeQueryRuntimeThread(), KeQueryValuesProcess(), KeReadStateThread(), KeReadyThread(), KeRemoveQueue(), KeRemoveQueueApc(), KeResumeThread(), KeRundownQueue(), KeRundownThread(), KeSetAffinityProcess(), KeSetAffinityThread(), KeSetBasePriorityThread(), KeSetDisableBoostThread(), KeSetEvent(), KeSetEventBoostPriority(), KeSetIdealProcessorThread(), KeSetKernelStackSwapEnable(), KeSetPriorityAndQuantumProcess(), KeSetPriorityThread(), KeSetQuantumProcess(), KeStackAttachProcess(), KeStartThread(), KeSuspendThread(), KeTerminateThread(),