gpt4 book ai didi

c++ - 事件日志最旧记录号

转载 作者:可可西里 更新时间:2023-11-01 10:09:43 27 4
gpt4 key购买 nike

我正在尝试使用新的事件日志 API 从 Windows 事件日志中获取最早的记录编号,但无法让 API 返回与事件查看器显示相同的答案(查看详细信息 EventRecordID)。我正在使用的一些示例代码如下:

EVT_HANDLE log = EvtOpenLog(NULL, _logName, EvtOpenChannelPath);

EVT_VARIANT buf;
DWORD need = 0;
int vlen = sizeof(EVT_VARIANT);

ZeroMemory(&buf, vlen);
EvtGetLogInfo(log, EvtLogOldestRecordNumber, vlen, &buf, &need);

UINT64 old = buf.UInt64Val;

EvtClose(log);

API 似乎在做的是返回日志中最旧事件的记录编号,但不是最旧的可访问事件...我的意思是假设您的日志中有 10 条记录,1- 10 然后您清除日志。接下来插入的 10 个事件将是 11-20。如果您使用 API,它将返回 1,而不是事件查看器显示的 11。如果您尝试使用 EvtQuery/EvtNext 检索事件 1,它将失败并且不会返回事件——如我所料。

有人用过这种方法吗?我究竟做错了什么?我已成功将该方法与其他属性(即 EvtLogNumberOfLogRecords)一起使用,但无法使该属性 (EvtLogOldestRecordNumber) 发挥预期的作用。

http://msdn.microsoft.com/en-us/library/aa385385(v=VS.85).aspx

最佳答案

我无法让新 API 为最旧的记录号工作,不得不恢复使用旧版 API 来检索最旧的记录号。

msdn.microsoft.com/en-us/library/aa363665(VS.85).aspx

关于c++ - 事件日志最旧记录号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2958610/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com