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 参数设置为零。 如果 pDataNULL,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标志,则驱动程序不应终止并提交缓冲区。 如果运行时在 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)

另请参阅

CheckCounter

D3D10DDI_DEVICEFUNCS

QueryEnd

SetPredication

pfnSetErrorCb