
初めて質問します。よろしくお願いします。
フロッピーをフォーマットする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 );
No.1ベストアンサー
- 回答日時:
IOCTL_DISK_FORMAT_TRACKS では、物理フォーマットしかできないのが原因です。
FAT12の論理フェーマットは自力でやる必要があります。水をさす事になるので、書き込むのをためらっていたのですが、あえてフォーマットをするのでしたら、SHFormatDrive を呼び出すべきです。
VC++のMSDNだと、キーワードでは出てこないので、検索してみてください。
No.2
- 回答日時:
No.1ですが、補足します。
プログラムのバグによって大変なことになりますから、
SHFormatDriveを呼び出しているプログラムを他人に配布する事は、自分を守る意味でも、『絶対』にやらないほうがいいですよ。
回答頂き、ありがとうございます。
DeviceIoControlでのフロッピーのフォーマットは大変そうですね。
SHFormatDriveも含めて他の方法を検討してみますが、
“SHFormatDriveを呼び出しているプログラムを他人に配布する事は、~『絶対』にやらないほうがいいですよ。”とは、
“フォーマットするようなプログラムは気軽に配布すべきではない”ということでしょうか?
確かに、そうかもしれません。もうちょっといろいろ考えてみます。
ありがとうございました。
(御礼が遅くなり、申し訳ありませんでした。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語でSMTPを使ったプログ...
-
API、OCX、DLLって何でしょう?
-
ソフト屋として、これを知らな...
-
C言語のHP-UXからLinuxへのポ...
-
VB2005の自作ブログラムをWin10...
-
JOB名とSTEP名の取得方法を教え...
-
MS-DOSで作ったBASICプログラム...
-
VBS:コンピュータ名を取得し、...
-
出欠表のプログラム制作の難易...
-
OSとCPUの関係について
-
三目並べ
-
Perl5とActivePerl
-
AIなんて所詮人間のプログラ...
-
CSSでindex.htmlをクリックする...
-
HTMLのタグは閉じなくてもいい...
-
英検準1級と基本情報処理技術者...
-
受けるならMOSでしょうか?
-
機械工学専攻の院卒でSEになる...
-
全豊田作業責任者
-
1年無職の彼氏 別れるべきですか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
API、OCX、DLLって何でしょう?
-
コンソールアプリでファイル選...
-
VBプログラムをEXCEL VBAに移植...
-
Ryzen 3700(無印)はWin11に対応...
-
Sleep命令で指定した待機時間が...
-
CoInitializeSecurityが失敗する
-
三目並べ
-
OSとCPUの関係について
-
C言語のHP-UXからLinuxへのポ...
-
SNMPトラップ情報をC#.netで作...
-
バージョンのつけ方
-
ランチャーの作り方について教...
-
VBS:コンピュータ名を取得し、...
-
BiilderとD-Show フレームレー...
-
printf系の書式「w」ってなに?
-
地域と言語のオプションをプロ...
-
VB.net エラーメッセージを英文...
-
UWSCをサーバー上で実行するには?
-
プログラム解析について
-
winsockへの疑問
おすすめ情報