ReadEventLog()で取得した時間がずれるのですが・・・

[戻る]
はにはに 2005/03/21(月) 11:08:46
初めまして、VC++初心者のはにはにです。

現在、NT系OSのイベントビューアからイベントログを取得して、
それを表示するというものを作っています。
イベントログの取得はReadEventLog()を使用しているのですが、
WindowsNTにて起動させると、時間が-17時間ずれてしまいます。(2000、XPでは、ずれません
でした)
タイムゾーンを変更していろいろ試してみると、標準時だと正確に(イベントビューアに表示さ
れている時間と一致)表示されます。
時間がなぜずれるのかわかりません。また、その解決策を教えていただきたいです。
(日本時間(GMT+9時間)にて、-17時間ずれます)

<ソースの一部>(エラー処理は省略します)
HANDLR hEvent;
EVENTLOGRECORD *Event;
DWORD Bufsize; 
DWORD Read;
DWORD Needed;
BOOL bret;
char *EventTime;

hEventLog = OpenEventLog(NULL,System);

for(;;){
    Bufsize = 1;
    Event = (EVENTLOGRECORD*)malloc(Bufsize);

    bret = ReadEventLog(hEventLog,
        EVENTLOG_SEQUENTIAL_READ | EVENTLOG_FORWARDS_READ,    
        0,
        Event,
        BufSize,
        &Read,
        &Needed);
    free(Event)
    Bufsize = Needed;
    Event = (EVENTLOGRECORD*)malloc(Bufsize);

    bret = ReadEventLog(hEventLog,
        EVENTLOG_SEQUENTIAL_READ | EVENTLOG_FORWARDS_READ,
        0,
        Event,
        Bufsize,
        &dwRead,
        &dwNeeded);

    EventTime = ctime((const long*)&Event->TimeGenerated);
}

CloseEventLog(hEvent);


開発環境
WindowsXP SP2、VC++6.0

ころたこ 2005/03/25(金) 10:09:13
WindowsNTのDLLのバグではありませんか?
スタティックリンクでビルドしてみてください。

あてずっぽ 2005/03/25(金) 10:20:24
> スタティックリンクでビルドしてみてください。

逆に 2000/XP 系の処理をスタティックリンクしてるせいで
NT で誤動作している可能性も確認してみよう。

古いスレッドには追加発言できません。