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) |