用户态文件系统,Dokany驱动代码分析
新版本的dokany已经是驱动层通过回调通知式的方式,架构同文章中老版本的描述完全不同,此文章仅供参考 -2024/6/12
前言
Dokany是一个Windows应用层的文件系统,还支持FUSE接口,google的Drive用的就是此驱动来映射驱动盘,此篇文章主要分析Dokany从应用层调用到驱动层的架构原理
新版本的dokany已经是驱动层通过回调通知式的方式,架构同文章中老版本的描述完全不同,此文章仅供参考 -2024/6/12
Dokany是一个Windows应用层的文件系统,还支持FUSE接口,google的Drive用的就是此驱动来映射驱动盘,此篇文章主要分析Dokany从应用层调用到驱动层的架构原理
由一个尾部逗号的问题,会引发不同平台编译器对变参宏的展开的问题,比如如下的一个例子:
#define NEW_LOG(formatmsg, ...) fprintf(stdout, "%s(%u): " formatmsg "\n", __FILE__, __LINE__, __VA_ARGS__)
如果传一个可变参数,则编译正常
NEW_LOG("test for num: %d", 100);
趁着祖国庆生的大好日子,把博客整理了一下,换了个简约的theme,用isso弄了套评论系统,替换掉了github的利用issues的评论系统,由于以前那套评论系统一是评论起来需要注册,二是因为XX屏蔽的原因访问慢不说,还经常有奇奇怪怪的登陆问题。而且这是利用issues投机取巧的办法,折中的方案毕竟违背了github的初衷。改成现在的评论是完全开放不用登陆了。
大强子哥的京东是一个很好的数据源,他家的京东不像淘宝这么坑,为了守着点数据还投毒,还要搞phantomjs的特征识别,对比一下京东对爬虫真的是很友好。
前阵子在少数派上写了一篇水文发表在这里把手机变为生产力工具,打造免费的华为云电脑 https://sspai.com/post/52303,老婆那时候赞助我买的华为大屏手机,我才想着怎么把手机弄成PC机一样能方便的工作。
谢谢大家一直关注这个项目,看到一直有搜索过来的不少用户,最近本来是想简单修复一些明显的bug做个小更新,但是评估后发现问题太多不能忍,对于追求完美的人来说,还是眼里揉不得沙,与其东修西补不如推倒重新来过,所以从前段时间开始我就已经在重构整个app了,加入了同步文件冲突显示,目录的同步,支持tag等matter头标记,多协议支持,支持图片附件等上传等功能,不再会留有已知bug,并且还会跨平台(先搞定android版本),UI上也加入了各种舒服的动画效果。
所以,还请大家耐心等待一下,我一定尽快推出。
风和日丽的一天下午,我正在开心的码代码,突然操作系统提示连接家里路由的VPN断开了,我想着可能又是网络波动,没当一回事, 于是继续快乐的干活,后来无意发现我网站也访问不了,然后ping了一下域名,甚至连域名也解析不了了,我这才发现特么的事情严重了。
在CreateFile打开设备对象时
|
|
加入FILE_FLAG_OVERLAPPED参数就是以异步的方式打开驱动的设备对象