
初めてお目にかかります。
今、PC98で書き込みを行ったフロッピーディスクを読み取るプログラムを作成しています。
インターネットにて調べて見ましたが、うまくいかない状態です。
問題点等あれば教えていただきたいと思います。
実行環境:Windows XP SP2
ドライブ:LOGITEC LFD-31U4 (USB:3モード)
開発言語:VC++(VS2005にて)
BOOL Direct_Drive_Access(char *Drive){
HANDLE hHandle;
DISK_GEOMETRY disket;
DWORD dw1;
BOOL ret;
//ハンドルの取得
hHandle = CreateFile(Drive,GENERIC_READ , FILE_SHARE_READ,NULL,OPEN_EXISTING, NULL, NULL);
if ( hHandle != INVALID_HANDLE_VALUE ){
//FDの情報を取得
ret = DeviceIoControl(hHandle,IOCTL_DISK_GET_DRIVE_GEOMETRY,NULL,0,&disket,sizeof(disket),&dw1,NULL);
if (!ret) return FALSE;
}
}
上記のソースにて取得したdisketの内容が、1.44MBのフロッピーでした。
(この情報だと、次のReadFile関数で"1785:フォーマットされていません"のエラーが返ります)
実際は、Cylinder - 77 Track - 2 Sector - 26 Byte - 256
でフォーマットしているフロッピーです。
BIOS経由のアクセスも調べましたが、32bitOSのため、使用できない様でした。
これから何を調べていいかも分からない状態なので、アドバイスをお願いします。
No.3ベストアンサー
- 回答日時:
>Cylinder - 77 Track - 2 Sector - 26 Byte - 256
ということは、N88DISK-BASICなり(FDの場合、Cylinder, HeadまちたはSurface, Sector)、IBM互換なりのフォーマットですよね。とすると、Cyliner0 Head0は単密度でセクタ長は128なので、Nが変わりますが、これは大丈夫ですか(Head1は倍密度だったと思う)。
なお、3モードはドライバが組み込まれていれば、OSからはパラメータ変更だけでINITかければ使えると聞いたことがあります(やったことはない)
DOSの領域のディスクを作って、FD起動でDOS立ち上げてCからATのシステムコールを使った方が簡単だと思うなあ
この回答への補足
>N88DISK-BASICなり(FDの場合、Cylinder, HeadまちたはSurface, Sector)、IBM互換なりのフォーマットですよね。
ご指摘の通り、IBMフォーマットのディスクをPC98のFD-BIOSで書き出したファイルです。
16bitのときにはBIOSのINT13Hのコールでよさそうですが、NT系のOSでもしかしたらサポートして無いかな?
と思い質問いたしました、32bitの場合は難しそうですね…
他のファイル変換ソフトを使用し、バイナリダンプ作成後に処理を行う等の方法を検討してみます。
ありがとうございました。

No.2
- 回答日時:
NNo1です。
引き続き・・・「Windows XP は 1.44 MB ディスク形式のフォーマットのみをサポートします。3 モード フロッピー ドライブ (720 KB、1.2 MB、および 1.44 MB 3.5 インチ フロッピーディスクを読み書き可能なドライブ) は特別なドライバのサポートが必要であり、Windows XP ではサポートしていません。」
http://support.microsoft.com/default.aspx?scid=k …
だそうです。。。
かくなる上は、ハードウェア直接制御、でしょうか。。
ドライバとか作らないと、無理そうですね。。
参考URL:http://support.microsoft.com/default.aspx?scid=k …
この回答への補足
返事が遅くなり申し訳ありません。
ドライバ…難しいですね…
XPではドライバ無しでは1.25MBは読めないみたいですね…
考慮して再度考えて見ます。
ありがとうございました。

No.1
- 回答日時:
「フォーマットされていません」ということは、
rawアクセスできていないのではないでしょうか?
デバイス名はあってますか?
http://support.microsoft.com/kb/100027/ja
参考URL:http://support.microsoft.com/kb/100027/ja
この回答への補足
YAMAMAYAさん
早速の回答ありがとうございます。
デバイス名は"\\\\.\\A:"を渡しており、試しに1.44MBの
フロッピーでプログラムを実行した所、ReadFileまで
正常に動作しました。
DeviceIoControlで、1.44MBのフロッピーを読んでも、1.25MBの
フロッピーを読んでも結局同じdisketが返ってきてしまいます。
1.25MBのダイレクトセクタアクセスは出来ないのでしょうか…
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ローカルディスクCとボリューム...
-
CDRの中身を確認したい
-
RAID解除したHDDを初期化できない
-
HDDのパーティションが消しても...
-
CD-RW、フォーマット後、...
-
svchost.exeについて
-
DVDディスクがフォーマット出来...
-
ハードディスク(Cドライブ)の...
-
CD-R フォーマットのし方
-
コマンドを実行するには クオー...
-
付属CDが無い場合の初期化方法
-
msdownld.tmpファイルを削除し...
-
エラーコード2103
-
(至急)777TOWNのナナリズムが急...
-
VBA PDFファイル印刷後のAcroba...
-
Windows95のセットアップで保護...
-
ハードディスクについて質問です。
-
Windows 98 起動ディスク イメ...
-
MS-DOSから抜け出せない
-
PCのHDDをSSDに換装後、起動が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ローカルディスクCとボリューム...
-
CDRの中身を確認したい
-
BD-R、BD-REのフォーマットがで...
-
ハードディスク(Cドライブ)の...
-
CD-RW、フォーマット後、...
-
CD-R フォーマットのし方
-
Win10でSDカードが突然読み込め...
-
RAID解除したHDDを初期化できない
-
DVD-RWのフォーマット時間
-
WindowsのDドライブをフォーマ...
-
ワープロのフロッピーをPCで...
-
回復ドライブを作成する前にUSB...
-
空のCD-Rのみ認識しない。...
-
外付けHDDがマイコンピュー...
-
FAT32形式フォーマット D...
-
Dドライブのフォーマットができ...
-
物理フォーマットした、MO
-
フォーマット済みのSSDを使える...
-
windows7または10で、2TBを超え...
-
パソコンが起動出来なくなりました
おすすめ情報