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 주소로 간주됩니다.

예제

이 함수를 호출하는 방법을 보여 주는 예제는 TdhFormatProperty를 사용하여 이벤트 데이터 사용을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 7 [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 R2 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 tdh.h
라이브러리 Tdh.lib
DLL Tdh.dll