共用方式為


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 開始,此參數不能是 Security 記錄的句柄。 若要將事件寫入至 Security 記錄檔,請使用 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
Warning 事件
 

如需事件類型的詳細資訊,請參閱 事件類型

[in] wCategory

事件類別目錄。 這是來源特定資訊;類別可以有任何值。 如需詳細資訊,請參閱 事件類別目錄

[in] dwEventID

事件標識碼。 事件標識子會指定與事件來源相關聯之訊息檔中的專案。 如需詳細資訊,請參閱 事件識別碼

[in] lpUserSid

目前使用者安全性標識碼的指標。 如果不需要安全性標識碼,則可以 NULL 此參數。

[in] wNumStrings

lpStrings 參數所指向陣列中的插入字串數目。 值為零表示沒有字串存在。

[in] dwDataSize

要寫入記錄的事件特定原始數據位元組數目。 如果此參數為零,則沒有任何事件特定數據存在。

[in] lpStrings

緩衝區的指標,其中包含在事件查看器向用戶顯示字串之前合併至訊息的 Null 終止字串陣列陣列。 即使 wNumStrings 為零,此參數也必須是有效的指標(或 NULL)。 每個字串限制為31,839個字元。

在 Windows Vista 之前 每個字串限制為 32K 個字元。

[in] lpRawData

包含二進位數據的緩衝區指標。 即使 dwDataSize 參數為零,這個參數必須是有效的指標(或 NULL)。

傳回值

如果函式成功,傳回值為非零值,表示專案已寫入記錄檔。

如果函式失敗,傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 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,其中 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