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
要記錄的事件類型。 此參數可以是下列其中一個值。
如需事件類型的詳細資訊,請參閱 事件類型。
[in] wCategory
事件類別目錄。 這是來源特定資訊;類別可以有任何值。 如需詳細資訊,請參閱 事件類別目錄。
[in] dwEventID
事件標識碼。 事件標識子會指定與事件來源相關聯之訊息檔中的專案。 如需詳細資訊,請參閱 事件識別碼。
[in] lpUserSid
目前使用者安全性標識碼的指標。 如果不需要安全性標識碼,則可以 NULL 此參數。
[in] wNumStrings
lpStrings 參數所指向陣列中的插入字串數目。 值為零表示沒有字串存在。
[in] dwDataSize
要寫入記錄的事件特定原始數據位元組數目。 如果此參數為零,則沒有任何事件特定數據存在。
[in] lpStrings
緩衝區的指標,其中包含在事件查看器向用戶顯示字串之前合併至訊息的 Null 終止字串陣列陣列。 即使 wNumStrings
在 Windows Vista 之前 :每個字串限制為 32K 個字元。
[in] lpRawData
包含二進位數據的緩衝區指標。 即使 dwDataSize 參數為零,這個參數必須是有效的指標(或 NULL)。
傳回值
如果函式成功,傳回值為非零值,表示專案已寫入記錄檔。
如果函式失敗,傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 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,其中 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 |