ソースコードのダウンロード
フォルダ内のファイルを、ISO9660/JOLIET/UDF イメージファイルにまとめるツール
「せんべえの生地作り」の修正版です。
変更点:
・ながえ氏に指摘された欠陥を修正。
多くの欠陥を指摘してくださったながえ氏に厚く御礼申し上げます。
こんなひどいものをいままで公開していて、本当に申し訳ありませんでした。
以下、修正箇所の詳細です。
・ボリュームラベルの文字数
→イメージ作成前に文字数をチェックするようにしました。
・ISO9660 PVD と SVD の LogicalBlockSize
→致命的な凡ミスでした。
・dstring の最終バイト
→明らかな仕様の読み逃しでした。
これに伴い、ブログの説明を修正しました。
・UDF1.02 の timestamp の Type and Time Zone
→酷い凡ミスでした。
・ISO9660 PVD と SVD にある datetime_l
→日時がd文字の'0'で偏差が数値の 0 の場合、使用していないことを示すと仕様書にあるので修正しました。
以下はそのままの箇所です。
・IUVD の ImplementationIdentifier
→こちらが確認した所、セクタの先頭から 0x0161 バイト目に'*'は入っていました。
フォルダ名に「拡張子」がついていると、エラーになる。
→放置。
エラーはJOLIETではなくISO9660で発生していました。
ISO9660 用の 8.3 形式のファイル名には、Windows で得られる 8.3 形式のファイル名をそのまま使っています。この時点でd文字だけというルールから逸脱するわけですが、このとき、フォルダに拡張子が付いているとそれが残って8文字以内という制限から外れることがあります。さらに、DOS名作成ルーチンはOSごとに異なるようで、Me の場合8文字以内であれば成功しますが、Vista では失敗することがあります。
これを回避するには重複しない別名をつけるしかないのですが、そうするとファイル名で連動しているときに困りそうなので、エラーメッセージを増やしてお茶を濁すことにしました。
実はただいま、せんべえの生地を捏ねまわすようなアプリ(記述子ビューワ&改変機)を作成中なのですが、それのテストで色々やっているうちに一連の不具合を見つけたような次第です。お役に立てたようでしたらなによりです(^^)
このへなちょこアプリの95%はこちらのブログをベースにさせていただいておりまして、本当に七癖さまには足を向けて寝られないような状態です。ありがとうございます<(__)>
> セクタの先頭から 0x0161 バイト目に'*'は入っていました。
(・・∂)アレ?えと、このregidのASCII文字列は0x0155からだと思うのですが。。。
間違っていたら御免なさいm(__)m
作成中のアプリを楽しみにしております。
>(・・∂)アレ?えと、このregidのASCII文字列は0x0155からだと思うのですが。。。
すみません。
ブログの記述が間違っていました。
UDF1.02 3-5 Implementation Use Volume Descriptor
http://senbee.seesaa.net/article/70296345.html
の Logical Volume Information の LV Info 1〜3 の大きさは 32 ではなく 36 でした。
型の方は char[36] になっていたのにorz
修正しましたのでご確認ください。
おかげさまをもちまして、私のへなちょこアプリもようやく完成にこぎつけましたのでご報告申し上げます
IsoImageUtil あるいはせんべえの生地をいぢくり廻してダメにするツール Ver.1.0
http://www7b.biglobe.ne.jp/~deki-rail/Download/IsoImageUtil_10.zip
こちらのブログが無かったら、おそらく作る気にもならなかったと思います
本当にありがとうございました m(_ _)m
レスポンスが遅くなり申し訳ありませんが IUVD の ImplementationIdentifier の件、了解いたしました
早速私のへなちょこアプリの方も修正いたしました^^v
せんべえの生地作り ver.0.005 の方も WinXP pro SP3 (32bit)の環境で快適に使用させていただいております
遅くなりましたが動作報告させていただきます
合わせまして、いくつか要望を思いつきましたので軽くお聞き流しください(;^_^A
・OSTA Compressed Unicode の CompID値に 8 も指定できるように。。
日本語ファイル名を一切使用していない場合にしか使えませんが、若干ファイルサイズが小さくなる場合もあるかと
・ボリュームラベルをシステムごとに個別に設定できればいいな
・[ボリューム情報の設定]で「著作権」となっているところは「著作権ファイル名」とした方が誤解がないのではないかと思います
・ISOファイル作成中に表示される進行状況の更新頻度がもう少し低いと、かなり良いかと思います
どうも、素でファイルコピーする場合に較べ、ISOファイル作成の時間が長いなぁと思っておりました。
ふと進行状況の表示が目にとまり、もしかしたらと思い
CMakeUdfbDlg::Increment
の中身をコメントアウトして少し改造してみましたところ、劇的に(4〜5倍程度)ファイル作成速度が向上いたしました。
私のところのグラフィックボードが GeForce9500GT というヘタレなものであることも原因としては大きいかとおもいますが(^^ゞ
もっとも、プログレスバーまでアウトにしてしまったので、エクスプローラの表示を更新しないと進行状況が把握できなくなってしまいました
実は Increment がどこから呼び出されているのかわからなかったので、更新頻度を減らすということは出来なかったのです orz
int pPre = (int)((m_DoneSize * 100) / m_UnpSize);
m_DoneSize += Size;
int p = (int)((m_DoneSize * 100) / m_UnpSize);
if(p > pPre){ ・・・・
こんなインチキコードでも表示抹殺と変わらない速度が出ました。これで快適快適(^^v
ですが、こちらでは「vcl60.bpl が見つかりません。」というエラーが出て起動できませんでした。
C++Builder を使っていないので詳しいことはわかりませんが、リリース版では必要なライブラリ類をビルド時に取り込んでもらえるとありがたいです。
http://www.geocities.jp/c_lastry/soft/Builder.html
年末年始は慌しいので、要望の方は落ち着いてからやります。
それでは、よいお年を。
「(・・∂)アレ、組み込んでいたはずなのにおかしいな」と勝手にリンカに責任を押し付けておりましたが、よく考えたら自作DLLの方に組み込むのを忘れていましたorz
http://www7b.biglobe.ne.jp/~deki-rail/Download/
こちらの方に修正版を上げておきました。
今年は大変お世話になり、誠にありがとうございました。
来年もまた宜しくお願いいたしますm(_ _)m
今年も宜しくお願いいたしますm(_ _)m
早速ですが、新年早々「せんべえの生地作り ver.0.005」にケアレスミスを見つけましたのでご報告申し上げます
UDF : LVD->Partition Maps->Volume Sequence Number
の値が、1 ではなく 0 になってしまっているようです(Main,Reserved ともに)