2

DeviceIoControl() 経由で送信する ATA コマンドを使用して大容量ディスクを読み取りたい。構造体を使用してコマンドを送信するATA_PASS_THROUGH_EXことが主な問題です。実際には、タイプCurrentTaskFile[]の arary はUCHAR、16777215 以下のセクターを送信できません。

CurrentTaskFile[2] = 0xFF;
CurrentTaskFile[3] = 0xFF;
CurrentTaskFile[4] = 0xFF;

つまり
CurrentTaskFile[2] = 0xFF 、セクタ番号レジスタ、
CurrentTaskFile[3] = 0xFF シリンダ下位レジスタ、
CurrentTaskFile[3] = 0xFF シリンダ上位レジスタです。

16777215 以下のセクターを読み取りたい場合 (1 TB ディスクの最後のセクターを読み取りたい場合) はどうすればよいでしょうか。16777215以下のセクターを送信する方法。実際には、最大4 TBの容量のディスクを読み取る必要があります。

4

1 に答える 1

2

CurrentTaskFile[5]デバイス/ヘッド レジスタであるものもあります。その範囲はディスク容量によって異なります。たとえば、4Tb ディスクの場合は から0まで127です。したがって、そのディスクのアドレス指定可能なセクターの最大数は、256*256*256*128 == 2147483648これで十分と思われます。

于 2015-05-13T11:13:22.760 に答える