我成功地編譯並安裝了Microsoft RAM磁盤示例驅動程序(帶有WDK 8.1的VS2013 - 也使用了WDK 8.1驅動程序示例)。Microsoft RAM磁盤示例驅動程序 - 解決訪問問題的想法?
自述文件告訴您安裝後,您可以使用管理提示符下的RAM驅動器。 可能是相同的問題,在這裏被問:https://superuser.com/questions/344577/how-to-access-ramdisk-drive-from-non-admin-user-account-on-windows-xp
有了這個線程給出了答案,我將此代碼添加到RamDiskEvtDeviceAdd功能:
status = WdfDeviceInitAssignSDDLString(DeviceInit,
&SDDL_DEVOBJ_SYS_ALL_ADM_RWX_WORLD_RWX_RES_RWX);
if (!NT_SUCCESS(status)) {
return status;
}
這應該增加對管理,世界和保留RWX權利賬戶。
現在,普通用戶可以訪問驅動器並將文件複製到RAM驅動器。它也可以在資源管理器(Windows 7)中看到和訪問。但我仍然無法刪除文件(甚至不能以管理員身份)。第一個提示告訴你需要管理員權限來刪除文件。如果確認此提示,則會出現第二個提示:「您需要Everyone的權限才能更改此文件。」
查看磁盤驅動器的屬性時,沒有安全選項卡可讓您檢查或授予任何權限。所以我認爲某種安全描述符丟失了。
我已經嘗試瞭解其他RAM驅動器的實現,但它們可能是用不同的驅動程序模型(非WDF)編寫的,這些驅動程序模型在這方面看起來工作方式差異很大。
我也試圖獲得更多關於WDF的MSDN頁面的信息,但無法找到有用的東西。
有些人可能會問:爲什麼不使用工作RAM驅動器解決方案?但實際的問題是創建一個磁盤驅動程序,可以配置爲按需創建IO錯誤。類似於Linux的這個解決方案:http://www.scylladb.com/2016/02/16/fault-injection-filesystem-software-testing/
所以我認爲使用簡單的RAM磁盤驅動器可能是一個好的開始。歡迎任何意見如何解決刪除訪問權限問題。
感謝您的回答。我轉向使用ImDisk驅動程序源。但也許別人會發現你的答案有幫助。 – Alatun