- PR -

HDDへのアクセス方法

1
投稿者投稿内容
Bob
常連さん
会議室デビュー日: 2006/03/23
投稿数: 31
投稿日時: 2008-08-07 11:24
お世話になります。

.NETのアプリで、HDDの内容をセクタ単位で読み出す方法はありますか?

よろしくお願いします。
くまっち
大ベテラン
会議室デビュー日: 2008/01/18
投稿数: 169
お住まい・勤務地: 茨城県のどこか。
投稿日時: 2008-08-07 13:53
.NETのアプリ→.NET Framework→CLRの提供機能
と解釈するならば、答えは「ないです」

CLRに、そのような命令(機能)は用意されていません。


.NETのアプリ→C#やVB.NETで作成したアプリ
と解釈するならば、答えは「出来なくはない」

実際に読み出す部分は、アセンブラ言語で作成することとなります。
全てをアセンブラで記述しても良いですし
VC++等では、インラインアセンブラが使用できます。(この方が楽かな)

こうして作成されたモジュールを.NET側から呼び出す事で
.NETのアプリでもセクタ単位に読み出したりすることは可能となります。

このような回答でよろしいでしょうか。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2008-08-07 14:08
いや、普通にWindowsAPIでできますよ。
アセンブラ使ったところで、できませんよ。

CreateFileの説明にあるディスクデバイスの説明に沿ってファイル名を指定してください。そのあと、ReadFileやWriteFile APIを呼び出せば、ディスク全体を一つのストリームとして読み書きできます。

もしかしたら.NETのファイル入出力命令に、ファイル名の変わりにディスクデバイス名を渡せば動作するかもしれません。私なら賭けなどせずにAPIを直接使います。

ただ実際にはアクセス権(管理者特権が必要)の関係や、他のアプリケーションとの排他ロックの関係で、オープンに失敗することも多いです。

その手のツールはDR-DOS上などで作るのが定石ですね。

1

スキルアップ/キャリアアップ(JOB@IT)