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 参数设置为零。 如果 pData 为 NULL,QueryGetData 可以指示查询作的状态(例如,查询作是否已完成)。

DataSize

[out]pData 参数指向的查询数据的大小(以字节为单位)。 用户模式显示驱动程序可以将 dataSize 设置为零,并将 pData 设置为 NULL。 如果 DataSize 为零,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标志,驱动程序不应终止并提交缓冲区。 如果运行时在 标志 参数中传递了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)

另请参阅

CheckCounter

D3D10DDI_DEVICEFUNCS

QueryEnd

SetPredication

pfnSetErrorCb