2016-06-09 46 views
1

我成功地編譯並安裝了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磁盤驅動器可能是一個好的開始。歡迎任何意見如何解決刪除訪問權限問題。

回答

1

我有同樣的問題。這是我的解決方案:

DECLARE_CONST_UNICODE_STRING( MY_SDDL_STRING, L「d:P(A ;; GA ;;; SY)(A ;; GA ;;; BA)(A ;; GA ;;; WD) (A ;; GA ;;; RC)「 );

status = WdfDeviceInitAssignSDDLString(DeviceInit, & MY_SDDL_STRING);

+0

感謝您的回答。我轉向使用ImDisk驅動程序源。但也許別人會發現你的答案有幫助。 – Alatun