PFND3DDDI_CHECKCOUNTER 콜백 함수(d3dumddi.h)

카운터를 설명하는 정보를 검색하기 위해 Microsoft Direct3D 런타임에서 호출됩니다. Windows WDDM(Display Driver Model) 1.3 이상 사용자 모드 디스플레이 드라이버에서 구현해야 합니다.

구문

PFND3DDDI_CHECKCOUNTER Pfnd3dddiCheckcounter;

HRESULT Pfnd3dddiCheckcounter(
  [in]                HANDLE hDevice,
                      D3DDDIQUERYTYPE unnamedParam2,
                      D3DDDI_COUNTER_TYPE *unnamedParam3,
                      UINT *unnamedParam4,
                      LPSTR unnamedParam5,
  [in, out, optional] UINT *pNameLength,
                      LPSTR unnamedParam7,
  [in, out, optional] UINT *pUnitsLength,
                      LPSTR unnamedParam9,
  [in, out, optional] UINT *pDescriptionLength
)
{...}

매개 변수

[in] hDevice

디스플레이 디바이스(그래픽 컨텍스트)에 대한 핸들입니다.

unnamedParam2

pType [out]

카운터가 출력하는 데이터 형식을 식별하는 D3DDDI_COUNTER_TYPE 열거형에서 다음 값 중 하나를 수신하는 변수에 대한 포인터입니다.

의미
D3DDDI_COUNTER_TYPE_FLOAT32 단정밀도 부동 소수 자릿수
D3DDDI_COUNTER_TYPE_UINT16 16비트 값
D3DDDI_COUNTER_TYPE_UINT32 32비트 값
D3DDDI_COUNTER_TYPE_UINT64 64비트 값

unnamedParam3

pActiveCounters [out]

Counter 매개 변수가 식별하는 카운터 식별자를 만들기 위해 할당된 동시에 활성 카운터 수를 받는 변수에 대한 포인터입니다.

unnamedParam4

pszName [out, optional]

드라이버가 카운터 식별자의 이름을 포함하는 NULL로 끝나는 문자열을 반환하는 선택적 포인터입니다.

NULL일 수 있습니다. 이 경우 앱에 이름이 필요하지 않습니다.

unnamedParam5

[in, out, optional] pNameLength

pszName 매개 변수가 지정하는 NULL로 종료된 문자열의 크기(바이트)를 받는 변수에 대한 선택적 포인터입니다.

다음은 pNameLengthpszName 매개 변수의 값에 대한 제한 사항입니다.

  • pNameLengthNULL일 수 있으며, 이 경우 앱에 이름 또는 이름 길이가 필요하지 않습니다.
  • pszNameNULL이고 pNameLengthNULL이 아니면 pNameLength의 입력 값이 무시되고 문자열의 길이(NULL 문자 종료 포함)는 pNameLength 매개 변수를 통해 반환되어야 합니다.
  • pszNamepNameLength가 모두 NULL이 아닌 경우 드라이버는 pNameLength의 입력 값을 확인하여 할당된 버퍼에 충분한 공간이 있는지 확인한 다음 pszName 문자열의 길이(NULL 문자 종료 포함)가 pNameLength 매개 변수를 통해 전달됩니다.

unnamedParam7

[in, out, optional] pUnitsLength

pszUnits 매개 변수가 지정하는 NULL 종료 문자열의 크기(바이트)를 받는 변수에 대한 선택적 포인터입니다.

다음은 pUnitsLengthpszUnits 매개 변수의 값에 대한 제한 사항입니다.

  • pUnitsLengthNULL일 수 있으며, 이 경우 앱에는 단위 이름 또는 단위 이름 길이가 필요하지 않습니다.
  • pszUnitsNULL이고 pUnitsLengthNULL이 아니면 pUnitsLength의 입력 값이 무시되고 문자열의 길이(NULL 문자 종료 포함)는 pUnitsLength 매개 변수를 통해 반환되어야 합니다.
  • pszUnitspUnitsLength가 모두 NULL이 아닌 경우 드라이버는 pUnitsLength의 입력 값을 확인하여 할당된 버퍼에 충분한 공간이 있는지 확인한 다음 pUnitsLength 매개 변수를 통해 pszUnits 문자열(NULL 문자 종료 포함)의 길이가 전달됩니다.

unnamedParam9

[in, out, optional] pDescriptionLength

pszDescription 매개 변수가 지정하는 NULL 종료 문자열의 크기(바이트)를 받는 변수에 대한 선택적 포인터입니다.

다음은 pDescriptionLengthpszDescription 매개 변수의 값에 대한 제한 사항입니다.

  • pDescriptionLengthNULL일 수 있으며, 이 경우 앱에 단위 이름 또는 단위 이름 길이가 필요하지 않습니다.
  • pszDescriptionNULL이고 pDescriptionLengthNULL이 아니면 pDescriptionLength의 입력 값이 무시되고 문자열의 길이(NULL 문자 종료 포함)는 pDescriptionLength 매개 변수를 통해 반환되어야 합니다.
  • pszDescriptionpDescriptionLength가 모두 NULL이 아닌 경우 드라이버는 pDescriptionLength의 입력 값을 확인하여 할당된 버퍼에 충분한 공간이 있는지 확인한 다음 pszDescription 문자열(NULL 문자 종료 포함)의 길이가 pDescriptionLength 매개 변수를 통해 전달됩니다.

반환 값

이 루틴이 성공하면 S_OK 반환합니다. 그렇지 않으면 다음을 포함하여 HRESULT 오류 코드를 반환합니다.

반환 코드 설명
E_INVALIDARG 범위를 벗어난 디바이스 종속 카운터가 요청되거나 문자열 길이가 버퍼에 전체 문자열을 포함할 만큼 충분히 크지 않습니다.
이 함수에 사용되는 모든 문자열은 유니코드를 기반으로 하지만 항상 영어 로캘에 있으며 다른 로캘로 지역화되지 않습니다.

설명

이 함수는 Microsoft Direct3D 10 이상을 지원하는 CheckCounter 함수와 유사하게 동작해야 합니다.

카운터는 일반적으로 프레임을 캡처하고 여러 번 재생하는 도구에서 사용됩니다. 정확한 타이밍 정보를 기록하는 패스는 다른 패스와는 별개입니다. 이후 패스에서는 매번 다른 카운터 집합이 사용됩니다. 우선 순위는 호출을 그리기 위해 카운터 결과의 정확한 상관 관계를 얻는 것이며 재생 중에 발생하는 오버헤드를 희생할 수 있습니다. 드라이버는 정확한 상관 관계를 보장하기 위해 플러시 호출 또는 유휴 대기 호출을 삽입해야 합니다.

일반적으로 앱은 수백 개에 달하는 소수의 가능한 네이티브 카운터만 동시에 모니터링할 수 있습니다. 또한 드라이버는 D3DDDIQUERYTYPE 열거형(잘 알려진 카운터 ID 및 디바이스별 카운터 ID 모두)에서 지원되는 각 카운터 ID를 모니터링하는 데 사용되는 활성 카운터 수를 나타내야 합니다. 예를 들어 드라이버는 FillRateUtilized 변수를 모니터링하려면 최대 4개의 동시 활성 카운터 중 3개( pActiveCounters 매개 변수로 표시됨)가 필요함을 나타낼 수 있습니다. 따라서 해당 카운터 ID에 하나 이하의 활성 카운터가 필요한 한 앱은 다른 카운터 ID를 모니터링할 수도 있습니다.

카운터 ID를 항상 모니터링할 수 있고 다른 카운터 ID 모니터링을 방해하지 않는 경우 카운터 ID에 필요한 동시 활성 카운터 수는 0일 수 있습니다.

요구 사항

   
지원되는 최소 클라이언트 Windows 8.1
지원되는 최소 서버 Windows Server 2012 R2
대상 플랫폼 데스크톱
헤더 d3dumddi.h(D3d10umddi.h 포함)

참고 항목

CheckCounter

D3DDDIQUERYTYPE