D3DDDI_QUERYREGISTRY_INFO structure (d3dukmdt.h)

The D3DDDI_QUERYREGISTRY_INFO structure indicates how D3DKMT_QUERYADAPTERINFO::pDriverPrivateData should be reinterpreted when D3DKMT_QUERYADAPTERINFO::Type is KMTQAITYPE_QUERYREGISTRY.

Syntax

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;

Members

QueryType

[in] A D3DDDI_QUERYREGISTRY_TYPE value that indicates which data to retrieve.

QueryType is the most-significant field. It indicates whether the registry or file paths are being retrieved, as well as which specific registry hive and file path.

Registry Key Enums:

  • D3DDDI_QUERYREGISTRY_SERVICEKEY
  • D3DDDI_QUERYREGISTRY_ADAPTERKEY

File Path Enums:

  • D3DDDI_QUERYREGISTRY_DRIVERSTOREPATH
  • D3DDDI_QUERYREGISTRY_DRIVERIMAGEPATH

QueryFlags

[in] A D3DDDI_QUERYREGISTRY_FLAGS structure with flags that control how strings are retrieved. QueryFlags can do additional operations, like translate retrieved strings containing file paths to the guest environment.

ValueName[MAX_PATH]

[in] When retrieving registry information, ValueName must specify the registry value name to retrieve. When retrieving file path information, ValueName is ignored.

ValueType

[in] When retrieving registry information, ValueType must specify the expected registry value type that corresponds to the registry value name. When retrieving file path information, ValueType must be 0 to succeed. See Registry Value Types for more detail.

PhysicalAdapterIndex

[in] The physical adapter index in a LDA chain.

OutputValueSize

[out] The size of the output data is retrieved to this field, even when there wasn't enough room to retrieve that data. This field is most useful when variable-sized data is being retrieved.

Status

[out] A D3DDDI_QUERYREGISTRY_STATUS value that indicates the status of the query.

The status of the query is returned separately to indicate varying amounts of data has been retrieved. The following three return states are most important to understand:

  • When QueryAdapterInfo returns STATUS_SUCCESS and Status is D3DDDI_QUERYREGISTRY_STATUS_SUCCESS, all fields starting with Output are valid.
  • When QueryAdapterInfo returns STATUS_SUCCESS and Status is D3DDDI_QUERYREGISTRY_STATUS_BUFFER_OVERFLOW, only OutputValueSize is valid.
  • When QueryAdapterInfo doesn't return STATUS_SUCCESS, all fields are left unmodified, except Status may be changed to D3DDDI_QUERYREGISTRY_STATUS_FAIL.

OutputDword

[out] A convenience field for reinterpreting the successfully retrieved data. It is most useful when a registry DWORD is being read.

OutputQword

[out] A convenience field for reinterpreting the successfully retrieved data. It is most useful when a registry QWORD is being read.

OutputString[1]

OutputBinary[1]

Remarks

D3DDDI_QUERYREGISTRY_INFO is used to read the registry for information that is commonly cached during driver installation.

Instead of using raw OS methods, user mode drivers and other components must ubiquitously use this technique on the OS versions where it is supported. This enables the OS to maximize user mode compatibility with dependency changes and scenarios like virtualized environments.

Requirements

Requirement Value
Header d3dukmdt.h

See also

D3DDDI_QUERYREGISTRY_TYPE

D3DDDI_QUERYREGISTRY_FLAGS

D3DDDI_QUERYREGISTRY_STATUS

KMTQUERYADAPTERINFOTYPE

D3DKMT_QUERYADAPTERINFO