我正在實現自定義Windows磁盤驅動程序,並且需要FAT32 Windows驅動程序重新加載它位於數據扇區下方的FAT表1和2。 這可以怎麼做?如何強制windows的FAT32驅動重新加載FAT表?
我需要更快的方法,而無需卸載驅動器。爲什麼我這樣做是因爲磁盤是內存虛擬磁盤,並且在訪問扇區的過程中從網絡中獲取數據。我正在編寫目錄數據,它可以工作,但不能用於文件 - 因爲在驅動程序獲取FAT時 - 羣集是免費的,因此文件不起作用。我解僱了fastfat.sys並發現了一些問題......至少我發現了設備ioctl代碼,可能會重新加載胖表,如果我成功了,我會在這裏發帖。
是否反彙編顯示未包含在源代碼中的信息? (我沒有嘗試編譯WDK中包含的任何版本,所以我不知道這個答案。) –
FAT沒有官方源代碼,但是linux的源代碼可用。目前爲止,我只對ioctl代碼感興趣,因爲沒有其他可能的方式向驅動程序發送信號。 – Sergey
以下是官方源代碼中發佈的聲明,儘管它不是ioctl:#define FatAcquireExclusiveVolume(IRPCONTEXT,VCB){\ PFCB Fcb = NULL; \ ASSERT(FlagOn((IRPCONTEXT) - > Flags,IRP_CONTEXT_FLAG_WAIT)); (VOID)FatAcquireExclusiveVcb((IRPCONTEXT),(VCB)); ((Fcb = FatGetNextFcbBottomUp((IRPCONTEXT),Fcb,(VCB) - > RootDcb))!= NULL){((VOID)FatAcquireExclusiveFcb((IRPCONTEXT),Fcb)。 \ } \ } –