[リストへもどる]
一括表示

タイトルUNBYPASS.DLLの解凍/圧縮時の結果への出力対応
記事No3591
投稿日: 2021/04/11(Sun) 23:05
投稿者おやぶん
自作のソフトの64bits化に伴い、UNBYPASS.DLLをありがたく使わせて頂いています。
圧縮ファイルの解凍を行ったときに結果の出力を取得することができませんでしたので、取得できるようにソフトの変更をしていただくことはできないでしょうか?
お忙しいところ申し訳ありませんが、ご検討をお願いします。


タイトルRe: UNBYPASS.DLLの解凍/圧縮時の結果への出力対応
記事No3592
投稿日: 2021/04/11(Sun) 23:20
投稿者おやぶん
たてつづけに投稿もうしわけありません。
"結果の出力"ですが、UNZIP32.DLLの場合、解凍用の関数"UnZip"があり、引数が下記のようになっていますが、このなかのszOutputのことです。現状、関数呼び出し後のszOutputは必ず空になっています。
分かりづらい内容を投稿してしまい申し訳ありませんでした。
int WINAPI UnZip(const HWND hWnd,LPCSTR szCmdLine,LPSTR szOutput,const DWORD dwSize);


タイトルRe^2: UNBYPASS.DLLの解凍/圧縮時の結果への出力対応
記事No3593
投稿日: 2021/04/12(Mon) 23:04
投稿者TORO
確かに szOutput については未実装で、中身を空に固定して
いますので、受け取りできるようにしてみます。



タイトルRe^3: UNBYPASS.DLLの解凍/圧縮時の結果への出力対応
記事No3594
投稿日: 2021/04/13(Tue) 21:29
投稿者TORO
とりあえず挙動確認用に作成したものを次の場所に用意しました。

http://toro.d.dooo.jp/unbypass18a.zip

wSize が 128K 以上であっても 128K に制限されますが、
その他は問題ないと思います。


タイトルRe^4: UNBYPASS.DLLの解凍/圧縮時の結果への出力対応
記事No3595
投稿日: 2021/04/13(Tue) 23:15
投稿者おやぶん
お忙しいなか、素早い対応ありがとうございます。
使用してみたのですが、残念ながら、こちらにて実装したい機能を有効にすることができませんでした。
使用したい機能はunzip32.dllの中の命令 -p(書庫ファイルの表示(内容のみ))です。この命令を使用すると書庫のファイルのバイナリイメージを結果へ出力してくれるのですが、ファイルサイズの制限と、NULLで出力が切れてしまうので正しいデータを取得することはできませんでした。
知識がないので教えていただきたいのですが、wSize128Kに制限されるというのはAPIなどの仕様でしょうか?


タイトルRe^5: UNBYPASS.DLLの解凍/圧縮時の結果への出力対応
記事No3596
投稿日: 2021/04/14(Wed) 22:49
投稿者TORO
unzip32.dll の -p を使用したいということですか。
szOutput でバイナリを扱うということが念頭になく、
wSize の分を毎回 DLLのプロセスに転送するのはパフォーマンスに
影響するので、\0 で終わるテキスト用に調整していました。
wSize の制限は試作のため、メモリ管理を省略していたためです。

上記の点を踏まえて、wSize の制限をなくし、UnZip で「-p」を
指定しているのを検出したときだけ szOutpu tをバイナリ扱い
するようにしたものを用意しましたので再度確認してみてください。
http://toro.d.dooo.jp/unbypass18b.zip

尚、バッファオーバーフロー対策として、szOutput の最後1byteに
必ず「\0」を書き込む仕様にしています。szOutput の大きさは
必要な大きさ +1 にして下さい。


タイトルRe^6: UNBYPASS.DLLの解凍/圧縮時の結果への出力対応
記事No3597
投稿日: 2021/04/15(Thu) 20:18
投稿者おやぶん
素早い対応ありがとうございます。そして、返信が遅れて申し訳ありませんでした。
unbypass18bで、出力データを確認したのですが、ファイルの先頭4bytesしか取れなくなっていました。(ただ、4バイトまでなら途中で\0があっても正常に取得できました)
すいませんが確認をお願いいたします。

あと、後出しで申し訳ないですが、unlha32.dllのときには、命令 "p" の場合、同じようにバイナリ出力していただけるとありがたいです。


タイトルRe^7: UNBYPASS.DLLの解凍/圧縮時の結果への出力対応
記事No3598
投稿日: 2021/04/15(Thu) 23:14
投稿者TORO
確認をおろそかにして用意したせいか、ミスが多くてすみません。
再度調整したので確認してみてください。

バイナリ時の出力が4バイト固定になっているのを直し、
Unlha の p と、Tar の -p もバイナリ扱いするようにしています。

http://toro.d.dooo.jp/unbypass18c.zip


タイトルRe^8: UNBYPASS.DLLの解凍/圧縮時の結果への出力対応
記事No3599
投稿日: 2021/04/15(Thu) 23:40
投稿者おやぶん
対応ありがとうございます。
こちらで確認したところ、動作が想定どおりになったのでご報告をさせていただきます。

zipファイル
テキストファイル(128K以下):OK
テキストファイル(128K以上):OK
バイナリファイル(128K以下):OK
バイナリファイル(128K以上):OK
lzhファイル
テキストファイル(128K以下):OK
テキストファイル(128K以上):OK
バイナリファイル(128K以下):OK
バイナリファイル(128K以上):OK

お忙しいなか、こちらの要望に対応していただき、ありがとうございました。


タイトルRe^9: UNBYPASS.DLLの解凍/圧縮時の結果への出力対応
記事No3600
投稿日: 2021/04/16(Fri) 23:39
投稿者TORO
落ち着いたようで良かったです。

一度見直してから改めて公開しますので、
それまでは unbypass18c.zip を使用してください。