DD_GETDRIVERINFO2DATA结构 (d3dhal.h)
仅 DirectX 8.0 及更高版本。
DD_GETDRIVERINFO2DATA在 DdGetDriverInfo 调用中的 guidInfo DD_GETDRIVERINFODATA 成员中指定GUID_GetDriverInfo2时,DD_GETDRIVERINFODATA 结构的 lpvData 成员中传递。
语法
typedef struct _DD_GETDRIVERINFO2DATA {
DWORD dwReserved;
DWORD dwMagic;
DWORD dwType;
DWORD dwExpectedSize;
} DD_GETDRIVERINFO2DATA;
成员
dwReserved
指定保留字段。 驱动程序不应读取或写入。
dwMagic
指定 magic 数字。 如果这是 GetDriverInfo2 调用,则具有D3DGDI2_MAGIC值。 否则,此结构实际上是 DD_STEREOMODE 调用。
dwType
指定请求的信息类型,其中包含以下D3DGDI2_TYPE_Xxx 值之一。 驱动程序应仅读取(不写入)此成员。
值 | 含义 |
---|---|
D3DGDI2_TYPE_DEFER_AGP_FREES | 仅 基于 NT 的作系统。 用于通知驱动程序,它应正确处理 AGP 内存 表面的销毁。 运行时提供指向DD_GETDRIVERINFODATA数据结构的 lpvData 字段中 DD_FREE_DEFERRED_AGP_DATA 结构的指针。 驱动程序有时会在显示模式更改之前收到此通知。 运行时仅在用于执行显示模式更改时发送此通知。 驱动程序应根据创建图面的进程检查进程销毁图面的进程标识符(PID)。 如果 PID 不同,驱动程序可能不应销毁 AGP 内存的用户模式映射,因为应用程序可能仍在使用内存。 |
D3DGDI2_TYPE_DEFERRED_AGP_AWARE | 仅 基于 NT 的作系统。 用于通知驱动程序运行时在适当时间发送D3DGDI2_TYPE_FREE_DEFERRED_AGP和D3DGDI2_TYPE_DEFER_AGP_FREES通知(例如,在释放上次未完成 AGP 内存 锁后)。 运行时提供指向DD_GETDRIVERINFODATA数据结构的 lpvData 字段中 DD_DEFERRED_AGP_AWARE_DATA 结构的指针。 |
D3DGDI2_TYPE_DXVERSION | 用于通知驱动程序应用程序正在使用的当前 DX 运行时版本。 运行时提供指向DD_GETDRIVERINFODATA数据结构的 lpvData 字段中 DD_DXVERSION 结构的指针。 |
D3DGDI2_TYPE_FREE_DEFERRED_AGP | 仅 基于 NT 的作系统。 用于通知驱动程序,现在可以安全地销毁 AGP 内存 的所有用户模式映射。 驱动程序在销毁图面并收到D3DGDI2_TYPE_DEFER_AGP_FREES通知时保留这些用户模式映射。 运行时提供指向DD_GETDRIVERINFODATA数据结构的 lpvData 字段中 DD_FREE_DEFERRED_AGP_DATA 结构的指针。 当进程中的所有显示设备都停止使用显示模式更改时锁定的图面、纹理、顶点缓冲区和索引缓冲区时,驱动程序会收到此通知。 |
D3DGDI2_TYPE_GETADAPTERGROUP | 仅 DirectX 9.0 及更高版本。 用于查询驱动程序,以获取属于其多头视频卡的适配器组的标识。 此组共享视频硬件,如视频内存和 3D 加速器。 驱动程序应将DD_GETDRIVERINFODATA数据结构的 lpvData 字段指向的数据结构设置为 DD_GETADAPTERGROUPDATA。 |
D3DGDI2_TYPE_GETD3DCAPS8 | 此类型指示运行时请求接收D3DCAPS8结构,从而提供设备的 DirectX 8.0 样式功能。 驱动程序应将初始化D3DCAPS8结构复制到DD_GETDRIVERINFODATA结构的 lpvData 字段中。 |
D3DGDI2_TYPE_GETD3DCAPS9 | 仅 DirectX 9.0 及更高版本需要 。 此类型指示运行时请求接收D3DCAPS9结构,从而提供设备的 DirectX 9.0 样式功能。 驱动程序应将初始化D3DCAPS9结构复制到DD_GETDRIVERINFODATA结构的 lpvData 字段中。 |
D3DGDI2_TYPE_GETD3DQUERY | 仅 DirectX 9.0 及更高版本。 用于查询驱动程序,以获取有关它支持的特定查询类型的信息。 驱动程序应将DD_GETDRIVERINFODATA数据结构的 thelpvData 字段指向的数据结构设置为 DD_GETD3DQUERYDATA。 |
D3DGDI2_TYPE_GETD3DQUERYCOUNT | 仅 DirectX 9.0 及更高版本。 用于查询驱动程序,以获取其支持的查询类型数。 驱动程序应将DD_GETDRIVERINFODATA数据结构的 lpvData 字段指向的数据结构设置为 DD_GETD3DQUERYCOUNTDATA。 |
D3DGDI2_TYPE_GETDDIVERSION | 仅 DirectX 9.0 及更高版本。 用于查询驱动程序支持的 DDI 版本;此 DDI 版本又取决于发出此请求的 DirectX 版本。 驱动程序应将 DD_GETDDIVERSIONDATA 结构的 dwDDIVersion 成员(DD_GETDRIVERINFODATA数据结构指向的 lpvData 字段)设置为相应的 DDI 版本。 |
D3DGDI2_TYPE_GETEXTENDEDMODE | 仅 DirectX 9.0 及更高版本。 用于查询驱动程序,以获取有关它支持的特定扩展显示模式的信息。 驱动程序应将DD_GETDRIVERINFODATA数据结构的 lpvData 字段指向的数据结构设置为 DD_GETEXTENDEDMODEDATA。 |
D3DGDI2_TYPE_GETEXTENDEDMODECOUNT | 仅 DirectX 9.0 及更高版本。 用于查询驱动程序支持的扩展显示模式的数量。 驱动程序应将DD_GETDRIVERINFODATA数据结构的 lpvData 字段指向的数据结构设置为 DD_GETEXTENDEDMODECOUNTDATA。 |
D3DGDI2_TYPE_GETFORMAT | 用于从驱动程序查询特定图面格式。 DD_GETDRIVERINFODATA数据结构的 lpvDatafield 指向的数据结构 DD_GETFORMATDATA。 |
D3DGDI2_TYPE_GETFORMATCOUNT | 用于请求驱动程序支持的 DirectX 8.0 和更高样式图面格式的数量。 DD_GETDRIVERINFODATA的 thelpvData 字段指向的数据结构 DD_GETFORMATCOUNTDATA。 |
D3DGDI2_TYPE_GETMULTISAMPLEQUALITYLEVELS | 仅 DirectX 9.0 及更高版本。 用于查询驱动程序,以获取它支持的给定呈现目标格式的多样本质量级别数。 无论显示设备是否支持可屏蔽或子掩码多重采样,设备的驱动程序都必须提供D3DMULTISAMPLE_NONMASKABLE多样本类型的质量级别数。 驱动程序应将DD_GETDRIVERINFODATA数据结构的 lpvData 字段指向的数据结构设置为 DD_MULTISAMPLEQUALITYLEVELSDATA。 |
dwExpectedSize
指定所请求信息的预期大小(以字节为单位)。 驱动程序应仅读取(不写入)此成员。
言论
发出 GetDriverInfo2 请求时,不会使用DD_GETDRIVERINFODATA结构的 dwExpectedSize 成员。 在这种情况下,其值未定义,应忽略。 相反,dwExpectedSize 成员DD_GETDRIVERINFO2DATA中找到数据的实际预期大小。
以下代码片段演示如何处理 GetDriverInfo2:
D3DCAPS8 myD3DCaps8 = { ... };
DWORD CALLBACK
DdGetDriverInfo(LPDDHAL_GETDRIVERINFODATA lpData)
{
if (MATCH_GUID((lpData->guidInfo), GUID_GetDriverInfo2))
{
ASSERT(NULL != lpData);
ASSERT(NULL != lpData->lpvData);
// Is this a call to GetDriverInfo2 or DDStereoMode?
if (((DD_GETDRIVERINFO2DATA*)(lpData->lpvData))->dwMagic
== D3DGDI2_MAGIC)
{
// Yes, it's a call to GetDriverInfo2, fetch the
// DD_GETDRIVERINFO2DATA data structure.
DD_GETDRIVERINFO2DATA* pgdi2 = lpData->lpvData;
ASSERT(NULL != pgdi2);
// What type of request is this?
switch (pgdi2->dwType)
{
case D3DGDI2_TYPE_GETD3DCAPS8:
{
// The runtime is requesting the DX8 D3D caps
// so copy them over now. It should be noted
// that the dwExpectedSize field of
// DD_GETDRIVERINFODATA is not used for
// GetDriverInfo2 calls and should be ignored.
size_t copySize = min(
sizeof(myD3DCaps8), pgdi2->dwExpectedSize);
memcpy(lpData->lpvData, &myD3DCaps8, copySize);
lpData->dwActualSize = copySize;
lpData->ddRVal = DD_OK;
return DDHAL_DRIVER_HANDLED;
}
default:
// For any other GetDriverInfo2 types not handled
// or understood by the driver set a ddRVal of
// DDERR_CURRENTLYNOTAVAIL and return
// DDHAL_DRIVER_HANDLED.
return DDHAL_DRIVER_HANDLED;
}
}
else
{
// It must be a call to request for stereo mode support.
// Fetch the stereo mode data
DD_STEREOMODE* pStereoMode = lpData->lpvData;
ASSERT(NULL != pStereoMode);
// Process the stereo mode request...
lpData->dwActualSize = sizeof(DD_STEREOMODE);
lpData->ddRVal = DD_OK;
return DDHAL_DRIVER_HANDLED;
}
}
// Handle any other device GUIDs...
} // DdGetDriverInfo
有关D3DCAPS8和D3DCAPS9的详细信息,请参阅 DirectX SDK 文档。
要求
要求 | 价值 |
---|---|
标头 | d3dhal.h (包括 D3dhal.h) |