トップ «前の日記(2004-09-26(日)) 最新 次の日記(2004-09-28(火))» 編集

とた日記


2004-09-27(月) 雨 安静時心拍数 43 [長年日記]

_ イベントログとメッセージ DLL ファイルとレジストリ

テストをしていたらレジストリ情報が無いとかメッセージ DLL ファイルとかで怒られてしまったので調査しました。検索したら NTイベントログに、任意のソースで任意のイベントIDのメッセージを出力するで一発解決です。

ただし Visual Studio でメッセージファイルをビルドしようとしても変更を関知してくれません。たまたま持っていた プログラミング Microsoft Windows2000―サービスによるサーバーアプリケーション開発 (マイクロソフト公式解説書)(ジェフリ リヒター/ジェイソン・D. クラーク/Jeffrey Richter/Jason D. Clark/豊田 孝)の p.236 にカスタムビルドの方法が載っていたのでやってみました。コマンドには

mc -s -U -h $(ProjDir) -r $(ProjDir) $(InputName)

出力には

$(InputName).h

を追加します。mc のオプションは

>mc -?
Microsoft (R) Message Compiler  Version 1.00.5239
Copyright (c) Microsoft Corp 1992-1995. All rights reserved.
 
usage: MC [-?vcdwso] [-m maxmsglen] [-h dirspec] [-e extension] [-r dirspec] [-x
 dbgFileSpec] [-u] [-U] filename.mc
       -? - displays this message
       -v - gives verbose output.
       -c - sets the Customer bit in all the message Ids.
       -d - FACILTY and SEVERITY values in header file in decimal.
            Sets message values in header to decimal initially.
       -w - warns if message text contains non-OS/2 compatible inserts.
       -s - insert symbolic name as first line of each message.
       -o - generate OLE2 header file (use HRESULT definition instead of
            status code definition)
       -m maxmsglen - generate a warning if the size of any message exceeds
                      maxmsglen characters.
       -h pathspec - gives the path of where to create the C include file
                     Default is .\
       -e extension - Specify the extension for the header file.
                      From 1 - 3 chars.
       -r pathspec - gives the path of where to create the RC include file
                     and the binary message resource files it includes.
                     Default is .\
       -x pathspec - gives the path of where to create the .dbg C include
                        file that maps message Ids to their symbolic name.
       -u - input file is Unicode.
       -U - messages in .BIN file should be Unicode.
       filename.mc - gives the names of a message text file
                     to compile.
       Generated files have the Archive bit cleared.
 

でちゃんと意味を確認しておくこと。

それにしてもたかがログを吐くだけでイベントログだのメッセージ DLL ファイルだのレジストリだのをいじらなければならないのでしょうかね。手間が掛かり過ぎますよ。Windows の方がバッドノウハウが多いような気がします。