WDK Mini Filter Example
nc.c File Reference
#include <dontuse.h>
#include <suppress.h>
#include "nc.h"

Go to the source code of this file.

Functions

NTSTATUS DriverEntry (_In_ PDRIVER_OBJECT DriverObject, _In_ PUNICODE_STRING RegistryPath)
 
NTSTATUS NcInstanceSetup (_In_ PCFLT_RELATED_OBJECTS FltObjects, _In_ FLT_INSTANCE_SETUP_FLAGS Flags, _In_ DEVICE_TYPE VolumeDeviceType, _In_ FLT_FILESYSTEM_TYPE VolumeFilesystemType)
 
VOID NcInstanceTeardownStart (_In_ PCFLT_RELATED_OBJECTS FltObjects, _In_ FLT_INSTANCE_TEARDOWN_FLAGS Flags)
 
NTSTATUS NcUnload (_In_ FLT_FILTER_UNLOAD_FLAGS Flags)
 
NTSTATUS NcInstanceQueryTeardown (_In_ PCFLT_RELATED_OBJECTS FltObjects, _In_ FLT_INSTANCE_QUERY_TEARDOWN_FLAGS Flags)
 
FLT_PREOP_CALLBACK_STATUS NcPreCreateCallback (_Inout_ PFLT_CALLBACK_DATA Data, _In_ PCFLT_RELATED_OBJECTS FltObjects, _Flt_CompletionContext_Outptr_ PVOID *CompletionContext)
 
FLT_PREOP_CALLBACK_STATUS NcPreCleanupCallback (_Unreferenced_parameter_ PFLT_CALLBACK_DATA Data, _Unreferenced_parameter_ PCFLT_RELATED_OBJECTS FltObjects, _Flt_CompletionContext_Outptr_ PVOID *CompletionContext)
 
FLT_POSTOP_CALLBACK_STATUS NcPostCleanupCallback (_Inout_ PFLT_CALLBACK_DATA Data, _In_ PCFLT_RELATED_OBJECTS FltObjects, _In_opt_ PVOID CompletionContext, _In_ FLT_POST_OPERATION_FLAGS Flags)
 
FLT_PREOP_CALLBACK_STATUS NcPreFsctlCallback (_Inout_ PFLT_CALLBACK_DATA Data, _In_ PCFLT_RELATED_OBJECTS FltObjects, _Flt_CompletionContext_Outptr_ PVOID *CompletionContext)
 
FLT_POSTOP_CALLBACK_STATUS NcPostFsctlCallback (_Inout_ PFLT_CALLBACK_DATA Data, _In_ PCFLT_RELATED_OBJECTS FltObjects, _When_(Data->Iopb->Parameters.FileSystemControl.Common.FsControlCode==FSCTL_FIND_FILES_BY_SID, _In_) _When_(Data->Iopb->Parameters.FileSystemControl.Common.FsControlCode!=FSCTL_FIND_FILES_BY_SID, _In_opt_) PVOID CompletionContext, _In_ FLT_POST_OPERATION_FLAGS Flags)
 
FLT_PREOP_CALLBACK_STATUS NcPreQueryInformationCallback (_Inout_ PFLT_CALLBACK_DATA Data, _In_ PCFLT_RELATED_OBJECTS FltObjects, _Flt_CompletionContext_Outptr_ PVOID *CompletionContext)
 
FLT_POSTOP_CALLBACK_STATUS NcPostQueryInformationCallback (_Inout_ PFLT_CALLBACK_DATA Data, _In_ PCFLT_RELATED_OBJECTS FltObjects, _In_opt_ PVOID CompletionContext, _In_ FLT_POST_OPERATION_FLAGS Flags)
 
FLT_PREOP_CALLBACK_STATUS NcPreSetInformationCallback (_Inout_ PFLT_CALLBACK_DATA Data, _In_ PCFLT_RELATED_OBJECTS FltObjects, _Flt_CompletionContext_Outptr_ PVOID *CompletionContext)
 
FLT_PREOP_CALLBACK_STATUS NcPreDirectoryControlCallback (_Inout_ PFLT_CALLBACK_DATA Data, _In_ PCFLT_RELATED_OBJECTS FltObjects, _Flt_CompletionContext_Outptr_ PVOID *CompletionContext)
 
FLT_POSTOP_CALLBACK_STATUS NcPostDirectoryControlCallback (_Inout_ PFLT_CALLBACK_DATA Data, _In_ PCFLT_RELATED_OBJECTS FltObjects, _In_ PVOID CompletionContext, _In_ FLT_POST_OPERATION_FLAGS Flags)
 
FLT_PREOP_CALLBACK_STATUS NcPreNetworkQueryCallback (_Inout_ PFLT_CALLBACK_DATA Data, _In_ PCFLT_RELATED_OBJECTS FltObjects, _Flt_CompletionContext_Outptr_ PVOID *CompletionContext)
 
NTSTATUS NcGenerateFileNameCallback (_In_ PFLT_INSTANCE Instance, _In_ PFILE_OBJECT FileObject, _In_opt_ PFLT_CALLBACK_DATA Data, _In_ FLT_FILE_NAME_OPTIONS NameOptions, _Out_ PBOOLEAN CacheFileNameInformation, _Inout_ PFLT_NAME_CONTROL FileName)
 
NTSTATUS NcNormalizeNameComponentExCallback (_In_ PFLT_INSTANCE Instance, _In_opt_ PFILE_OBJECT FileObject, _In_ PCUNICODE_STRING ParentDirectory, _In_ USHORT DeviceNameLength, _In_ PCUNICODE_STRING Component, _Out_writes_bytes_(ExpandComponentNameLength) PFILE_NAMES_INFORMATION ExpandComponentName, _In_ ULONG ExpandComponentNameLength, _In_ FLT_NORMALIZE_NAME_FLAGS Flags, _Inout_ PVOID *NormalizationContext)
 
NTSTATUS NcNormalizeNameComponentCallback (_In_ PFLT_INSTANCE Instance, _In_ PCUNICODE_STRING ParentDirectory, _In_ USHORT DeviceNameLength, _In_ PCUNICODE_STRING Component, _Out_writes_bytes_(ExpandComponentNameLength) PFILE_NAMES_INFORMATION ExpandComponentName, _In_ ULONG ExpandComponentNameLength, _In_ FLT_NORMALIZE_NAME_FLAGS Flags, _Inout_ PVOID *NormalizationContext)
 

Variables

DRIVER_INITIALIZE DriverEntry
 
CONST FLT_OPERATION_REGISTRATION Callbacks []
 
const FLT_CONTEXT_REGISTRATION contextRegistration []
 
CONST FLT_REGISTRATION FilterRegistration
 
NC_GLOBAL_DATA NcGlobalData
 

Function Documentation

◆ DriverEntry()

NTSTATUS DriverEntry ( _In_ PDRIVER_OBJECT  DriverObject,
_In_ PUNICODE_STRING  RegistryPath 
)

Definition at line 958 of file nc.c.

◆ NcGenerateFileNameCallback()

NTSTATUS NcGenerateFileNameCallback ( _In_ PFLT_INSTANCE  Instance,
_In_ PFILE_OBJECT  FileObject,
_In_opt_ PFLT_CALLBACK_DATA  Data,
_In_ FLT_FILE_NAME_OPTIONS  NameOptions,
_Out_ PBOOLEAN  CacheFileNameInformation,
_Inout_ PFLT_NAME_CONTROL  FileName 
)

Definition at line 1836 of file nc.c.

◆ NcInstanceQueryTeardown()

NTSTATUS NcInstanceQueryTeardown ( _In_ PCFLT_RELATED_OBJECTS  FltObjects,
_In_ FLT_INSTANCE_QUERY_TEARDOWN_FLAGS  Flags 
)

Definition at line 868 of file nc.c.

◆ NcInstanceSetup()

NTSTATUS NcInstanceSetup ( _In_ PCFLT_RELATED_OBJECTS  FltObjects,
_In_ FLT_INSTANCE_SETUP_FLAGS  Flags,
_In_ DEVICE_TYPE  VolumeDeviceType,
_In_ FLT_FILESYSTEM_TYPE  VolumeFilesystemType 
)

Definition at line 343 of file nc.c.

◆ NcInstanceTeardownStart()

VOID NcInstanceTeardownStart ( _In_ PCFLT_RELATED_OBJECTS  FltObjects,
_In_ FLT_INSTANCE_TEARDOWN_FLAGS  Flags 
)

Definition at line 907 of file nc.c.

◆ NcNormalizeNameComponentCallback()

NTSTATUS NcNormalizeNameComponentCallback ( _In_ PFLT_INSTANCE  Instance,
_In_ PCUNICODE_STRING  ParentDirectory,
_In_ USHORT  DeviceNameLength,
_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 1958 of file nc.c.

◆ NcNormalizeNameComponentExCallback()

NTSTATUS NcNormalizeNameComponentExCallback ( _In_ PFLT_INSTANCE  Instance,
_In_opt_ PFILE_OBJECT  FileObject,
_In_ PCUNICODE_STRING  ParentDirectory,
_In_ USHORT  DeviceNameLength,
_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 1890 of file nc.c.

◆ NcPostCleanupCallback()

FLT_POSTOP_CALLBACK_STATUS NcPostCleanupCallback ( _Inout_ PFLT_CALLBACK_DATA  Data,
_In_ PCFLT_RELATED_OBJECTS  FltObjects,
_In_opt_ PVOID  CompletionContext,
_In_ FLT_POST_OPERATION_FLAGS  Flags 
)

Definition at line 1184 of file nc.c.

◆ NcPostDirectoryControlCallback()

FLT_POSTOP_CALLBACK_STATUS NcPostDirectoryControlCallback ( _Inout_ PFLT_CALLBACK_DATA  Data,
_In_ PCFLT_RELATED_OBJECTS  FltObjects,
_In_ PVOID  CompletionContext,
_In_ FLT_POST_OPERATION_FLAGS  Flags 
)

Definition at line 1729 of file nc.c.

◆ NcPostFsctlCallback()

FLT_POSTOP_CALLBACK_STATUS NcPostFsctlCallback ( _Inout_ PFLT_CALLBACK_DATA  Data,
_In_ PCFLT_RELATED_OBJECTS  FltObjects,
_When_(Data->Iopb->Parameters.FileSystemControl.Common.FsControlCode==FSCTL_FIND_FILES_BY_SID, _In_) _When_(Data->Iopb->Parameters.FileSystemControl.Common.FsControlCode!=FSCTL_FIND_FILES_BY_SID, _In_opt_) PVOID  CompletionContext,
_In_ FLT_POST_OPERATION_FLAGS  Flags 
)

Definition at line 1358 of file nc.c.

◆ NcPostQueryInformationCallback()

FLT_POSTOP_CALLBACK_STATUS NcPostQueryInformationCallback ( _Inout_ PFLT_CALLBACK_DATA  Data,
_In_ PCFLT_RELATED_OBJECTS  FltObjects,
_In_opt_ PVOID  CompletionContext,
_In_ FLT_POST_OPERATION_FLAGS  Flags 
)

Definition at line 1524 of file nc.c.

◆ NcPreCleanupCallback()

FLT_PREOP_CALLBACK_STATUS NcPreCleanupCallback ( _Unreferenced_parameter_ PFLT_CALLBACK_DATA  Data,
_Unreferenced_parameter_ PCFLT_RELATED_OBJECTS  FltObjects,
_Flt_CompletionContext_Outptr_ PVOID *  CompletionContext 
)

Definition at line 1134 of file nc.c.

◆ NcPreCreateCallback()

FLT_PREOP_CALLBACK_STATUS NcPreCreateCallback ( _Inout_ PFLT_CALLBACK_DATA  Data,
_In_ PCFLT_RELATED_OBJECTS  FltObjects,
_Flt_CompletionContext_Outptr_ PVOID *  CompletionContext 
)

Definition at line 1080 of file nc.c.

◆ NcPreDirectoryControlCallback()

FLT_PREOP_CALLBACK_STATUS NcPreDirectoryControlCallback ( _Inout_ PFLT_CALLBACK_DATA  Data,
_In_ PCFLT_RELATED_OBJECTS  FltObjects,
_Flt_CompletionContext_Outptr_ PVOID *  CompletionContext 
)

Definition at line 1676 of file nc.c.

◆ NcPreFsctlCallback()

FLT_PREOP_CALLBACK_STATUS NcPreFsctlCallback ( _Inout_ PFLT_CALLBACK_DATA  Data,
_In_ PCFLT_RELATED_OBJECTS  FltObjects,
_Flt_CompletionContext_Outptr_ PVOID *  CompletionContext 
)

Definition at line 1267 of file nc.c.

◆ NcPreNetworkQueryCallback()

FLT_PREOP_CALLBACK_STATUS NcPreNetworkQueryCallback ( _Inout_ PFLT_CALLBACK_DATA  Data,
_In_ PCFLT_RELATED_OBJECTS  FltObjects,
_Flt_CompletionContext_Outptr_ PVOID *  CompletionContext 
)

Definition at line 1793 of file nc.c.

◆ NcPreQueryInformationCallback()

FLT_PREOP_CALLBACK_STATUS NcPreQueryInformationCallback ( _Inout_ PFLT_CALLBACK_DATA  Data,
_In_ PCFLT_RELATED_OBJECTS  FltObjects,
_Flt_CompletionContext_Outptr_ PVOID *  CompletionContext 
)

Definition at line 1453 of file nc.c.

◆ NcPreSetInformationCallback()

FLT_PREOP_CALLBACK_STATUS NcPreSetInformationCallback ( _Inout_ PFLT_CALLBACK_DATA  Data,
_In_ PCFLT_RELATED_OBJECTS  FltObjects,
_Flt_CompletionContext_Outptr_ PVOID *  CompletionContext 
)

Definition at line 1587 of file nc.c.

◆ NcUnload()

NTSTATUS NcUnload ( _In_ FLT_FILTER_UNLOAD_FLAGS  Flags)

Definition at line 1024 of file nc.c.

Variable Documentation

◆ Callbacks

CONST FLT_OPERATION_REGISTRATION Callbacks[]

Definition at line 234 of file nc.c.

◆ contextRegistration

const FLT_CONTEXT_REGISTRATION contextRegistration[]
Initial value:
= {
{ FLT_INSTANCE_CONTEXT,
0,
NULL },
{ FLT_STREAMHANDLE_CONTEXT,
0,
NULL },
{ FLT_CONTEXT_END }
}
#define NC_INSTANCE_CONTEXT_TAG
Definition: nc.h:15
#define NC_STREAM_HANDLE__CONTEXT_TAG
Definition: nc.h:26
struct _NC_INSTANCE_CONTEXT NC_INSTANCE_CONTEXT
VOID NcStreamHandleContextClose(_In_ PFLT_CONTEXT Context, _In_ FLT_CONTEXT_TYPE ContextType)
Definition: nccontext.c:65
struct _NC_STREAM_HANDLE_CONTEXT NC_STREAM_HANDLE_CONTEXT
VOID NcInstanceContextClose(_In_ PFLT_CONTEXT Context, _In_ FLT_CONTEXT_TYPE ContextType)
Definition: nccontext.c:31
NcLoadRegistryStringRetry NULL
Definition: ncinit.c:53

Definition at line 277 of file nc.c.

◆ DriverEntry

DRIVER_INITIALIZE DriverEntry

Definition at line 33 of file nc.c.

◆ FilterRegistration

CONST FLT_REGISTRATION FilterRegistration
Initial value:
= {
sizeof( FLT_REGISTRATION ),
FLT_REGISTRATION_VERSION,
0,
NULL,
NULL,
}
VOID NcInstanceTeardownStart(_In_ PCFLT_RELATED_OBJECTS FltObjects, _In_ FLT_INSTANCE_TEARDOWN_FLAGS Flags)
Definition: nc.c:907
NTSTATUS NcUnload(_In_ FLT_FILTER_UNLOAD_FLAGS Flags)
Definition: nc.c:1024
NTSTATUS NcNormalizeNameComponentCallback(_In_ PFLT_INSTANCE Instance, _In_ PCUNICODE_STRING ParentDirectory, _In_ USHORT DeviceNameLength, _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: nc.c:1958
CONST FLT_OPERATION_REGISTRATION Callbacks[]
Definition: nc.c:234
NTSTATUS NcInstanceSetup(_In_ PCFLT_RELATED_OBJECTS FltObjects, _In_ FLT_INSTANCE_SETUP_FLAGS Flags, _In_ DEVICE_TYPE VolumeDeviceType, _In_ FLT_FILESYSTEM_TYPE VolumeFilesystemType)
Definition: nc.c:343
NcLoadRegistryStringRetry NULL
Definition: ncinit.c:53
const FLT_CONTEXT_REGISTRATION contextRegistration[]
Definition: nc.c:277
NTSTATUS NcGenerateFileNameCallback(_In_ PFLT_INSTANCE Instance, _In_ PFILE_OBJECT FileObject, _In_opt_ PFLT_CALLBACK_DATA Data, _In_ FLT_FILE_NAME_OPTIONS NameOptions, _Out_ PBOOLEAN CacheFileNameInformation, _Inout_ PFLT_NAME_CONTROL FileName)
Definition: nc.c:1836
NTSTATUS NcInstanceQueryTeardown(_In_ PCFLT_RELATED_OBJECTS FltObjects, _In_ FLT_INSTANCE_QUERY_TEARDOWN_FLAGS Flags)
Definition: nc.c:868

Definition at line 304 of file nc.c.

◆ NcGlobalData

NC_GLOBAL_DATA NcGlobalData

Definition at line 335 of file nc.c.

Social Network


Services Overview

Architect, implement and test file system filter drivers for a wide range of functionality. We can offer several levels of assistance to meet your specific.

Contact Us

You are welcome to contact us for salse or partnership.

Sales: sales@easefilter.com
Support: support@easefilter.com
Info: info@easefilter.com