부모 컨트롤에 대 한 로깅 Api 사용

활동 보고 (로깅)

WpcEvent 헤더 파일에는 미리 정의 된 각 작업 이벤트 유형과 사용자 지정 형식에 대 한 필드 정의가 포함 되어 있습니다. 이 샘플 코드는 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 공급자는 GUID {01090065-B467-4503-9b28-533766761087}를 사용 하 여 Microsoft.com/Windows/parentalcontrols로 이름이 지정 됩니다. 기본 로컬 로깅 채널은 Microsoft.com/Windows/ParentalControls/LocalEvents.

로그 파일은 Windows \ System32 \ Wpc Logs 폴더에 저장 됩니다 \ .

임박한 시간 제한 로그 아웃 알림

자녀 보호 시스템은 시간 제한을 기반으로 제어 된 사용자의 로그 아웃 하기 전에 15 분 마다 경고 이벤트를 발생 시킵니다. 응용 프로그램은 특히 표준 Windows 알림이 표시 되지 않는 DirectX 전체 화면 모드에서 실행 되는 경우 이러한 이벤트를 구독할 수 있습니다. 이벤트를 구독 하 고, 콜백 함수를 등록 하 고, 이벤트를 수신 하는 방법을 보여 주는 샘플 코드가 제공 됩니다.

보호자 통제 확장성 기능 개요

이벤트 _ 데이터 _ 설명자

EventDataDescCreate

WPC _ ARGS _ CONVERSATIONINITEVENT