Verwenden von Protokollierungs-APIs für Jugendschutz

Aktivitätsberichterstattung (Protokollierung)

Die Headerdatei WpcEvent.h enthält Definitionen der Felder für jeden vordefinierten Aktivitätsereignistyp und den benutzerdefinierten Typ. Dieser Beispielcode zeigt die Schritte zum Protokollieren eines Einladungsereignisses für Chatnachrichten mithilfe der ETW-Veröffentlichungs-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);
}

Benutzerdefinierte Protokollierung

Damit eine Anwendung die außerhalb des Satzes vordefinierter Ereignisse oder eines benutzerdefinierten Typs protokollierten Ereignisse erweitern kann, müssen Sie einen Anbieter für diese im Anwendungsmanifest definieren. Der WPC-Standardkanal kann dann importiert und anwendungsdefinierte Ereignisse protokolliert werden.

Protokollierungsrechte

Der WPC-Protokollierungskanal wird über die Zugriffssteuerungsliste (Access Control List, ACL) gesteuert, um nur Administratoren Vollzugriff zu gewähren. Konten ohne Administratorrechte können in den Kanal schreiben, haben aber keinen Lese- oder Löschzugriff. Der Zugriff auf den Kanal erfolgt über die ETW-API.

Details des Anbieters für die Protokollierung von Jugendschutzfunktionen

Der WPC-Anbieter heißt Microsoft.com/Windows/ParentalControls mit 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 Zeitlimits: Abmeldung

Das Jugendschutzsystem löst ein Warnungsereignis nach 15 Minuten und erneut um 1 Minute vor der Abmeldung eines kontrollierten Benutzers basierend auf Zeiteinschränkungen aus. Anwendungen können diese Ereignisse abonnieren, insbesondere wenn sie im DirectX-Vollbildmodus ausgeführt werden, in dem Windows Standardbenachrichtigungen nicht angezeigt werden. Beispielcode wird bereitgestellt, der zeigt, wie die Ereignisse abonniert, eine Rückruffunktion registriert und die Ereignisse empfangen werden.

Übersicht über die Erweiterbarkeitsfunktionen für Jugendschutzelemente

_ _ EREIGNISDATENDESKRIPTOR

EventDataDescCreate

WPC _ ARGS _ CONVERSATIONINITEVENT