FltSendMessage 超时时间相关问题

之前做基于minifilter的windows文件过滤驱动时,会碰到fltsendmessage超时问题,查阅资料后特此记录下

NTSTATUS FLTAPI FltSendMessage([in]            PFLT_FILTER    Filter,[in]            PFLT_PORT      *ClientPort,[in]            PVOID          SenderBuffer,[in]            ULONG          SenderBufferLength,[out, optional] PVOID          ReplyBuffer,[in, out]       PULONG         ReplyLength,[in, optional]  PLARGE_INTEGER Timeout
);

[in, optional] Timeout

A pointer to a timeout value that specifies the total absolute or relative length of time, in units of 100 nanoseconds, for which the caller can be put into a wait state until the message is received by the user-mode application and until it receives a reply (if one is expected).

A positive value specifies an absolute time, relative to January 1, 1601. A negative value specifies an interval relative to the current time. Set to NULL if the caller can be put into a wait state indefinitely.

FltSendMessage sends a message to a user-mode application on behalf of a minifilter driver or a minifilter driver instance.

If the application calls FilterGetMessage to get the message before the minifilter driver calls FltSendMessage to send it, the message is delivered immediately. This is typically the case when the application calls FilterGetMessage from inside a message loop.

Otherwise, if an application has not called to get a message, the minifilter driver is put into a wait state as follows:

  • If Timeout is nonzero and the application calls FilterGetMessage before the Timeout interval expires, the message is delivered.

  • If Timeout is nonzero and the application doesn't call FilterGetMessage before the Timeout interval expires, the message is not delivered, and FltSendMessage returns STATUS_TIMEOUT. (Note: STATUS_TIMEOUT is a success code.)

  • If Timeout is zero, the minifilter driver is put into a wait state indefinitely. When the application calls FilterGetMessage, the message is delivered.

After the message is delivered, if ReplyBuffer is NULLFltSendMessage returns STATUS_SUCCESS.

Otherwise, if ReplyBuffer is not NULL, the minifilter driver is put into a wait state as follows:

  • If Timeout is nonzero and the application calls FilterReplyMessage before the Timeout interval expires, the minifilter driver receives the reply, and FltSendMessage returns STATUS_SUCCESS.

  • If Timeout is nonzero and the minifilter driver does not receive a reply before the Timeout interval expires, FltSendMessage returns STATUS_TIMEOUT. (Note: STATUS_TIMEOUT is a success code.)

  • If Timeout is zero when the minifilter driver is waiting for the reply, the minifilter driver is put into a wait state indefinitely. When the application calls FilterReplyMessage, the minifilter driver receives the reply, and FltSendMessage returns STATUS_SUCCESS.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/16465.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HCIP的学习(22)

BGP优化 [r1-bgp]peer 12.0.0.2 default-route-advertise ---BGP下放缺省路由,无论本地的路由表中是否存在缺省路由,都会向对等体下发一条下一跳为本地的缺省路由,从而减少网络中路由数量,节省对等体的设备资源 BGP协议优先级 缺…

Keras深度学习框架第二十九讲:在自定义训练循环中应用KerasTuner超参数优化

1、简介 在KerasTuner中,HyperModel类提供了一种方便的方式来在可重用对象中定义搜索空间。你可以通过重写HyperModel.build()方法来定义和进行模型的超参数调优。为了对训练过程进行超参数调优(例如,通过选择适当的批处理大小、训练轮数或数…

mysql中连接的原理

大家好。我们在日常开发中经常会遇到多表联查的场景。今天我来为大家讲一下我们在进行多表联查时,表与表之间连接的原理。 为了方便讲解,我们先创建两个表,并填充一些数据。 如图所示,我创建了t1、t2两张表,每张表中…

四大运营商大流量卡测评,手机卡,物联网卡,纯流量卡

买大流量卡,看4个方面 优惠时间。有的只是12个月,24个月有优惠【可以先用一年,然后注销】通用流量。而不是定向流量全国通话分钟数。而不是亲情通话分钟数销户方式。是否支持随时销户,异地销户,线上销户,额…

火箭升空AR虚拟三维仿真演示满足客户的多样化场景需求

在航空工业的协同研发领域,航空AR工业装配系统公司凭借前沿的AR增强现实技术,正引领一场革新。通过将虚拟信息无缝融入实际环境中,我们为工程师、设计师和技术专家提供了前所未有的共享和审查三维模型的能力,极大地提升了研发效率…

stream-基本流

定义 一般流中:都是以Object对象存储的,基本流中是将数据作为基本类型存储的,空间占用率更低,效率更高基本流只有三种:int、long、double基本流也有一些特有的方法 // 基本流 有三种 IntStream LongStream DoubleStrea…

使用Prometheus组件node_exporter采集linux系统的指标数据(包括cpu/内存/磁盘/网络)

一、背景 Linux系统的基本指标包括cpu、内存、磁盘、网络等,其中网络可以细分为带宽进出口流量、连接数和tcp监控等。 本文使用Prometheus组件node_exporter采集,存储在promethues,展示在grafana面板。 二、安装node_exporter 1、下载至本…

【数学建模】碎纸片的拼接复原

2013高教社杯全国大学生数学建模竞赛B题 问题一模型一模型二条件设立思路 问题求解 问题一 已知 d i d_i di​为第 i i i张图片图片的像素矩阵 已知 d i d_i di​都是 n ∗ m n*m n∗m二维矩阵 假设有 N N N张图片 模型一 我们认为对应位置像素匹配为 d i [ j ] [ 1 ] d k…

C++:单例模型、强制类型转换

目录 特殊类的设计不能被拷贝的类实现一个类,只能在堆上实例化的对象实现一个类,只能在栈上实例化的对象不能被继承的类 单例模式饿汉模式懒汉模式饿汉模式与懒汉模式的对比饿汉优缺点懒汉优缺点懒汉模式简化版本(C11) 单例释放问…

索引失效的场景有哪些?

一.概念 索引失效是指在查询时,数据库引擎无法使用索引来加速查询,从而导致查询性能下降。常见的索引失效原因有以下几种: 索引列没有被包含在查询条件中。如果查询条件中没有包含索引列,那么数据库引擎无法使用索引来加速查询。…

机器人--路径--bezier

教学文章 链接1 链接2--逼近拟合 路径 路径由控制点定义,这些控制点将路径描述为一系列链接的线段。 路径控制点 将路径控制点连接起来,就是路径。 Bezier 曲线的初衷就是用尽可能少的数据表示出复杂的图形。 皮埃尔贝塞尔的想法是,在设…

域提权漏洞系列分析-Zerologon漏洞分析

2020年08⽉11⽇,Windows官⽅发布了 NetLogon 特权提升漏洞的⻛险通告,该漏洞编号为CVE-2020-1472,漏 洞等级:严重,漏洞评分:10分,该漏洞也称为“Zerologon”,2020年9⽉11⽇&#xff…

WinRAR技巧:如何让多个文件压缩到更小!?

但我们要压缩多个文件的时候,可能会出现压缩后的体积仍然过大,或者需要将文件再压缩到更小,这种情况下,小编之前建议过大家将文件压缩成7z格式就会更加压缩体积。今天分享另一个技巧,帮助我们将多个文件压缩到更小。 …

Istio ICA考试之路---4-3

Istio ICA考试之路---4-3 1. 题目2. 解题2.1 获取模板2.2 修改yaml 1. 题目 Using Kubernetes context cluster-2 Create an authorization policy named "allow-get" in the namespace policy-3, allowing all GET requests from workloads in the default names…

【网络安全】勒索软件ShrinkLocker使用 windows系统安全工具BitLocker实施攻击

文章目录 威胁无不不在BitLocker 概述如何利用BitLocker进行攻击如何降低影响Win11 24H2 装机默认开启 BitLocker推荐阅读 威胁无不不在 网络攻击的形式不断发展,即便是合法的 Windows 安全功能也会成为黑客的攻击工具。 卡巴斯基实验室专家 发现 使用BitLocker的…

以不变应万变:在复杂世界中保持初心,坚持原则

在这个日新月异、瞬息万变的世界里,人情世故也显得尤为复杂。我们常常会因为忙碌的生活、工作压力以及人际关系的纠葛而感到迷茫和疲惫。在面对这些复杂局面的同时,如何保持内心的平静,坚持自己的原则,并在变幻莫测的环境中持续成…

ClickHouse架构概览 —— Clickhouse 架构篇(一)

文章目录 前言Clickhouse 架构简介Clickhouse 的核心抽象列和字段数据类型块表 Clickhouse 的运作过程数据插入过程数据查询过程数据更新和删除过程 前言 本文介绍了ClickHouse的整体架构,并对ClickHouse中的一些重要的抽象对象进行了分析。然后此基础上&#xff0…

乘风破浪,创维汽车旗舰店落户安徽

2024年5月19日,创维汽车宣城家奇体验中心盛大开业。宣城市委办公室副主任师典雅、市投资促进局副局长金崇学、经开区管委会副主任汤晓峰、宣城市通信局局长梁登峰、创维汽车战区总经理刘俊、创维汽车大区总监王大明等人出席此次开业盛典,共同见证了创维汽…

内网穿透实现公网访问自己搭建的Ollma架构的AI服务器

内网穿透实现公网访问自己搭建的Ollma架构的AI服务器 [2024年5月9号我发布一个博文关于搭建本地AI服务器的博文][https://blog.csdn.net/weixin_41905135/article/details/138588043?spm1001.2014.3001.5501],今天我们内网穿透实现从公网访问我的本地AI服务器&…

Julia Ide Neptune

一 pkg> add Neptune julia> using Neptune julia> Neptune.run() 二 pkg> add Pluto julia> import Pluto julia> Pluto.run() 主要是装IJulia总报错,索性找了如上替代品。