TdhFormatProperty 함수(tdh.h)
표시할 속성 값의 형식을 지정합니다.
구문
TDHSTATUS TdhFormatProperty(
[in] PTRACE_EVENT_INFO EventInfo,
[in, optional] PEVENT_MAP_INFO MapInfo,
[in] ULONG PointerSize,
[in] USHORT PropertyInType,
[in] USHORT PropertyOutType,
[in] USHORT PropertyLength,
[in] USHORT UserDataLength,
[in] PBYTE UserData,
[in, out] PULONG BufferSize,
[out, optional] PWCHAR Buffer,
[out] PUSHORT UserDataConsumed
);
매개 변수
[in] EventInfo
이벤트 정보를 포함하는 TRACE_EVENT_INFO 구조 체입니다. 이 구조를 얻으려면 TdhGetEventInformation 함수를 호출합니다.
[in, optional] MapInfo
정수 및 비트 값을 문자열에 매핑하는 EVENT_MAP_INFO 구조 체입니다. 이 구조를 얻으려면 TdhGetEventMapInformation 함수를 호출합니다. 맵의 이름을 얻으려면 EVENT_PROPERTY_INFO 구조체의 MapNameOffset 멤버를 사용합니다. 매핑된 속성에 대한 맵 정보를 제공하지 않으면 함수는 정수 또는 비트 값의 형식을 지정합니다.
[in] PointerSize
이벤트 데이터의 포인터 값 크기입니다. 크기를 얻으려면 EVENT_RECORD 액세스합니다 . EventHeader.Flags 멤버입니다. EVENT_HEADER_FLAG_32_BIT_HEADER 플래그가 설정된 경우 포인터 크기는 4바이트입니다. 그렇지 않으면 EVENT_HEADER_FLAG_64_BIT_HEADER 플래그가 설정된 경우 8바이트입니다. EVENT_RECORD 구조체(evntcons.h)는 [PEVENT_RECORD_CALLBACK 콜백 함수]에 전달됩니다.
[in] PropertyInType
속성의 입력 형식입니다. EVENT_PROPERTY_INFO 구조체의 InType 멤버를 사용하여 이 매개 변수를 설정합니다.
[in] PropertyOutType
속성의 출력 형식입니다. EVENT_PROPERTY_INFO 구조체의 OutType 멤버를 사용하여 이 매개 변수를 설정합니다.
[in] PropertyLength
속성의 길이(바이트)입니다. 이 매개 변수를 설정하려면 EVENT_PROPERTY_INFO 구조체의 Length 멤버를 사용합니다.
[in] UserDataLength
UserData 버퍼의 크기(바이트)입니다. 설명 부분을 참조하세요.
[in] UserData
이벤트 데이터를 포함하는 버퍼입니다. 설명 부분을 참조하세요.
[in, out] BufferSize
버퍼 버퍼의 크기(바이트)입니다. 함수가 성공하면 이 매개 변수는 사용된 버퍼의 크기를 받습니다. 버퍼가 너무 작으면 함수는 ERROR_INSUFFICIENT_BUFFER 반환하고 이 매개 변수를 필요한 버퍼 크기로 설정합니다. 입력 시 버퍼 크기가 0이면 버퍼에 데이터가 반환되지 않으며 이 매개 변수는 필요한 버퍼 크기를 받습니다.
[out, optional] Buffer
형식이 지정된 속성 값을 포함하는 호출자 할당 버퍼입니다. 필요한 버퍼 크기를 확인하려면 이 매개 변수를 NULL 로 설정하고 BufferSize 를 0으로 설정합니다.
[out] UserDataConsumed
사용된 이벤트 데이터의 길이(바이트)입니다. 이 값을 사용하여 UserData 및 UserDataLength 매개 변수의 값을 조정합니다. 설명 부분을 참조하세요.
반환 값
성공하면 ERROR_SUCCESS 반환합니다. 그렇지 않으면 이 함수는 다른 코드 외에도 다음 반환 코드 중 하나를 반환합니다.
반환 코드 | 설명 |
---|---|
ERROR_INSUFFICIENT_BUFFER | pBuffer 버퍼의 크기가 너무 작습니다. pBufferSize에 설정된 필수 버퍼 크기를 사용하여 새 버퍼를 할당합니다. |
ERROR_INVALID_PARAMETER | 하나 이상의 매개 변수가 잘못되었습니다. |
ERROR_EVT_INVALID_EVENT_DATA | 이벤트 데이터가 매니페스트의 이벤트 정의와 일치하지 않습니다. |
설명
일반적으로 루프에서 이 함수를 호출합니다. TRACE_EVENT_INFO 사용합니다 . 루프를 제어하는 TopLevelPropertyCount 멤버입니다( TdhGetEventInformation 함수 는 TRACE_EVENT_INFO 구조를 반환함). 루프를 입력하기 전에 UserData 및 UserDataLength 매개 변수를 각각 EVENT_RECORD 구조체의 UserData 및 UserDataLength 멤버 값으로 설정합니다. EVENT_RECORD 구조체는 [PEVENT_RECORD_CALLBACK 콜백 함수]에 전달됩니다.
속성이 배열인지 여부를 확인합니다. 속성은 EVENT_PROPERTY_INFO 경우 배열입니다 . Flags 멤버가 PropertyParamCount로 설정되거나 EVENT_PROPERTY_INFO.count 멤버가 1보다 큰 경우 배열의 요소 수에 따라 루프에서 TdhFormatProperty 함수를 호출합니다.
TdhFormatProperty 함수를 호출한 후 UserDataConsumed 매개 변수 값을 사용하여 UserData 및 UserDataLength 매개 변수의 새 값을 설정합니다(UserDataLength에서 UserDataConsumed 빼기 및 UserDataLength를 사용하여 UserData 포인터 증가).
속성이 IP V6 주소인 경우 PropertyLength 매개 변수를 IN6_ADDR 구조체의 크기로 설정해야 합니다. 속성은 다음 조건이 충족되는 경우 IP V6 주소로 간주됩니다.
- EVENT_PROPERTY_INFO 구조체의 InType 멤버가 TDH_INTYPE_BINARY
- EVENT_PROPERTY_INFO 구조체의 OutType 멤버가 TDH_OUTTYPE_IPV6
- EVENT_PROPERTY_INFO 구조체의 Length 멤버는 0입니다.
예제
이 함수를 호출하는 방법을 보여 주는 예제는 TdhFormatProperty를 사용하여 이벤트 데이터 사용을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 7 [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2008 R2 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | tdh.h |
라이브러리 | Tdh.lib |
DLL | Tdh.dll |