使用家長監護記錄 API
活動報告 (記錄)
WpcEvent.h 標頭檔包含每個預先定義活動事件種類和自訂類型的欄位定義。 此範例程式碼示範使用 ETW 發佈 API 記錄立即訊息交談邀請事件的步驟:
#include <windows.h>
#include <evntprov.h>
#include <wpcevent.h>
#pragma comment(lib, "advapi32.lib")
#define BYTELEN(x) ((wcslen(x) + 1) * sizeof(WCHAR))
void main()
{
REGHANDLE hWpc = 0;
// Register
ULONG res = EventRegister(&WPCPROV, NULL, NULL, &hWpc);
// Log an event
PCWSTR pcszAppName = L"SuperIM";
PCWSTR pcszAppVersion = L"7.0";
PCWSTR pcszAccountName = L"Kate";
PCWSTR pcszConvID = L"102";
PCWSTR pcszRequestingIP = L"192.168.2.100";
PCWSTR pcszSender = L"imperson@isp.com";
const DWORD dwReason = WPCFLAG_ISBLOCKED_NOTBLOCKED;
const DWORD dwRecipCount = 1;
PCWSTR pcszRecipient = L"otherim@isp.com";
EVENT_DATA_DESCRIPTOR eventData[WPC_ARGS_CONVERSATIONINITEVENT_CARGS];
EventDataDescCreate(&eventData[WPC_ARGS_CONVERSATIONINITEVENT_APPNAME],
(const PVOID)pcszAppName, (ULONG)BYTELEN(pcszAppName));
EventDataDescCreate(&eventData[WPC_ARGS_CONVERSATIONINITEVENT_APPVERSION],
(const PVOID)pcszAppVersion,(ULONG)BYTELEN(pcszAppVersion));
EventDataDescCreate(
&eventData[WPC_ARGS_CONVERSATIONINITEVENT_ACCOUNTNAME],
(const PVOID)pcszAccountName, (ULONG)BYTELEN(pcszAccountName));
EventDataDescCreate(&eventData[WPC_ARGS_CONVERSATIONINITEVENT_CONVID],
(const PVOID)pcszConvID, (ULONG)BYTELEN(pcszConvID));
EventDataDescCreate(
&eventData[WPC_ARGS_CONVERSATIONINITEVENT_REQUESTINGIP],
(const PVOID)pcszRequestingIP, (ULONG)BYTELEN(pcszRequestingIP));
EventDataDescCreate(&eventData[WPC_ARGS_CONVERSATIONINITEVENT_SENDER],
(const PVOID)pcszSender, (ULONG)BYTELEN(pcszSender));
EventDataDescCreate(&eventData[WPC_ARGS_CONVERSATIONINITEVENT_REASON],
(const PVOID)&dwReason, sizeof(dwReason));
EventDataDescCreate(&eventData[WPC_ARGS_CONVERSATIONINITEVENT_RECIPCOUNT],
(const PVOID)&dwRecipCount, sizeof(dwRecipCount));
EventDataDescCreate(&eventData[WPC_ARGS_CONVERSATIONINITEVENT_RECIPIENT],
(const PVOID)pcszRecipient, (ULONG)BYTELEN(pcszRecipient));
ULONG lRet = EventWrite(hWpc, &WPCEVENT_IM_INVITATION, ARRAYSIZE(eventData), eventData);
// Unregister
EventUnregister(hWpc);
}
自訂記錄
若要讓應用程式擴充在預先定義事件集或一個自訂類型之外記錄的事件,您必須在應用程式資訊清單中定義該事件的提供者。 接著可以匯入 WPC 預設通道,然後記錄應用程式定義的事件。
記錄許可權
WPC 記錄通道是由 存取控制清單 控制, (ACL) ,僅提供系統管理員的完整存取權。 非系統管理員帳戶可能會寫入通道,但沒有讀取或刪除存取權。 通道的存取是使用 ETW API。
家長監護記錄提供者詳細資料
WPC 提供者的名稱是 Microsoft.com/Windows/ParentalControls GUID {01090065-B467-4503-9B28-533766761087}。 預設本機記錄通道 Microsoft.com/Windows/ParentalControls/LocalEvents。
記錄檔會儲存在 Windows\System32\Wpc\Logs 資料夾中。
即將逾時限制登出的通知
家長監護系統會在 15 分鐘後再次引發警告事件,然後于 1 分鐘之後,根據時間限制登出受控制的使用者。 應用程式可以訂閱這些事件,特別是在未顯示標準 Windows 通知的 DirectX 全螢幕模式中執行時。 提供範例程式碼,示範如何訂閱事件、註冊回呼函式,以及接收事件。
相關主題