- ベストアンサー
フロッピーセクタアクセスに関して
初めてお目にかかります。 今、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のため、使用できない様でした。 これから何を調べていいかも分からない状態なので、アドバイスをお願いします。
- みんなの回答 (3)
- 専門家の回答
補足
>N88DISK-BASICなり(FDの場合、Cylinder, HeadまちたはSurface, Sector)、IBM互換なりのフォーマットですよね。 ご指摘の通り、IBMフォーマットのディスクをPC98のFD-BIOSで書き出したファイルです。 16bitのときにはBIOSのINT13Hのコールでよさそうですが、NT系のOSでもしかしたらサポートして無いかな? と思い質問いたしました、32bitの場合は難しそうですね… 他のファイル変換ソフトを使用し、バイナリダンプ作成後に処理を行う等の方法を検討してみます。 ありがとうございました。