注册预操作和后操作回调例程
若要注册操作前回调例程和操作后回调例程,微筛选器驱动程序在其 DriverEntry 例程中对 FltRegisterFilter 进行单个调用。 对于 FltRegisterFilter 中的 Registration 参数,微筛选器驱动程序将指针传递到FLT_REGISTRATION结构。 此结构的 OperationRegistration 成员包含指向 FLT_OPERATION_REGISTRATION 结构的数组的指针,该指针适用于微筛选器驱动程序必须筛选的每种 I/O 操作类型。
数组中的每个FLT_OPERATION_REGISTRATION结构(最后一个结构除外)都包含以下信息:
操作的主要函数代码。 有关 I/O 操作及其特定于请求类型的参数的信息,请参阅 FLT_PARAMETERS 。
对于 (IRP_MJ_READ和IRP_MJ_WRITE) 的读取和写入操作,一组标志指定是忽略缓存 I/O 还是对基于 IRP 的 I/O 操作忽略分页 I/O 或两者
最多一个操作前回调例程和一个操作后回调例程的入口点
数组中的最后一个元素必须是 {IRP_MJ_OPERATION_END}。
以下代码示例取自扫描程序示例微筛选器驱动程序,显示了FLT_OPERATION_REGISTRATION结构的数组。 扫描程序示例微筛选器驱动程序为IRP_MJ_CREATE和预操作回调例程注册预操作和操作后回调例程,以便IRP_MJ_CLEANUP和IRP_MJ_WRITE操作。
const FLT_OPERATION_REGISTRATION Callbacks[] = {
{IRP_MJ_CREATE,
0,
ScannerPreCreate,
ScannerPostCreate},
{IRP_MJ_CLEANUP,
0,
ScannerPreCleanup,
NULL},
{IRP_MJ_WRITE,
0,
ScannerPreWrite,
NULL},
{IRP_MJ_OPERATION_END}
};
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈