D3DDDI_QUERYREGISTRY_INFO结构(d3dukmdt.h)

D3DDDI_QUERYREGISTRY_INFO 结构指示在 D3DDDI_QUERYADAPTERTYPE_QUERYREGISTRYD3DDDICB_QUERYADAPTERINFO2::QueryType 时,应如何重新解释 D3DDDICB_QUERYADAPTERINFO2::p DriverPrivateData

语法

typedef struct _D3DDDI_QUERYREGISTRY_INFO {
  D3DDDI_QUERYREGISTRY_TYPE   QueryType;
  D3DDDI_QUERYREGISTRY_FLAGS  QueryFlags;
  WCHAR                       ValueName[MAX_PATH];
  ULONG                       ValueType;
  ULONG                       PhysicalAdapterIndex;
  ULONG                       OutputValueSize;
  D3DDDI_QUERYREGISTRY_STATUS Status;
  union {
    DWORD                 OutputDword;
    D3DKMT_ALIGN64 UINT64 OutputQword;
    WCHAR                 OutputString[1];
    BYTE                  OutputBinary[1];
  };
} D3DDDI_QUERYREGISTRY_INFO;

成员

QueryType

[in]一个 D3DDDI_QUERYREGISTRY_TYPE 值,该值指示要检索哪些数据。

D3DDDI_QUERYREGISTRY_INFO::QueryType 是此结构最重要的字段。 它指示是要检索注册表还是文件路径,以及哪个特定的注册表配置单元和文件路径。

注册表项枚举:

  • D3DDDI_QUERYREGISTRY_SERVICEKEY
  • D3DDDI_QUERYREGISTRY_ADAPTERKEY

文件路径枚举:

  • D3DDDI_QUERYREGISTRY_DRIVERSTOREPATH
  • D3DDDI_QUERYREGISTRY_DRIVERIMAGEPATH

QueryFlags

[in]一个 D3DDDI_QUERYREGISTRY_FLAGS 结构,其中包含用于控制如何检索字符串的标志。 QueryFlags 可以执行其他作,例如将检索到的字符串转换为来宾环境的文件路径。

ValueName[MAX_PATH]

[in]可以包含子键名称的零终止 UNICODE 字符串,该名称通过反斜杠与实际值名称分隔。 例如,ValueName 可以 SubKey1\ SubKey2\NameOfTheValue。 在这种情况下,SubKey1\ SubKey2 是服务或软件密钥的子项。

检索注册表信息时,ValueName 必须指定要检索的注册表值名称。 检索文件路径信息时,将忽略 ValueName

ValueType

[in]检索注册表信息时,ValueType 必须指定与注册表值名称对应的预期注册表值类型。 它必须是REG_SZ、REG_MULTI_SZ、REG_EXPAND_SZ、REG_BINARY、REG_QWORD或REG_DWORD。

检索文件路径信息时,ValueType 必须为 0 才能成功。

有关详细信息,请参阅 注册表值类型

PhysicalAdapterIndex

[in]LDA 链中的物理适配器索引。

OutputValueSize

[out]如果 pfnQueryAdapterInfoCb2 成功(状态 D3DDDI_QUERYREGISTRY_STATUS_SUCCESS),则写入输出的大小(以字节为单位)。 当 状态 D3DDDI_QUERYREGISTRY_STATUS_BUFFER_OVERFLOW时,OutputValueSize 是保存输出值所需的字节数。

Status

[out]指示查询状态的 D3DDDI_QUERYREGISTRY_STATUS 值。

当用户模式显示驱动程序调用运行时的 pfnQueryAdapterInfoCb2 函数时,将启动对 DxgkDdiQueryAdapterInfo 函数的调用。

查询的状态与返回值分开返回,以指示检索了不同的数据量。 以下三种返回状态是了解的最重要状态:

  • pfnQueryAdapterInfoCb2 返回STATUS_SUCCESS时:
    • 如果 状态D3DDDI_QUERYREGISTRY_STATUS_SUCCESS,则从 输出Xxx 开始的所有字段都有效。
    • 如果 状态D3DDDI_QUERYREGISTRY_STATUS_BUFFER_OVERFLOW,则私有数据中没有足够的空间来保存注册表值。 只有 OutputValueSize 有效。
  • pfnQueryAdapterInfoCb2 不返回STATUS_SUCCESS时,除状态 状态 可能更改为 D3DDDI_QUERYREGISTRY_STATUS_FAIL外,所有字段均未修改。

OutputDword

[out]保留输出值的联合的一部分。 OutputDword 是一个方便字段,用于在读取注册表 DWORD 时重新解释成功检索的数据。

OutputQword

[out]保留输出值的联合的一部分。 OutputQword 是一个方便字段,用于在读取注册表 QWORD 时重新解释成功检索的数据。

OutputString[1]

OutputBinary[1]

言论

D3DDDI_QUERYREGISTRY_INFO 用于读取注册表以获取在安装驱动程序期间通常缓存的信息。

用户模式驱动程序和其他组件不必使用原始 OS 方法,而是在受支持的 OS 版本上普遍使用此技术。 这使 OS 能够最大程度地提高用户模式与依赖项更改和虚拟化环境等方案的兼容性。 有关详细信息,请参阅 GPU 半虚拟化

要求

要求 价值
最低支持的客户端 Windows 10 版本 1803 (WDDM 2.4)
标头 d3dukmdt.h

另请参阅

D3DDDI_QUERYREGISTRY_TYPE

D3DDDI_QUERYREGISTRY_FLAGS

D3DDDI_QUERYREGISTRY_STATUS

KMTQUERYADAPTERINFOTYPE

D3DKMT_QUERYADAPTERINFO

pfnQueryAdapterInfoCb2