FSCTL_SET_REPARSE_POINT - リパースポイント関連の API
玄箱の Perl に Crypt::SSLeay をインストールしてみることにした。Windows の ActivePerl では、パッケージのインストールは ppm で行うのが普通だが、玄箱では CPAN が使えるので、CPAN を使ってインストールを行う。CPAN の操作方法は、Perlモジュール/インストール(CPAN)を参考にした。
Crypt::SSLeay をインストールするには、OpenSSL が必要なので、まず apt-get を使って、libssl-dev を入れる。ActivePerl では、LWP パッケージが最初からインストールされているが、Debian ではインストールされていなかったので、それも CPAN でインストールする。最後に、Crypt::SSLeay をインストールして、完了。
$ apt-get install libssl-dev $ perl -MCPAN -e shell cpan> install LWP cpan> install Crypt::SSLeay
Crypt::SLeay を使うスクリプトを cron を使って定期的に実行したかったのだが、cron の設定方法がよく分からなかったので、cronの設定を参考にして設定を行った。
スクリプトの行頭を
#!/usr/bin/env perl
にしておくと、perl の実行ファイルの位置が違っていても多くの環境でそのまま実行できる。このとき改行コードを CR+LF にしていると、Unix で動かしたときに、ファイルが見つからないなどのエラーが出ることがある。Windows でも Unix でも使うようなスクリプトは改行コードを LF にしておくのがよい。
最近また新たなウィルスメールが送られてきている。SMK のチェックをくぐり抜けているので、新たに設定を登録するために調べてみることにした。送られてきたウィルスは、WORM_MYTOB.BW, WORM_MYTOB.ED, WORM_MYTOB.FC だった。サイズと件名ではじくのがよいのだろうか。
回路図エディタは何を使うのがよいのだろう。フリーソフトで有名なのは、BSch だろうか。あとは、EAGLE の無料版だろうか。EAGLE は、回路図だけでなく、基板データまで作成できるのが大きな利点だろう。
FT232BM を使った USB-Serial 変換器がとりあえず完成。早速 CF-R2C の USB コネクタに挿してみる。ドライバのインストール画面が出て、無事ドライバがインストールできた。USB 部分は問題なく動いているようだ。次に、Ls312 とクロスケーブルでつないで、ハイパーターミナルで通信できるか試してみた。困ったことに、ハードウェアフロー制御を有効にしていると、通信できなかった。フロー制御を行わないようにしたところ、問題なく通信ができた。DTR-DSR ではなく RTS-CTS を使うように回路を変更したのが関係しているのだろうか。
次に、La13 とつないで、カーネルデバッガ (Rterm98 + wdeb98) を使えるか試してみた。以前、秋月で買った変換ケーブルで試したときにはうまくいかなかったが、今回の自作変換器では問題なく動いた。一番使いたかったものがちゃんと動いたのは非常に良かった。
通信状態表示用の LED も付けてみたいところだが、残念なことに基板に空きがない。また、USB 機器はサスペンド時には消費電流を 0.5mA 以下にしなければならないらしいが、そのための制御をしていないのも少し気になるところではある。これには P 型 パワー MOSFET が必要なのだが、表面実装用の小型のものが入手できていない。
できあがりは、こんな感じ。mini-B コネクタを使って小さくまとめてみた。
exewrap ← Java の jar ファイルを起動するための、ラッパー用 EXE ファイルを自動生成してくれるソフトだそうだ。
FT232BM を使った USB-Serial 変換器を作成中。トランジスタ技術 1月号 の P.153 の回路図を参考にしながら作っている。ただ、フロー制御は、DTR-DSR よりも RTS-CTS を使う方が一般的だと思うのだが。
TClock Light 時刻合わせ精度向上版 ← 自分の改造版 TClock Light にマージしてみようかと思っている。
PortForwarder の 2.4.1 が出ていたので、インストール。以前と同じように改造してみた。
FILENAME PortForwarder.exe 0001546C: 01 00 ; push 00000124h -> push 00000024h
たまたまディスクの空き容量を見たら、Free 9,100,800,000 bytes と、また 0 がかなりたくさん並んでいた。4日間で空きが 110MB 以上減っているが、何に使われたのだろうか。
TwinVQ について少し調査。TwinVQ 用のライブラリが公開されているが、C MAGAZINE 2000年12月号で解説されていたときのライブラリから全く更新されていないようだ。vqf ファイルを再生できるようにする DirectShow フィルタを作ってみるのもおもしろいかもと考えている。(需要はなさそうだが)
この前作った、DirectShow を使った音楽再生ソフトをいじって、再生速度を変更できるようにしてみた。どこまで再生速度を上げることができるか試してみたところ、サンプリング周波数 44.1kHz のファイルで 2.26759637188208594倍速が上限という実験結果になった。DirectShow で扱える最大サンプリング周波数は 100.001kHz ということだろうか。
Direct Show Filterについて ← 各種 DirectShow Filter へのリンク。
AZIK という日本語入力方式があるそうだ。普通のローマ字入力をベースに、二重母音などよく使われる文字を少ないキーで入力できるように拡張したものだそうだ。なかなか興味深い。
日本語化パッチ(動画篇) ← Ogg DirectShow Filter, ffdshow など動画用ソフトの日本語化パッチ。
Jcode.pm の 2.00 が公開されていた。とりあえずダウンロードしておいたが、インストールはしていない。
Design Wave Magazine 1月号の Xilinx FPGA ボード用のダウンロードケーブルを作ってみた。ポリイミド(カプトン)テープを使って、ユニバーサル基板上にフラットパッケージの IC (74VHC244) を載せて作った。動作確認はまだしていない。カプトンテープは、先週末秋葉原の愛三電機で買ってきたのだが、結構高かった。(10mm x 20m で \1,260)
たまたまディスクの空き容量を見たら、Free 9,216,000,000 bytes と 0 がかなりたくさん並んでいた。
以前、MP3 のファイルフォーマットについて、かなり詳細に解説しているサイトがあったのだが、いつの間にか閉鎖していた。同じようなサイトがないかと探してみたところ、Internet Archive に残っていた。最初から説明するInside MP3。画像が残っていないのがもったいない。
DirectX SDK をインストールしたら、スタートメニューの横幅がやたら増えて見栄えが悪くなってしまった。フォルダ名が長いのが問題なので、"Microsoft DirectX 9.0 SDK Update (October 2004)" を "Microsoft DirectX 9.0 SDK" にリネームしておいた。
VC++7 to VC++6 project converter
MP3 プレイヤーソフトを作ってみたいと最近思っている。DirectShow を使うのが最も簡単に実現できそうなので、昨日のサイトのサンプルプログラムをコンパイルして試してみた。
VC6 でコンパイルしようとしたところ、DWORD_PTR, LONG_PTR の定義が見つからずエラーになってしまった。VC6 で最近の DirectX SDK を使うには、Platform SDK も新しいものをインストールしておく必要があるようだ。Platform SDK をインストールするのが面倒だったので、インクルード部分を以下のようにすることで、Platform SDK をインストールしていない VC6 でもコンパイルできるようになった。
#define WIN32_LEAN_AND_MEAN #include <windows.h> #ifndef _W64 typedef unsigned int DWORD_PTR; typedef long LONG_PTR; #endif #include <dshow.h>
MP3 ファイルを再生してみたところ、メモリ使用量は 7MB になった。ImmDisableIME() を使って IME 関連の DLL をロードしないようにしたところ、5MB 弱まで使用量が減少した。SCMPX などと比較しても、この程度のメモリ使用量ならば MP3 プレイヤーとしては許容範囲だろう。なお、どんな DLL がロードされているかの確認は、ProcessProbe を使った。
IGraphBuilder::Release() を実行しただけではデコード関連の DLL は解放されないようだ。CoUninitialize() を実行するとようやく DLL がアンロードされた。いくつもの違う種類のファイルを再生すると、メモリ使用量がどんどん増えていくということか。
CoUninitialize() を呼び出してしまうと、次のファイルを再生するには CoInitialize() からやり直さないといけない訳だが、処理時間が増えそうだ。
DirectShow 関連の情報を探していたところ、DirectShowプログラミング [VC++] というサイトを見つけた。ファイルを再生するための方法が、簡潔にまとまっていて良い。
実際に試してみようと思い、DirectX SDK をインストールしてみた。インストールしたバージョンは、"Microsoft DirectX 9.0 SDK Update (October 2004)"。
Unlocker というソフトを使うと、ファイルのロックを解除できるようだ。残念ながら、Win9x では使えないようだ。Win9x の方がこういうソフトを使いたい場面が多いのだが・・・。
前々回のパッチを差し替え。時刻合わせのログを 1行単位で読み込むように変更。ついでに、ログの表示欄を微妙に拡大。表示行数が 1行増えるかも。
ウィルスバスターのウィルス注意ウィンドウが文字化けするのだが、何とかならないのだろうか。
Fixes for Library Bugs in VC++ V5.0/V6.0 ← VC++ 6.0 の STL にはバグがあるそうだ。
STPI に関する情報を探していたところ、「SPTIによる音楽CDのデジタル再生」というサイトを見つけた。サンプルも公開されている。
Win9x だと、ASPI を使うのと MSCDEX を使う方法が考えられるが、どちらが良いのだろう。16bit DLL を使わずに MSCDEX を呼び出す方法も試してみたいが。
タスクバーのボタンの順序を並べ替えられるソフトがないか探してみた。TaskbarSorter と TaskArrange というものが見つかった。TaskbarSorter はアルファベット順あるいは設定ファイルで指定した順に並べ替えることができる。一方 TaskArrange はウィンドウが開き、自分の好きな順に並べ替えることができる。動作環境は、TaskbarSorter は Win2k 以降専用で、TaskArrange は Win9x でも使えるようだ。
stripper でアンパック後の HDD Health の実行ファイルを ijexp32 で見ると、ijexp32 が落ちてしまう。stripper が出力するファイルは何か特殊な形式になっているのだろうか。
HDD Health のメモリ使用量を減らしてみようと思い、ImmDisableIME() を呼び出すようにいじってみたのだが、メモリ使用量はほとんど変わらなかった。デバッガで確認すると、ロードされる DLL は確かに少なくなっていたのだが、なぜだろう。
Fire File Copy 4.1.0 が公開された。touch のソースを元に Win9x でディレクトリのタイムスタンプをコピーする機能が追加されている。ijexp32 で見てみると、隠し API の VxDCall() が使われているのが確認できる。(FFC.exe のプロパティ画面)
前々回のパッチを差し替え。今回は、英語リソースファイルを追加しておいた。また、メインメニューの順番が日本語版(と韓国語版)のみが他の言語と異なっていたので、他の言語と順番を統一しておいた。
HDD Health の Brief Info タブで、Model 名や Serial number の欄が狭くて文字が全部表示されない場合があるので、Resource Hacker を使って、それぞれの欄の幅を広げてみた。
HDD Health に、Brief Info タブで温度を表示できる機能があったとは知らなかった。Extended Info タブで温度が正常に表示されない HDD では、Brief Info タブに温度は全く表示されないようになっているせいで気付かなかった。
HDD Health で温度が正常に表示されるかされないかは、基本的に HDD のメーカーに依存しているようだ。少し調査したところ、Maxtor, Seagate が OK で、IBM, HGST, Toshiba が NG だと思われる。Fujitsu, Western Digital などがどうなのかは不明。
HGST 製 HDD などでも Brief Info タブで温度が確認できるように改造してみた。(スクリーンショット)
Tobias' DirectShow(TM) Filter ← OggVorbis ファイルを DirectShow で再生できるようにするためのフィルタ。
先月の spam メールの集計結果。着信拒否になった spam が少なくとも 5551通。着信拒否にならなかった spam が 476通。そのうち Spam Mail Killer で削除できた spam は 466通(97.9%)。誤削除が 1通。
J2SDK 1.5.0_03 をインストールした。JF はまともに動いた。JRE のインストールディレクトリを見ていると、unicows.dll を発見。Java も unicows.dll を利用しているとは知らなかった。