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
要记录的事件的类型。 此参数可以是下列值之一。
有关事件类型的详细信息,请参阅 事件类型。
[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,这将返回以下扩展错误代码之一。
错误代码 | 意义 |
---|---|
|
其中一个参数无效。
如果要记录的消息数据太大,则会在 Windows Server 2003 上返回此错误。 如果 dwDataSize 参数大于 261,991(0x3ff67),则 Windows Server 2003 上的 RPC 服务器将返回此错误。 |
|
内存资源不足,无法完成操作。 |
|
数组边界无效。
如果要记录的消息数据太大,则返回此错误。 在 Windows Vista 及更高版本上,如果 dwDataSize 参数大于 61,440(0xf000),则返回此错误。 |
|
存根收到了不良数据。
如果要记录的消息数据太大,则会在 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 |