FilterUnloadCallback 例程被定义成:
typedef NTSTATUS
(*PFLT_FILTER_UNLOAD_CALLBACK) (
FLT_FILTER_UNLOAD_FLAGS Flags
);
FilterUnloadCallback 例程有一个输入参数,Flags,它可以是NULL或FLTFL_FILTER_UNLOAD_MANDATORY,FLTFL_FILTER_UNLOAD_MANDATORY指明卸载操作是托管的。
一个微过滤驱动的 FilterUnloadCallback 例程必须执行以下步骤:
1.关门所有内核模式通信服务端口句柄(kernel-mode communication server port handles)
2.调用FltUnregisterFilter 移除注册微过滤驱动
3.执行清理全局变量
4.返回一个正确的状态值
这部分包括:
关闭通信服务端口
移除注册微过滤
执行全局变量清除
返回状态从FilterUnloadCallback 例程