初めてお目にかかります。
今、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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- PostgreSQL DBFluteについて質問です。 環境:PostgreSQL java8 前提:webアプリケーショ 1 2022/07/07 00:49
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
- Windows 10 VirtualBox 7のゲストOSでの物理HDDパーティションのマウント方法 2 2023/05/04 13:01
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ローカルディスクCとボリューム...
-
CDRの中身を確認したい
-
フロッピーディスクについて
-
OSが入ったハードディスクのフ...
-
CD-RW、フォーマット後、...
-
HDDの交換(FAT32フオーマッ...
-
完全復元 PRO 2007(復元ソフト)...
-
パソコンのフォーマット
-
フロッピーディスクの開き方
-
Win98起動ディスクでNTFS形式XP...
-
FDDの調子がおかいいんですが
-
XPから2000に戻したい。
-
Dドライブをフォーマットしても...
-
HDDの初期化
-
ビジュアルPCについて
-
東芝ダイナブックTX650LS
-
フォーマット
-
2.5インチHDDのフォーマ...
-
RAID解除したHDDを初期化できない
-
HDDのフォーマット中
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ローカルディスクCとボリューム...
-
CD-RW、フォーマット後、...
-
CDRの中身を確認したい
-
ハードディスク(Cドライブ)の...
-
BD-R、BD-REのフォーマットがで...
-
CD-R フォーマットのし方
-
OSが入ったハードディスクのフ...
-
フロッピーディスクのフォーマ...
-
WindowsXPの入っているCドライ...
-
ワープロのフロッピーをPCで...
-
空のCD-Rのみ認識しない。...
-
フォーマット
-
HDDのフォーマット中
-
DVD-RAMへのExcelデータの保存方法
-
Cドライブフォーマットの仕方
-
windows95のFD版について
-
動画ファイルが移動できない
-
回復ドライブで作成したUSBメモ...
-
外付けHDDがマイコンピュー...
-
MOのフォーマットはFAT16ですべ...
おすすめ情報