关于ReadEventLog函数

ztmyoyo 2005-01-18 03:41:14
这个函数里的lpBuffer这个结构中,TimeWritten就是时间吗?该怎么换算呢?EventID怎么换算?
...全文
225 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ztmyoyo 2005-01-27
  • 打赏
  • 举报
回复
而且取出来的事件只是其中一部分,就算取出来的这一部分也不是按照日期排序后的前几个,而是1月27号里有几个,1月26号里有几个,怎么会这样啊!晕死了
ztmyoyo 2005-01-27
  • 打赏
  • 举报
回复
各位帮忙看下这个
void CEventDlg::OnButton3()
{//参考http://www.codeproject.com/system/sysevent.asp
HANDLE hdle;
EVENTLOGRECORD *ptr;
BYTE buff[4096];
DWORD read_len, next_len;
ptr=(EVENTLOGRECORD *)&buff;
hdle=OpenEventLog("", "Application");// System
if (hdle==NULL)
{
MessageBox("打开日志失败");
}
else
{
long mRet;
char lpszSourceName[255]={0};
char lpszComputerName[255]={0};
unsigned uStepOfString;
char* pStrings;
char szExpandedString[1024]={0};
while(ReadEventLog(hdle,EVENTLOG_FORWARDS_READ|EVENTLOG_SEQUENTIAL_READ,
1,ptr,sizeof(buff),&read_len,&next_len))
{
mRet=ptr->EventID;//事件id
mRet=ptr->EventType;//事件类型
mRet=ptr->TimeWritten;//
mRet=ptr->NumStrings;//
mRet=ptr->Length;//
mRet=sizeof(EVENTLOGRECORD);
strcpy(lpszSourceName, (LPTSTR)((LPBYTE)ptr +mRet));//事件源
mRet+= strlen(lpszSourceName) + 1;
strcpy(lpszComputerName, (LPTSTR)((LPBYTE)ptr + mRet));//机器名
mRet+= strlen(lpszComputerName) + 1;
if(ptr->UserSidLength>0){;}//
mRet=ptr->DataOffset-ptr->StringOffset;
if(mRet>0)//事件描述
{
pStrings=new char[mRet];
memcpy(pStrings,(LPBYTE)ptr+ptr->StringOffset,mRet);
uStepOfString=0;
for(int x=0;x<ptr->NumStrings;x++)
{
if(x==0)
{
strcpy(szExpandedString, (TCHAR *)pStrings + uStepOfString);
if(x<(UINT)ptr->NumStrings - 1)strcat(szExpandedString, ",");
}
else strcat(szExpandedString, pStrings + uStepOfString);
uStepOfString = strlen(pStrings + uStepOfString) + 1;
}
delete [] pStrings;
}
MessageBox(lpszSourceName,szExpandedString);
}
CloseEventLog(hdle);
}
}
为什么事件服务器里每个事件的信息有的能取到有的取不到呢?
取不到的mRet=ptr->DataOffset-ptr->StringOffset;,mRet为0,可这个事件在事件查看器里明明有信息的啊!
ztmyoyo 2005-01-20
  • 打赏
  • 举报
回复
可TimeWritten是象1087951193这样的值,应该是从1970年1月1号 0点开始到现在经过的秒数。
FileTimeToSystemTime的FileTime是个带高半字节和低半字节的结构,这个函数不对吧?
oyljerry 2005-01-18
  • 打赏
  • 举报
回复
FileTimeToSystemTime
ztmyoyo 2005-01-18
  • 打赏
  • 举报
回复
VC应该有转换成系统时间用的函数吧
老夏Max 2005-01-18
  • 打赏
  • 举报
回复
TimeWritten
Specifies the time at which this entry was received by the service to be written to the logfile. This time is measured in the number of seconds elapsed since 00:00:00 January 1, 1970, Universal Coordinated Time.

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧