ReportEventA 函数 (winbase.h)

在指定的事件日志末尾写入一个条目。

语法

BOOL ReportEventA(
  [in] HANDLE hEventLog,
  [in] WORD   wType,
  [in] WORD   wCategory,
  [in] DWORD  dwEventID,
  [in] PSID   lpUserSid,
  [in] WORD   wNumStrings,
  [in] DWORD  dwDataSize,
  [in] LPCSTR *lpStrings,
  [in] LPVOID lpRawData
);

参数

[in] hEventLog

事件日志的句柄。 RegisterEventSource 函数返回此句柄。

从 SP2 的 Windows XP 开始,此参数不能是 安全 日志的句柄。 若要将事件写入 安全 日志,请使用 AuthzReportSecurityEvent 函数。

[in] wType

要记录的事件的类型。 此参数可以是下列值之一。

价值 意义
EVENTLOG_SUCCESS
0x0000
信息事件
EVENTLOG_AUDIT_FAILURE
0x0010
失败审核事件
EVENTLOG_AUDIT_SUCCESS
0x0008
成功审核事件
EVENTLOG_ERROR_TYPE
0x0001
错误事件
EVENTLOG_INFORMATION_TYPE
0x0004
信息事件
EVENTLOG_WARNING_TYPE
0x0002
警告事件
 

有关事件类型的详细信息,请参阅 事件类型

[in] wCategory

事件类别。 这是特定于源的信息;类别可以具有任何值。 有关详细信息,请参阅 事件类别

[in] dwEventID

事件标识符。 事件标识符指定与事件源关联的消息文件中的条目。 有关详细信息,请参阅 事件标识符

[in] lpUserSid

指向当前用户安全标识符的指针。 如果不需要安全标识符,则可以 NULL 此参数。

[in] wNumStrings

lpStrings 参数指向的数组中的插入字符串数。 值为零表示不存在任何字符串。

[in] dwDataSize

要写入日志的事件特定原始数据(二进制)数据的字节数。 如果此参数为零,则不存在特定于事件的数据。

[in] lpStrings

指向缓冲区的指针,其中包含在事件查看器向用户显示字符串之前合并到消息中的 null 终止字符串的数组。 此参数必须是有效的指针(或 NULL),即使 wNumStrings 为零也是如此。 每个字符串限制为 31,839 个字符。

在 Windows Vista 之前 每个字符串限制为 32K 个字符。

[in] lpRawData

指向包含二进制数据的缓冲区的指针。 此参数必须是有效的指针(或 NULL),即使 dwDataSize 参数为零也是如此。

返回值

如果函数成功,则返回值为非零值,指示该条目已写入日志。

如果函数失败,则返回值为零。 若要获取扩展错误信息,请调用 GetLastError,这将返回以下扩展错误代码之一。

错误代码 意义
ERROR_INVALID_PARAMETER
其中一个参数无效。

如果要记录的消息数据太大,则会在 Windows Server 2003 上返回此错误。 如果 dwDataSize 参数大于 261,991(0x3ff67),则 Windows Server 2003 上的 RPC 服务器将返回此错误。

ERROR_NOT_ENOUGH_MEMORY
内存资源不足,无法完成操作。
RPC_S_INVALID_BOUND
数组边界无效。

如果要记录的消息数据太大,则返回此错误。 在 Windows Vista 及更高版本上,如果 dwDataSize 参数大于 61,440(0xf000),则返回此错误。

RPC_X_BAD_STUB_DATA
存根收到了不良数据。

如果要记录的消息数据太大,则会在 Windows XP 上返回此错误。 如果 dwDataSize 参数大于 262,143(0x3ffff),则 Windows XP 上的 RPC 服务器将返回此错误。

其他
使用 FormatMessage 获取返回错误的消息字符串。

言论

此函数用于记录事件。 该条目将写入由 hEventLog 参数标识的源配置的日志的末尾。 ReportEvent 函数在将条目存储在日志中之前添加时间、条目长度和偏移量。 若要使函数能够添加用户名,必须在 lpUserSid 参数中提供用户的 SID。

根据运行应用程序的客户端使用的 Windows 版本和记录消息的服务器,可以记录消息数据的大小有不同的大小限制。 服务器由传递给 RegisterEventSource 函数的 lpUNCServerName 参数确定。 当超出取决于 Windows 版本的大小限制时,将返回不同的错误。

如果日志中的字符串包含 %n,其中 n 是整数值(例如,%1),事件查看器将其视为插入字符串。 由于 IPv6 地址可以包含此字符序列,因此必须提供格式说明符(!S!) 记录包含 IPv6 地址的事件消息。 此说明符告知格式设置代码在字面上使用字符串,而不执行任何进一步扩展(例如,“我的 IPv6 地址为:%1!S!").

例子

有关示例,请参阅 报告事件

注意

winbase.h 标头将 ReportEvent 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
最低支持的客户端 Windows 2000 Professional [仅限桌面应用]
支持的最低服务器 Windows 2000 Server [仅限桌面应用]
目标平台 窗户
标头 winbase.h (包括 Windows.h)
Advapi32.lib
DLL Advapi32.dll

另请参阅

ClearEventLog

CloseEventLog

事件日志文件格式

事件日志记录函数

OpenEventLog

ReadEventLog

RegisterEventSource