Freigeben über


Verwenden von Protokollierungs-APIs für Jugendschutz

Aktivitätsberichte (Protokollierung)

Die WpcEvent.h-Headerdatei enthält Definitionen der Felder für jeden vordefinierten Aktivitätsereignistyp und den benutzerdefinierten Typ. In diesem Beispielcode werden die Schritte zum Protokollieren eines Chatunterhaltungseinladungsereignisses mithilfe der ETW-Veröffentlichungs-API veranschaulicht:

#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);
}

Benutzerdefinierte Protokollierung

Damit eine Anwendung die Ereignisse erweitert, die außerhalb der Gruppe vordefinierter Ereignisse oder des einen benutzerdefinierten Typs protokolliert werden, müssen Sie einen Anbieter dafür im Anwendungsmanifest definieren. Anschließend kann der WPC-Standardkanal importiert und anwendungsdefinierte Ereignisse protokolliert werden.

Protokollierungsrechte

Der WPC-Protokollierungskanal wird von der Zugriffssteuerungsliste (Access Control List , ACL) gesteuert, um vollzugriff nur für Administratoren zu ermöglichen. Nicht-Administratorkonten können in den Kanal schreiben, aber keinen Lese- oder Löschzugriff haben. Der Zugriff auf den Kanal erfolgt über die ETW-API.

Details des Protokollierungsanbieters für Jugendschutz

Der WPC-Anbieter hat den Namen Microsoft.com/Windows/ParentalControls mit der GUID {01090065-B467-4503-9B28-533766761087}. Der lokale Standardprotokollierungskanal ist Microsoft.com/Windows/ParentalControls/LocalEvents.

Protokolldateien werden im Ordner Windows\System32\Wpc\Logs gespeichert.

Benachrichtigung über bevorstehende Abmeldung von Zeitlimits

Das Jugendschutzsystem löst ein Warnereignis nach 15 Minuten und erneut nach 1 Minute aus, bevor sich ein kontrollierter Benutzer basierend auf Zeiteinschränkungen abmeldet. Anwendungen können diese Ereignisse abonnieren, insbesondere wenn sie im DirectX-Vollbildmodus ausgeführt werden, in dem windows-Standardbenachrichtigungen nicht angezeigt werden. Es wird ein Beispielcode bereitgestellt, der zeigt, wie Sie die Ereignisse abonnieren, eine Rückruffunktion registrieren und die Ereignisse empfangen.

Übersicht über die Erweiterbarkeitsfeatures für Die Kindersicherung

EVENT_DATA_DESCRIPTOR

EventDataDescCreate

WPC_ARGS_CONVERSATIONINITEVENT