PFND3D10DDI_QUERYGETDATA 콜백 함수(d3d10umddi.h)
QueryGetData 함수는 쿼리 작업의 상태를 폴링합니다.
구문
PFND3D10DDI_QUERYGETDATA Pfnd3d10ddiQuerygetdata;
void Pfnd3d10ddiQuerygetdata(
D3D10DDI_HDEVICE unnamedParam1,
D3D10DDI_HQUERY unnamedParam2,
VOID *unnamedParam3,
UINT DataSize,
UINT unnamedParam5
)
{...}
매개 변수
unnamedParam1
hDevice [in]: 디스플레이 디바이스(그래픽 컨텍스트)에 대한 핸들입니다.
unnamedParam2
hQuery [in]: 폴링할 쿼리 개체에 대한 핸들입니다.
unnamedParam3
pData [out]: 쿼리 작업에서 데이터를 수신하는 메모리 영역에 대한 포인터입니다. 사용자 모드 표시 드라이버는 pData 를 NULL로 설정하고 DataSize 매개 변수를 0으로 설정할 수 있습니다. pData가 NULL인 경우 QueryGetData는 쿼리 작업의 상태를 나타낼 수 있습니다(예: 쿼리 작업이 완료되었는지 여부).
DataSize
[out] pData 매개 변수가 가리키는 쿼리 데이터의 크기(바이트)입니다. 사용자 모드 표시 드라이버는 DataSize 를 0으로 설정하고 pData 를 NULL로 설정할 수 있습니다. DataSize가 0인 경우 QueryGetData는 쿼리 작업의 상태를 나타낼 수 있습니다(예: 반환 코드를 통해).
unnamedParam5
플래그 [in]: D3D10_DDI_GET_DATA_FLAG 플래그입니다.
반환 값
없음
설명
드라이버는 pfnSetErrorCb 콜백 함수를 사용하여 오류 코드를 설정할 수 있습니다.
Microsoft Direct3D 런타임이 사용자 모드 디스플레이 드라이버의 QueryEnd 함수를 호출하여 쿼리 작업을 "발급된" 상태로 전환한 후 런타임은 QueryGetData 를 호출하여 쿼리 작업이 여전히 "발급됨" 상태(DXGI_DDI_ERR_WASSTILLDRAWING)에 있는지 또는 "신호" 상태(S_OK)로 전환되었는지 확인할 수 있습니다. 쿼리 작업이 "신호" 상태이면 QueryGetData 는 pData 매개 변수에서 쿼리 데이터를 반환할 수 있습니다. 그렇지 않으면 pData 가 변경되지 않습니다. 드라이버는 pfnSetErrorCb 를 호출하여 쿼리 작업의 상태를 나타낼 수 있습니다.
런타임은 SetPredication 함수를 호출하여 D3D10_QUERY_MISCFLAG_PREDICATEHINT 만든 조건자를 사용하여 QueryGetData를 호출할 수 없습니다.
쿼리 작업이 여전히 부분 명령 버퍼에 있는 작업을 처리하는 경우 기본적으로 드라이버는 부분 명령 버퍼를 종료하고 제출해야 합니다. 그러나 런타임이 Flags 매개 변수에 D3D10_DDI_GET_DATA_DO_NOT_FLUSH 플래그를 지정한 경우 드라이버는 버퍼를 종료하고 제출해서는 안 됩니다. 런타임이 Flags 매개 변수에서 D3D10_DDI_GET_DATA_DO_NOT_FLUSH 플래그를 전달하고 쿼리 작업이 부분 명령 버퍼에 여전히 상주하는 작업을 처리하는 경우 드라이버는 pfnSetErrorCb 를 호출하여 DXGI_DDI_ERR_WASSTILLDRAWING 오류 코드만 설정할 수 있습니다.
런타임에서 QueryGetData를 호출하여 쿼리 완료를 위해 검사 경우 드라이버는 pfnSetErrorCb 호출에서 DXGI_DDI_ERR_WASSTILLDRAWING 전달하여 쿼리가 아직 완료되지 않았음을 나타낼 수 있습니다. 드라이버는 pfnSetErrorCb에 대한 호출에서 D3DDDIERR_DEVICEREMOVED 전달할 수도 있습니다. Direct3D 런타임은 다른 오류가 중요한지 확인합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista |
대상 플랫폼 | 데스크톱 |
머리글 | d3d10umddi.h(D3d10umddi.h 포함) |