news 2025/12/30 12:02:58

cfapi 入门实战(四):OnFetchData 与 CfExecute:真正的执行入口

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
cfapi 入门实战(四):OnFetchData 与 CfExecute:真正的执行入口

在 CFAPI 的学习过程中,大多数人会很快接触到
CF_CALLBACK_TYPE_FETCH_DATA → OnFetchData
却长期搞不清一个核心问题:

OnFetchData 到底是谁执行的?

答案并不在你的代码里,而在一个被 CFAPI 隐藏起来的执行入口

CfExecute

一、先给结论(重要)

CFAPI 并不是“事件回调模型”,而是“系统驱动执行模型”。

  • 你只负责:

    • 注册 SyncRoot

    • 注册 Callback

  • 真正执行 Cloud Files 逻辑的入口是 CfExecute

  • OnFetchData 只是 CfExecute 分发出来的一个执行分支


二、CFAPI 的真实执行链路

文件访问到 OnFetchData 的完整路径

用户 / 应用访问文件 ↓ I/O Manager ↓ NTFS + Filter Manager ↓ cldflt.sys(Cloud Files Filter) ↓ CFAPI Runtime ↓ CfExecute ←【执行入口】 ↓ CF_CALLBACK_TYPE_FETCH_DATA ↓ OnFetchData

关键点:

  • ❌ OnFetchData不是你主动调用

  • ❌ 也不是 CreateFile 直接调用

  • 是 CfExecute 在执行 Cloud Files 语义时分发


三、CfExecute 是什么?为什么你看不到?

1. CfExecute 的角色

CfExecute 是 CFAPI 内部的“执行调度器”,负责:

  • 判定当前文件操作是否属于 Cloud Files

  • 选择合适的 Callback 类型

  • 调度并发与线程

  • 驱动整个占位符生命周期

2. 为什么 API 中没有 CfExecute?

因为:

  • 不属于 Provider 可控范围

  • 由系统在内核 / Runtime 层自动调用

  • 目的是保证文件系统一致性

你只需要通过:

CfConnectSyncRoot(...)

把自己“挂”到 CfExecute 上。

四、CfConnectSyncRoot 做了什么(本质)

CfConnectSyncRoot( SyncRootPath, CallbackMappings, ProviderContext, Flags, out ConnectionKey );

这一步的本质是:

  • 告诉 CFAPI Runtime:

    • “这个路径下的 Cloud Files 由我负责”

    • “当 CfExecute 执行到这里时,用这些 Callback”

没有这一步:

  • CfExecute 不会路由到你

  • OnFetchData 永远不会被调用

五、OnFetchData 什么时候会被 CfExecute 分发?

触发条件(同时满足)

  1. 文件是占位符(Placeholder)

  2. 文件当前状态需要内容数据

  3. 当前操作触及文件内容

满足后:

CfExecute → CF_CALLBACK_TYPE_FETCH_DATA → OnFetchData

常见触发行为

行为是否触发
ReadFile
Copy 文件
Explorer 打开
只读取属性
FILE_FLAG_OPEN_REPARSE_POINT
完整 Hydrated 文件

六、为什么“CreateFile 看起来触发了 OnFetchData”?

这是你之前反复遇到的问题,本质原因在 CfExecute。

原因拆解

  • CreateFile本身 ≠ Fetch

  • 但:

    • Explorer 会在 CreateFile 后做探测性 Read

    • 某些 Flag 会触发缓冲读取

  • CfExecute 判断:需要内容数据

  • → 分发 FetchData

所以现象是:

你以为是 CreateFile 触发,实际上是后续的隐式 Read 触发


七、OnFetchData 的执行语义(非常关键)

OnFetchData 并不等于“下载文件”

它的真实语义是:

“请提供 [Offset, Offset + Length) 这段数据”

因此:

  • Fetch 可能:

    • 多次

    • 不连续

    • 并发

  • Offset 可能不是 0

  • Length 不等于文件大小


八、OnFetchData 的标准处理闭环

正确的执行顺序

OnFetchData 被 CfExecute 分发 ↓ 解析 Offset / Length ↓ 从云端或缓存读取对应数据 ↓ CfWriteFile 写入指定 Offset ↓ CfCompleteFetchData(HRESULT.S_OK)

如果漏掉最后一步?

  • CfExecute 认为请求未完成

  • 文件访问卡死

  • Explorer 无响应


九、CfExecute 下的并发与线程模型

你必须接受的事实

  • CfExecute:

    • 多线程

    • 并发

    • 可重入

  • 同一文件:

    • 可能多个 Fetch 同时发生

Provider 的要求

  • OnFetchData:

    • 必须线程安全

    • 不要长时间阻塞

    • 支持 Range 下载


十、统一理解(工程师视角)

CfExecute 是 CFAPI 的“隐形主循环”,
OnFetchData 是它在执行“文件内容请求”时分发出来的一个回调。

你不是在“监听事件”,
而是在参与 Windows 文件系统的一次执行流程


十一、一句话总结

  • CfExecute 决定“什么时候执行”

  • OnFetchData 决定“如何给数据”

  • Provider 只是被动参与系统执行

只要你用这个模型去理解 CFAPI,
你前面遇到的Fetch 乱触发、句柄问题、卡死问题,都会自然对上。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/27 9:50:59

14、Linux与Windows环境下NFS和NIS的使用指南

Linux与Windows环境下NFS和NIS的使用指南 1. NFS协议概述 NFS(Network File System)是原生的UNIX协议,允许UNIX机器通过网络共享驱动器,它与微软的SMB协议有部分功能相似,但更为简单,不包含认证和打印功能。认证由UNIX(或Linux)主机处理,打印功能由lpr和lpd处理。 …

作者头像 李华
网站建设 2025/12/28 10:22:45

15、Linux与Windows系统集成:NIS、FTP及Telnet配置指南

Linux与Windows系统集成:NIS、FTP及Telnet配置指南 在当今的网络环境中,Linux和Windows系统的集成是一个常见且重要的需求。本文将详细介绍NIS(网络信息服务)、FTP(文件传输协议)和Telnet在Linux和Windows系统中的配置与使用,帮助你更好地实现系统间的协同工作。 NIS相…

作者头像 李华
网站建设 2025/12/19 19:54:02

提升团队协作效率:用LobeChat搭建统一AI助手平台

提升团队协作效率:用LobeChat搭建统一AI助手平台 在企业加速智能化转型的今天,AI已经不再是实验室里的“黑科技”,而是真正走进了日常办公场景。越来越多的团队开始尝试使用大语言模型(LLM)辅助写作、编程、客户服务和…

作者头像 李华
网站建设 2025/12/27 3:30:43

应用层|低空应用安全的 “精工锻造者”,中科数测以多工具矩阵赋能应用从开发到运维的全周期安全

从无人系统管理平台的精准调度,到空中交通管制系统的高效指挥,再到低空飞行监控系统的实时预警,应用层是低空经济价值交付的“终端窗口”,其安全直接决定了用户体验的优劣与业务价值的最终实现。中科数测整合固件检测工具、协议模…

作者头像 李华
网站建设 2025/12/27 3:11:35

横观水力压裂模型:从 PDE 建模到 Comsol 模拟

横观水力压裂模型 pde建模 横观各向同性介质水力压裂裂纹扩展模型 使用comsol软件实现相场法模拟裂纹扩展 均基于断裂力学理论 模拟单边拉裂纹受拉伸荷载作用和受剪切荷载作用 考虑初始地应力场作用下裂纹扩展模拟 瞬态水力压裂裂隙扩展 包括文章和模型在地质工程领域&#xff…

作者头像 李华
网站建设 2025/12/28 7:03:30

值得关注的人形机器人公司盘点,智元AGIBOT以卓越实力登顶

随着AI大模型与柔性驱动技术的深度融合,人形机器人正逐渐走向规模商业化,在服务、工业、文娱等场景实现阵阵落地。当前行业呈现“技术智能化、场景多元化、生态一体化”三大趋势,一批具备核心技术与落地能力的企业脱颖而出,以下5 …

作者头像 李华