【发布时间】:2011-07-06 04:08:34
【问题描述】:
我正在实现自定义 Windows 磁盘驱动程序,并且需要 FAT32 Windows 驱动程序重新加载它 FAT 表 1 和 2,即在数据扇区下方。 如何做到这一点?
我需要更快的方法而不卸载驱动器。为什么我这样做是因为磁盘是内存虚拟磁盘,并且数据是在访问扇区的过程中从网络获取的。我正在即时写入目录数据,它可以工作,但不适用于文件 - 因为有时驱动程序会获取 FAT - 集群是免费的,所以文件不起作用。我对fastfat.sys进行了反汇编,发现了一些要点……至少我找到了可能会重新加载fat table的设备ioctl代码,如果我成功了,我会在这里发布。
【问题讨论】:
-
反汇编是否显示了源代码中未包含的信息? (我没有尝试编译任何包含在 WDK 中的版本,所以我不知道这个问题的答案。)
-
FAT 没有官方源代码,但是 linux 有他们的实现,源代码可用。目前我只对 ioctl 代码感兴趣,因为没有其他可能的方式向驱动程序发送信号。
-
这是官方源代码中发布的声明,虽然它不是ioctl:#define FatAcquireExclusiveVolume(IRPCONTEXT,VCB) { \ PFCB Fcb = NULL; \断言(标志((IRPCONTEXT)->标志,IRP_CONTEXT_FLAG_WAIT)); \ (VOID)FatAcquireExclusiveVcb( (IRPCONTEXT), (VCB) ); \ while ( (Fcb = FatGetNextFcbBottomUp((IRPCONTEXT), Fcb, (VCB)->RootDcb)) != NULL) { \ (VOID)FatAcquireExclusiveFcb((IRPCONTEXT), Fcb ); \ } \ }
-
嘿,你在哪里找到的?请问能给个链接吗