공급자 특성
공급자 특성은 개별 공급자 등록에 더 많은 데이터를 연결하는 방법입니다. 매니페스트 기반 또는 TraceLogging 공급자에 사용할 수 있습니다. 여기에는 현재 공급자 이름 및/또는 공급자 그룹을 개별 공급자 등록에 추가하는 지원이 포함됩니다. 나중에 더 많은 특성 유형이 추가될 가능성이 높습니다. 이 정보는 집합 형식의 이진 Blob으로 커널에 저장됩니다.
특성은 등록에 대해 한 번만 설정할 수 있습니다. 해당 등록에 대한 특성을 설정하려는 추가 시도는 실패합니다.
매니페스트 기반 공급자에서 공급자 특성을 설정하려면 EventProviderSetTraits 정보 클래스를 사용하여 EventSetInformation 함수를 호출합니다. EventInformation 버퍼에는 다음 형식의 이진 Blob이 포함되어야 합니다.
{
UINT16 TraitsSize // Total size of the traits including this field
CHAR[] ProviderName // Null terminated utf-8 provider name
TRAIT[] Traits // Zero or more individual traits
}
개별 특성은 다음 형식이어야 합니다.
TRAIT {
UINT16 TraitSize // Size of this individual trait including this field
UINT8 Type // ETW_PROVIDER_TRAIT_TYPE
BYTE[] Data
}
개별 특성에서 ETW_PROVIDER_TRAIT_TYPE 다음과 같이 정의됩니다.
typedef enum {
EtwProviderTraitTypeGroup = 1,
EtwProviderTraitTypeMax
} ETW_PROVIDER_TRAIT_TYPE;
TraceLoggingRegister 함수가 호출되면 TraceLogging 공급자가 공급자 특성을 자동으로 설정합니다. TraceLogging 공급자의 이름은 항상 특성에 포함됩니다. 공급자 정의의 TraceLoggingOptionGroup 매크로를 사용하여 추적 로깅 공급자에서 그룹을 설정할 수 있습니다.
사용자 지정 특성
가능한 255가지 특성 유형 대부분은 아직 정의되지 않았지만 특성 유형 1-127은 Microsoft에서 정의하도록 예약되어 있습니다. 나머지 높은 인덱싱된 형식 값은 외부 개발자가 적합할 때 사용할 수 있습니다. 공급자에 사용자 지정 특성을 추가하는 것을 고려하는 사람은 다음과 같은 이유로 총 특성 크기를 256바이트 미만으로 유지해야 합니다.
- 특성은 공급자를 위해 작성된 모든 이벤트에 포함됩니다. 특성이 크면 로그 파일이 매우 커질 수 있습니다.
- 특성은 공급자의 수명 동안 페이지가 없는 커널 풀에 저장됩니다.
공급자 그룹
공급자 그룹은 공급자 자체와 매우 유사한 GUID 정의 제어 가능한 엔터티입니다. 주요 차이점은 공급자 GUID를 사용하여 공급자의 등록만 제어하는 반면 그룹은 모든 멤버 등록을 제어한다는 것입니다. 예를 들어 지정된 키워드(keyword) 및 수준을 사용하여 공급자 그룹을 사용하도록 설정하면 해당 키워드(keyword) 수준인 모든 그룹 멤버 등록이 활성화됩니다.
그룹 멤버 자격은 사용 권한으로 제한될 수 있습니다. EventSetInformation의 호출자에게 지정된 그룹에 가입할 수 있는 권한이 없으면 멤버 자격이 거부됩니다.
경우에 따라 추적 세션 컨트롤러는 그룹의 사용에서 몇 가지 공급자를 제외하려고 할 수 있습니다. 이 작업은 허용되지 않는 목록을 설정하여 수행할 수 있습니다. 허용되지 않는 목록은 단일 로깅 세션에 대한 그룹 설정에 따라 사용하도록 설정되지 않는 공급자 GUID 목록입니다. 허용되지 않는 목록은 TraceSetInformation 및 TraceSetDisallowList 정보 클래스를 사용하여 동적으로 변경할 수 있습니다.
대부분의 사용 가능 작업은 공급자 그룹에 대해 개별 공급자와 비슷한 방식으로 수행할 수 있지만 몇 가지 예외가 있습니다. 다음과 같은 예외가 있습니다.
- 공급자 그룹은 프라이빗 추적 세션에서 제어할 수 없습니다.
- 이벤트 이름, 이벤트 ID 및 페이로드 필터는 개별 공급자의 특정 정보를 가정하므로 공급자 그룹에는 적용되지 않습니다.