1

Microsoft RAM ディスク サンプル ドライバー (VS2013 with WDK 8.1 - WDK 8.1 ドライバー サンプルも使用) のコンパイルとインストールに成功しました。

readme には、インストール後に管理者プロンプトから 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;
}

これにより、admin、world、および reserved アカウントの 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 ディスク ドライバーを使用するのが良いスタートになるかもしれないと考えました。削除アクセス権の問題を修正する方法についてのコメントは大歓迎です。

4

1 に答える 1

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);

于 2016-08-16T13:11:10.563 に答える