• ベストアンサー

フロッピーセクタアクセスに関して

初めてお目にかかります。 今、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のため、使用できない様でした。 これから何を調べていいかも分からない状態なので、アドバイスをお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ultraCS
  • ベストアンサー率44% (3956/8947)
回答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のシステムコールを使った方が簡単だと思うなあ

nao_dot
質問者

補足

>N88DISK-BASICなり(FDの場合、Cylinder, HeadまちたはSurface, Sector)、IBM互換なりのフォーマットですよね。 ご指摘の通り、IBMフォーマットのディスクをPC98のFD-BIOSで書き出したファイルです。 16bitのときにはBIOSのINT13Hのコールでよさそうですが、NT系のOSでもしかしたらサポートして無いかな? と思い質問いたしました、32bitの場合は難しそうですね… 他のファイル変換ソフトを使用し、バイナリダンプ作成後に処理を行う等の方法を検討してみます。 ありがとうございました。

その他の回答 (2)

noname#43437
noname#43437
回答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=kb;ja;309623 だそうです。。。 かくなる上は、ハードウェア直接制御、でしょうか。。 ドライバとか作らないと、無理そうですね。。

参考URL:
http://support.microsoft.com/default.aspx?scid=kb;ja;309623
nao_dot
質問者

補足

返事が遅くなり申し訳ありません。 ドライバ…難しいですね… XPではドライバ無しでは1.25MBは読めないみたいですね… 考慮して再度考えて見ます。 ありがとうございました。

noname#43437
noname#43437
回答No.1

「フォーマットされていません」ということは、 rawアクセスできていないのではないでしょうか? デバイス名はあってますか? http://support.microsoft.com/kb/100027/ja

参考URL:
http://support.microsoft.com/kb/100027/ja
nao_dot
質問者

補足

YAMAMAYAさん 早速の回答ありがとうございます。 デバイス名は"\\\\.\\A:"を渡しており、試しに1.44MBの フロッピーでプログラムを実行した所、ReadFileまで 正常に動作しました。 DeviceIoControlで、1.44MBのフロッピーを読んでも、1.25MBの フロッピーを読んでも結局同じdisketが返ってきてしまいます。 1.25MBのダイレクトセクタアクセスは出来ないのでしょうか…

関連するQ&A

  • DeviceIoControlを使って、フロッピーをフォーマットするには?

    初めて質問します。よろしくお願いします。 フロッピーをフォーマットするDLLを作っているのですが、DeviceIoControlを使ってフロッピーを 1.44M 512バイト/セクタにフォーマットするにはどうすればいいのでしょうか? 下記のようにコーディングしてみたのですがどうもうまくいきません。 DeviceIoControlは正常終了するのですが、フォーマットした(つもり)のフロッピーをエクスプローラで読もうとすると“このボリュームは認識可能なファイルシステムではありません。”と表示されてしまいます。 エクスプローラでフォーマットした時と比べ、DeviceIoControlが動作している時間が短いのでこの他に手順が必要なのかとも思ったのですが、それらしいのは見当たらず困っています。よろしくお願いします。 hFD = CreateFile( "\\\\.\\a:", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); FormatPara.MediaType = F3_1Pt44_512; FormatPara.StartCylinderNumber = 0; FormatPara.EndCylinderNumber = 79; FormatPara.StartHeadNumber = 0; FormatPara.EndHeadNumber = 1; bRet = DeviceIoControl( hFD, IOCTL_DISK_FORMAT_TRACKS, &FormatPara, sizeof(FormatPara), NULL, 0, &dwTempSize, NULL );

  • フロッピーディスクが開けなくなりました。

    フロッピーディスクが開けなくなりました。 今時、フロッピーディスク??と言われそうですが、ちょっとした細々としたファイルは フロッピーディスクに保存(保管?)しています。 USBメモリとかで保存したらいいのでしょうが、無駄に容量が大きかったり、価格が高かったり、 小さいから紛失しやすかったり、小さいから管理がしづらかったりで、 フロッピーディスクを使っています。 さっきまで開いていたフロッピーディスクドライブが、突然、読み込みができなくなり、 「このファイルはフォーマットされていません。フォーマットしますか」と表示かでます。 何がなんでも、このファイルを開きたいので、どうぞお知恵をお貸しください。 なお、違うパソコン3台で、試しに開いてみましたが、どれもフォーマットを求められます。

  • フロッピーディスクを読めなくなりました

    DVD書き込みディスクを取り付けてから、フロッピーディスクを挿入して、3.5インチFD(A)をクリックすると「ドライブAのディスクはフォーマットされていません。今すぐフォーマットしますか?」のメッセージが出て、フロッピーディスクを読めなくなりました。DVD書き込みディスクの取り付けが原因でしょうか?

  • フロッピーについて

    フロッピーを使用しようとするとフォーマットされていませんと出てくるでフォーマットするとWindowsはフォーマットを完了できませんでしたと出てきます。別のフロッピーも試してしたし、クリーナーも使ってみたのですがだめなのでドライブの故障だと思うので、修理に出さずにドライブを買おうと思い店に行き見てみると使っているパソコンはVAIOのなですが対応している機種を見てもVAIOに対応しているのがありません。対応とか関係なく安いのかってきちゃえばいいんですか。またMeの起動ディスクから起動させたいんですけどフロッピー以外に作れますか。OsはMeとXpのデュアルです。よろしくお願いします。

  • PC-9821のフロッピーを開く方法は??

    こんにちは。 昔のPC-9821に必要なファイルがありまして、 それをフロッピーに書き込んでXPで読み込もうと思ったのですが 開けませんでした。調べたら、PC-9800シリーズの独自の形式でフォーマットされてるとありました。 さらに調べていくとUSBの外付けのFDDで読み書きができると聞いたのですが、その対応しているドライブを知っておられる方、いらっしゃらないでしょうか? 自分で調べた中では FD-30USB(http://www.teac.co.jp/storage/pc/fd/fd30usb/index.html) LFD-A4シリーズ(http://www2.elecom.co.jp/storage/fd/lfd-a4u/) です。ほかにありましたらよろしくお願いします。

  • 3.5インチフロッピーディスクでデータ読めずおかしい

    NECLavieLJ700winxpのファイルシステムは、c・dドライブともファイルシステムを「NTFS」にしています。 質問:NEC外付け、3,5インチフロッピーディスクドライブでデータが読めない。 データの入った3.5インチフロッピーディスクを他人から借りてこちらのPCのフロッピーディスクドライブへ挿入すると 「ディスクはフォーマットされていません」の警告と「ドライブAのディスクは、フォーマットされていません。今すぐ、フォーマットしますか?」と表示される。うっかりフォーマットするとデータが消えるので操作しないがデータが読めないのでドライブが使えない。 3.5インチフロッピーディスクドライブのプロパティの中の「ファイルシステム」欄をみると、(1)フロッピーの未挿入の時は「不明」と表示されており、(2)挿入すると「未フォーマット」と表示されている。 挿入した時「FAT]となっておればそのフロッピーのデータが読めるはずだと思います。 3.5インチフロッピーディスクドライブの「フォーマット」をクリックしても「ダイアログが表示されない」(出てこない)で、「フォーマットしますかの警告表示」が出るため、ドライブの設定変更等どのようにして修正したらよいか? ディスクが悪いのか?ドライブが悪いのか? どのように修複したらよいのか教えてください。

  • フロッピーディスクが開きません。

    職場で使用しているPCのドライブにフロッピーディスクのカバーが挟まってしまい、それを 取除いたのですが、以降、同機のドライブでは一部のフロッピーディスクを読込まなくなり ました。 読込まない場合、そのフロッピーディスクについて、フォーマットされていないとの表示が 出ます。 同機で開かなくなったフロッピーディスクは、他のPCのドライブに通しても、同様のエラー 表示が出て読込むことができません。 上記の症状に関して、何らかの解決方法があればご教示賜りたく存じます。何卒よろしく お願い致します。

  • フロッピーディスクがフォーマットできず…

    こんばんは。 パソコン歴6年にもなるのに初めて(汗)フロッピーディスクを使います。 2HD DOS/V1.44MBというフロッピーディスクを買ってみてフォーマット しようとしたら画面の下には初期化してますとなってるんですが暫く経つ と「このドライブにはディスクが入ってないかドライブの扉が開いてます」 と出てフォーマットできないのでメーカーへ問いあわせてみたらBIOS設定 を標準値に戻しみてくださいとのことでしたので設定をしてみてから再び フォーマットを試みたのですが駄目で更に「ファイルアロケションテーブ ル領域をフォーマット中にエラー発生、このディスクをフォーマット出来 ませんでした、このディスクは壊れてます」メッセージも出てきました。 フロッピーディスクは二年前に買ったパッケージ未開封なので新品です。 ドライブにフロッピーディスクはきちんと入ってるしアクセスランプは 点灯してるのですが何が原因と考えられますか? フォーマット画面の中央のボリュームラベルという項目が空欄になって ました。これはふつう空欄になってるのですか? 皆様どうかご教授のほどよろしくお願いいたします。

  • フロッピーがひらけない。

    初心的な質問ですが教えてください。 ワードのファイルの入ったフロッピーを知人からあずかり、私のパソコンで開こうとすると『ドライブのディスクはフォーマットされていません』の表示がでて、フォーマットを促してきます。 このファイルを開くためにはどうすればいいのでしょうか。 パソコンはwin98です。

  • フロッピーディスクの不具合

    長く使っていなかったフロッピーを久々に見ようと思ったら、「ドライブAのフロッピーディスクは正しくフォーマットされていないか、マキントッシュ用にフォーマットされています」という表示が出てきて、見ることが出来ませんでした。その次に、「Aにアクセスできません。このディスクは認識できません。フォーマットされていない可能性があります。」と出てきます。しかし、今までは普通にウインドウズで見ていました。 他のパソコンでやってみても同じでした。フォーマットすると前のデータは消えるとあったので、まだフォーマットはしていません。 もうこのフロッピーディスクの中身を見ることは出来ないのでしょうか。どなたか分かる方がいらっしゃいましたら、教えてください。よろしくお願いします!!

専門家に質問してみよう