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