PDD_GETDRIVERINFO回调函数 (ddrawint.h)

DdGetDriverInfo 函数查询驱动程序,以获取驱动程序支持的其他 DirectDraw 和 Direct3D 功能。

语法

PDD_GETDRIVERINFO PddGetdriverinfo;

DWORD PddGetdriverinfo(
  PDD_GETDRIVERINFODATA unnamedParam1
)
{...}

参数

unnamedParam1

指向包含执行查询所需信息的 DD_GETDRIVERINFODATA 结构。

返回值

DdGetDriverInfo 必须返回DDHAL_DRIVER_HANDLED。

注解

驱动程序必须实现 DdGetDriverInfo 才能公开驱动程序支持的 DirectDraw 功能,该功能不可通过 DrvEnableDirectDraw 返回。

驱动程序的 DrvGetDirectDrawInfo 函数在 DD_HALINFO 结构的 GetDriverInfo 成员中返回指向 DdGetDriverInfo 的指针。

若要通知 DirectDraw GetDriverInfo 成员已正确设置,驱动程序还必须在 DD_HALINFO 结构中设置 dwFlags 成员的 DDHALINFO_GETDRIVERINFOSET 位。

DdGetDriverInfo 应确定驱动程序及其硬件是否支持指定 GUID 请求的回调或功能。 对于除 GUID_D3DParseUnknownCommandCallback 之外的所有 GUID,如果驱动程序确实提供请求的支持,则应设置 DD_GETDRIVERINFODATA 结构的以下成员:

  • dwActualSize 设置为驱动程序返回的回调或功能结构的大小(以字节为单位)。
  • lpvData 指向的内存中,初始化与请求的功能对应的回调或功能结构的成员,如下所示:
    • dwSize 成员设置为 结构的大小(以字节为单位)。
    • 对于回调,将函数指针设置为指向驱动程序实现的那些回调,并在 dwFlags 成员中设置位以指示驱动程序支持哪些函数。
    • 对于功能,请使用驱动程序/设备支持的值设置功能结构的相应成员。
  • 返回 ddRVal 中的DD_OK。
如果驱动程序不支持该功能,则应将 ddRVal 设置为DDERR_CURRENTLYNOTAVAIL并返回。

DirectDraw 通知驱动程序DD_GETDRIVERINFODATA结构的dwExpectedSize 成员的预期数据量。 驱动程序填充的数据不得超过 dwExpectedSize 字节数。

若要避免使用 DdGetDriverInfo 时出现问题,请:

  • 不要根据 调用 DdGetDriverInfo 的顺序实现依赖项。 例如,避免将驱动程序初始化步骤挂钩到 DdGetDriverInfo 中。
  • 不要尝试根据对 DdGetDriverInfo 的调用来确定 DirectDraw 版本。
  • 不要假设 DirectDraw 调用驱动程序的次数或 DirectDraw 查询给定 GUID 的次数。 DirectDraw 可能会使用相同的 GUID 重复探测驱动程序。 在驱动程序中实现有关此的假设会妨碍其与未来运行时的兼容性。

要求

要求
目标平台 桌面
标头 ddrawint.h (包括 Winddi.h)

另请参阅

DD_GETDRIVERINFODATA

DrvEnableDirectDraw

DrvGetDirectDrawInfo