📄 ctxproc.h
字号:
/*++
Copyright (c) 1999 - 2002 Microsoft Corporation
Module Name:
CtxProc.h
Abstract:
This is the header file defining the functions of the kernel mode
filter driver implementing the context sample.
Environment:
Kernel mode
--*/
//
// Functions implemented in operations.c
//
FLT_PREOP_CALLBACK_STATUS
CtxPreCreate (
IN OUT PFLT_CALLBACK_DATA Cbd,
IN PCFLT_RELATED_OBJECTS FltObjects,
OUT PVOID *CompletionContext
);
FLT_POSTOP_CALLBACK_STATUS
CtxPostCreate (
IN OUT PFLT_CALLBACK_DATA Cbd,
IN PCFLT_RELATED_OBJECTS FltObjects,
IN PVOID CbdContext,
IN FLT_POST_OPERATION_FLAGS Flags
);
FLT_PREOP_CALLBACK_STATUS
CtxPreCleanup (
IN OUT PFLT_CALLBACK_DATA Cbd,
IN PCFLT_RELATED_OBJECTS FltObjects,
OUT PVOID *CompletionContext
);
FLT_PREOP_CALLBACK_STATUS
CtxPreClose (
IN OUT PFLT_CALLBACK_DATA Cbd,
IN PCFLT_RELATED_OBJECTS FltObjects,
OUT PVOID *CompletionContext
);
FLT_PREOP_CALLBACK_STATUS
CtxPreSetInfo (
IN OUT PFLT_CALLBACK_DATA Cbd,
IN PCFLT_RELATED_OBJECTS FltObjects,
OUT PVOID *CompletionContext
);
FLT_POSTOP_CALLBACK_STATUS
CtxPostSetInfo (
IN OUT PFLT_CALLBACK_DATA Cbd,
IN PCFLT_RELATED_OBJECTS FltObjects,
IN PVOID CbdContext,
IN FLT_POST_OPERATION_FLAGS Flags
);
//
// Functions implemented in context.c
//
NTSTATUS
CtxFindOrCreateStreamContext (
IN PFLT_CALLBACK_DATA Cbd,
IN BOOLEAN CreateIfNotFound,
OUT PCTX_STREAM_CONTEXT *StreamContext,
OUT PBOOLEAN ContextCreated OPTIONAL
);
NTSTATUS
CtxCreateStreamContext (
OUT PCTX_STREAM_CONTEXT *StreamContext
);
NTSTATUS
CtxUpdateNameInStreamContext (
IN PUNICODE_STRING DirectoryName,
OUT PCTX_STREAM_CONTEXT StreamContext
);
NTSTATUS
CtxCreateOrReplaceStreamHandleContext (
IN PFLT_CALLBACK_DATA Cbd,
IN BOOLEAN ReplaceIfExists,
OUT PCTX_STREAMHANDLE_CONTEXT *StreamHandleContext,
OUT PBOOLEAN ContextReplaced OPTIONAL
);
NTSTATUS
CtxCreateStreamHandleContext (
OUT PCTX_STREAMHANDLE_CONTEXT *StreamHandleContext
);
NTSTATUS
CtxUpdateNameInStreamHandleContext (
IN PUNICODE_STRING DirectoryName,
OUT PCTX_STREAMHANDLE_CONTEXT StreamHandleContext
);
//
// Functions implemented in support.c
//
NTSTATUS
CtxAllocateUnicodeString (
PUNICODE_STRING String
);
VOID
CtxFreeUnicodeString (
PUNICODE_STRING String
);
//
// Resource support
//
FORCEINLINE
PERESOURCE
CtxAllocateResource (
VOID
)
{
return ExAllocatePoolWithTag( NonPagedPool,
sizeof( ERESOURCE ),
CTX_RESOURCE_TAG );
}
FORCEINLINE
VOID
CtxFreeResource (
IN PERESOURCE Resource
)
{
ExFreePoolWithTag( Resource,
CTX_RESOURCE_TAG );
}
FORCEINLINE
VOID
CtxAcquireResourceExclusive (
IN PERESOURCE Resource
)
{
ASSERT(KeGetCurrentIrql() <= APC_LEVEL);
ASSERT(ExIsResourceAcquiredExclusiveLite(Resource) ||
!ExIsResourceAcquiredSharedLite(Resource));
KeEnterCriticalRegion();
(VOID)ExAcquireResourceExclusiveLite( Resource, TRUE );
}
FORCEINLINE
VOID
CtxAcquireResourceShared (
IN PERESOURCE Resource
)
{
ASSERT(KeGetCurrentIrql() <= APC_LEVEL);
KeEnterCriticalRegion();
(VOID)ExAcquireResourceSharedLite( Resource, TRUE );
}
FORCEINLINE
VOID
CtxReleaseResource (
IN PERESOURCE Resource
)
{
ASSERT(KeGetCurrentIrql() <= APC_LEVEL);
ASSERT(ExIsResourceAcquiredExclusiveLite(Resource) ||
ExIsResourceAcquiredSharedLite(Resource));
ExReleaseResourceLite(Resource);
KeLeaveCriticalRegion();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -