WDK Mini Filter Example
ncdirnotify.c File Reference
#include "nc.h"

Go to the source code of this file.

Data Structures

struct  _NC_NOTIFY_REQUEST_CONTEXT
 

Macros

#define NcRemoveTrailingSlashIfPresent(US)
 

Typedefs

typedef enum _NC_NOTIFY_REQUEST_TYPE NC_NOTIFY_REQUEST_TYPE
 
typedef struct _NC_NOTIFY_REQUEST_CONTEXT NC_NOTIFY_REQUEST_CONTEXT
 
typedef struct _NC_NOTIFY_REQUEST_CONTEXTPNC_NOTIFY_REQUEST_CONTEXT
 

Enumerations

enum  _NC_NOTIFY_REQUEST_TYPE { NotifyUserRequest = 0, NotifyShadowRequest, NotifyMappingRequest }
 

Functions

NTSTATUS NcAllocateNotifyRequestContext (_In_ PNC_STREAM_HANDLE_CONTEXT HandleContext, _In_ PFILE_OBJECT FileObject, _In_ NC_NOTIFY_REQUEST_TYPE RequestType, _In_ PFLT_CALLBACK_DATA Request, _Out_ PNC_NOTIFY_REQUEST_CONTEXT *NotifyRequestContext)
 
VOID NcFreeNotifyRequestContext (_In_ PNC_NOTIFY_REQUEST_CONTEXT NotifyRequestContext)
 
FLT_POSTOP_CALLBACK_STATUS NcPostNotifyDirectorySafe (_Inout_ PFLT_CALLBACK_DATA Data, _In_ PCFLT_RELATED_OBJECTS FltObjects, _In_ PVOID CompletionContext, _In_ FLT_POST_OPERATION_FLAGS Flags)
 
VOID NcPostNotifyDirectoryReal (_Inout_ PFLT_CALLBACK_DATA Data, _In_ PVOID CompletionContext)
 
NTSTATUS NcDirNotifyTranslateBuffers (_In_ PNC_INSTANCE_CONTEXT InstanceContext, _In_ BOOLEAN IgnoreCase, _In_ PUNICODE_STRING UserRequestName, _In_ PUNICODE_STRING OpenedName, _In_reads_bytes_(InputBufferLength) PFILE_NOTIFY_INFORMATION InputSystemBuffer, _Out_writes_bytes_to_(OutputBufferLength, *OutputBufferWritten) PFILE_NOTIFY_INFORMATION OutputUserBuffer, _In_ ULONG InputBufferLength, _In_ ULONG OutputBufferLength, _Out_ PULONG InputBufferConsumed, _Out_ PULONG OutputBufferWritten, _In_ BOOLEAN ReturnRealMappingPaths, _In_ BOOLEAN ReturnInMappingOnly)
 
NTSTATUS NcBuildSubNotifyRequest (_In_ PFLT_CALLBACK_DATA PrimaryRequest, _In_ PFLT_INSTANCE Instance, _In_ PFILE_OBJECT FileObject, _In_ PNC_STREAM_HANDLE_CONTEXT HandleContext, _In_ NC_NOTIFY_REQUEST_TYPE RequestType, _Out_ PFLT_CALLBACK_DATA *SubRequest, _Out_ PNC_NOTIFY_REQUEST_CONTEXT *NotifyRequestContext)
 
VOID NcCleanupSubNotifyRequest (_In_ PFLT_CALLBACK_DATA SubRequest)
 
NTSTATUS NcGetDestinationNotifyBuffer (_Inout_ PFLT_CALLBACK_DATA Data, _Outptr_result_bytebuffer_maybenull_(*BufferSize) PVOID *DestBuffer, _Out_ PULONG BufferSize)
 
_Pre_satisfies_ LockHeld _Requires_lock_held_ (_Global_critical_region_)
 
FLT_PREOP_CALLBACK_STATUS NcPreNotifyDirectory (_Inout_ PFLT_CALLBACK_DATA Data, _In_ PCFLT_RELATED_OBJECTS FltObjects, _Flt_CompletionContext_Outptr_ PVOID *CompletionContext)
 
FLT_POSTOP_CALLBACK_STATUS NcPostNotifyDirectory (_Inout_ PFLT_CALLBACK_DATA Data, _In_ PCFLT_RELATED_OBJECTS FltObjects, _In_ PVOID CompletionContext, _In_ FLT_POST_OPERATION_FLAGS Flags)
 
VOID NcReissueNotifyRequestWorkerRoutine (_In_ PFLT_GENERIC_WORKITEM WorkItem, _In_ PFLT_FILTER Filter, _In_ PVOID RequestPtr)
 
VOID NcCloseHandleWorkerRoutine (_In_ PFLT_GENERIC_WORKITEM WorkItem, _In_ PFLT_FILTER Filter, _In_ PVOID HandlePtr)
 
VOID NcNotifyCancelCallback (_In_ PFLT_CALLBACK_DATA Data)
 
NTSTATUS NcStreamHandleContextNotCreate (_Out_ PNC_DIR_NOT_CONTEXT Context)
 
VOID NcStreamHandleContextNotCleanup (_In_ PNC_STREAM_HANDLE_CONTEXT HandleContext)
 
VOID NcStreamHandleContextNotClose (_In_ PNC_DIR_NOT_CONTEXT Context)
 

Macro Definition Documentation

◆ NcRemoveTrailingSlashIfPresent

#define NcRemoveTrailingSlashIfPresent (   US)
Value:
FLT_ASSERT( (US)->Length > 0 ); \
if ( (US)->Buffer[(US)->Length/sizeof(WCHAR) - 1] == NC_SEPARATOR) { \
(US)->Length -= sizeof(WCHAR); \
}
_In_ PLARGE_INTEGER _In_ ULONG Length
#define NC_SEPARATOR
Definition: nc.h:32
FLT_ASSERT(IS_MY_CONTROL_DEVICE_OBJECT(DeviceObject))
_In_ BOOLEAN _Out_ PFILE_BASIC_INFORMATION Buffer

Typedef Documentation

◆ NC_NOTIFY_REQUEST_CONTEXT

◆ NC_NOTIFY_REQUEST_TYPE

◆ PNC_NOTIFY_REQUEST_CONTEXT

Enumeration Type Documentation

◆ _NC_NOTIFY_REQUEST_TYPE

Enumerator
NotifyUserRequest 
NotifyShadowRequest 
NotifyMappingRequest 

Definition at line 31 of file ncdirnotify.c.

Function Documentation

◆ _Requires_lock_held_()

_Pre_satisfies_ LockHeld _Requires_lock_held_ ( _Global_critical_region_  )

Definition at line 114 of file ncdirnotify.c.

◆ NcAllocateNotifyRequestContext()

NTSTATUS NcAllocateNotifyRequestContext ( _In_ PNC_STREAM_HANDLE_CONTEXT  HandleContext,
_In_ PFILE_OBJECT  FileObject,
_In_ NC_NOTIFY_REQUEST_TYPE  RequestType,
_In_ PFLT_CALLBACK_DATA  Request,
_Out_ PNC_NOTIFY_REQUEST_CONTEXT NotifyRequestContext 
)

Definition at line 639 of file ncdirnotify.c.

◆ NcBuildSubNotifyRequest()

NTSTATUS NcBuildSubNotifyRequest ( _In_ PFLT_CALLBACK_DATA  PrimaryRequest,
_In_ PFLT_INSTANCE  Instance,
_In_ PFILE_OBJECT  FileObject,
_In_ PNC_STREAM_HANDLE_CONTEXT  HandleContext,
_In_ NC_NOTIFY_REQUEST_TYPE  RequestType,
_Out_ PFLT_CALLBACK_DATA *  SubRequest,
_Out_ PNC_NOTIFY_REQUEST_CONTEXT NotifyRequestContext 
)

Definition at line 744 of file ncdirnotify.c.

◆ NcCleanupSubNotifyRequest()

VOID NcCleanupSubNotifyRequest ( _In_ PFLT_CALLBACK_DATA  SubRequest)

Definition at line 892 of file ncdirnotify.c.

◆ NcCloseHandleWorkerRoutine()

VOID NcCloseHandleWorkerRoutine ( _In_ PFLT_GENERIC_WORKITEM  WorkItem,
_In_ PFLT_FILTER  Filter,
_In_ PVOID  HandlePtr 
)

Definition at line 2970 of file ncdirnotify.c.

◆ NcDirNotifyTranslateBuffers()

NTSTATUS NcDirNotifyTranslateBuffers ( _In_ PNC_INSTANCE_CONTEXT  InstanceContext,
_In_ BOOLEAN  IgnoreCase,
_In_ PUNICODE_STRING  UserRequestName,
_In_ PUNICODE_STRING  OpenedName,
_In_reads_bytes_(InputBufferLength) PFILE_NOTIFY_INFORMATION  InputSystemBuffer,
_Out_writes_bytes_to_(OutputBufferLength, *OutputBufferWritten) PFILE_NOTIFY_INFORMATION  OutputUserBuffer,
_In_ ULONG  InputBufferLength,
_In_ ULONG  OutputBufferLength,
_Out_ PULONG  InputBufferConsumed,
_Out_ PULONG  OutputBufferWritten,
_In_ BOOLEAN  ReturnRealMappingPaths,
_In_ BOOLEAN  ReturnInMappingOnly 
)

◆ NcFreeNotifyRequestContext()

VOID NcFreeNotifyRequestContext ( _In_ PNC_NOTIFY_REQUEST_CONTEXT  NotifyRequestContext)

Definition at line 707 of file ncdirnotify.c.

◆ NcGetDestinationNotifyBuffer()

NTSTATUS NcGetDestinationNotifyBuffer ( _Inout_ PFLT_CALLBACK_DATA  Data,
_Outptr_result_bytebuffer_maybenull_ *BufferSize PVOID *  DestBuffer,
_Out_ PULONG  BufferSize 
)

Definition at line 923 of file ncdirnotify.c.

◆ NcNotifyCancelCallback()

VOID NcNotifyCancelCallback ( _In_ PFLT_CALLBACK_DATA  Data)

Definition at line 3169 of file ncdirnotify.c.

◆ NcPostNotifyDirectory()

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

Definition at line 2824 of file ncdirnotify.c.

◆ NcPostNotifyDirectoryReal()

VOID NcPostNotifyDirectoryReal ( _Inout_ PFLT_CALLBACK_DATA  Data,
_In_ PVOID  CompletionContext 
)

Definition at line 2179 of file ncdirnotify.c.

◆ NcPostNotifyDirectorySafe()

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

Definition at line 2777 of file ncdirnotify.c.

◆ NcPreNotifyDirectory()

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

Definition at line 1067 of file ncdirnotify.c.

◆ NcReissueNotifyRequestWorkerRoutine()

VOID NcReissueNotifyRequestWorkerRoutine ( _In_ PFLT_GENERIC_WORKITEM  WorkItem,
_In_ PFLT_FILTER  Filter,
_In_ PVOID  RequestPtr 
)

Definition at line 2909 of file ncdirnotify.c.

◆ NcStreamHandleContextNotCleanup()

VOID NcStreamHandleContextNotCleanup ( _In_ PNC_STREAM_HANDLE_CONTEXT  HandleContext)

Definition at line 3325 of file ncdirnotify.c.

◆ NcStreamHandleContextNotClose()

VOID NcStreamHandleContextNotClose ( _In_ PNC_DIR_NOT_CONTEXT  Context)

Definition at line 3423 of file ncdirnotify.c.

◆ NcStreamHandleContextNotCreate()

NTSTATUS NcStreamHandleContextNotCreate ( _Out_ PNC_DIR_NOT_CONTEXT  Context)

Definition at line 3276 of file ncdirnotify.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