| 動作フェーズ |
簡易モード |
詳細モード |
- ファイルヘッダのチェック
|
FileHead が 0xFE12ADCF であり、
FileID が 0x6F74FDC5 なら、
ファイル先頭から 0x24BC + InfoSize 分だけスキップする。 |
チェックは行わない。 |
- メッセージデータの開始位置をスキャン
|
4バイトずつ移動しながら DWORD を読み、そのデータがアドレスと同値であるところを探す。(MsgHeadのチェック) |
1バイトずつ移動しながら DWORD を読み、0x00000200 であるところを探す。(BodySizeのチェック)
見つかったら、そこから4バイトだけ戻る。 |
- メッセージデータが有効かどうかをチェック
|
メッセージヘッダ16バイトを読み、以下の条件にすべて当てはまるかをチェック。
- BodySize = 0x00000200 である。
- UsedSize <= BodySize である。
- UsedSize = BodySize の時、NextAddr = MsgHead + 0x00000210 である。
- UsedSize < BodySize の時、NextAddr = 0x00000000 である。
1つでも当てはまらないものがあれば 2. へ。 |
- テキストデータの読み込み
|
BodySize 分のデータを読み、そのうち UsedSize 分をバッファに追加する。 |
- ファイルの生成
|
UsedSize = BodySize の場合は、3. へ戻って次のデータを読む。
UsedSize < BodySize の場合は、バッファの内容をファイルに保存し、バッファをクリアしてから 2. へ。 |