Поделиться через


структура DD_GETDRIVERINFO2DATA (d3dhal.h)

Только DirectX 8.0 и более поздних версий.

DD_GETDRIVERINFO2DATA передается в член lpvData структуры DD_GETDRIVERINFODATA , если GUID_GetDriverInfo2 указан в элементе guidInfo DD_GETDRIVERINFODATA в вызове DdGetDriverInfo .

Синтаксис

typedef struct _DD_GETDRIVERINFO2DATA {
  DWORD dwReserved;
  DWORD dwMagic;
  DWORD dwType;
  DWORD dwExpectedSize;
} DD_GETDRIVERINFO2DATA;

Члены

dwReserved

Указывает зарезервированное поле. Драйвер не должен выполнять чтение или запись.

dwMagic

Указывает магическое число. Имеет значение D3DGDI2_MAGIC, если это вызов GetDriverInfo2 . В противном случае эта структура, по сути, является DD_STEREOMODE вызовом.

dwType

Указывает тип запрашиваемых сведений, которые могут содержать одно из следующих значений D3DGDI2_TYPE_Xxx . Драйвер должен читать (не записывать) только этот элемент.

Значение Значение
D3DGDI2_TYPE_DEFER_AGP_FREES Только операционные системы на основе NT.
Используется для уведомления драйвера о том, что он должен правильно обрабатывать уничтожение памяти AGP для поверхностей. Среда выполнения предоставляет указатель на структуру DD_FREE_DEFERRED_AGP_DATA в поле lpvData структуры данных DD_GETDRIVERINFODATA.
Иногда драйвер получает это уведомление до изменения режима отображения. Среда выполнения отправляет это уведомление только в том случае, если оно используется для изменения режима отображения. Драйверы должны проверка идентификатор процесса (PID) процесса, разрушающего поверхность, относительно процесса, создавшего поверхность. Если идентификаторы идентификаторов отличаются, драйверу, вероятно, не следует уничтожать сопоставления пользовательского режима памяти AGP, так как приложение может по-прежнему использовать память.
D3DGDI2_TYPE_DEFERRED_AGP_AWARE Только операционные системы на основе NT.
Используется для информирования драйвера о том, что среда выполнения отправляет D3DGDI2_TYPE_FREE_DEFERRED_AGP и D3DGDI2_TYPE_DEFER_AGP_FREES уведомления в соответствующее время (например, после освобождения последней неоплаченной блокировки памяти AGP ). Среда выполнения предоставляет указатель на структуру DD_DEFERRED_AGP_AWARE_DATA в поле lpvData структуры данных DD_GETDRIVERINFODATA.
D3DGDI2_TYPE_DXVERSION Используется для уведомления драйвера о текущей версии среды выполнения DX, используемой приложением. Среда выполнения предоставляет указатель на структуру DD_DXVERSION в поле lpvData структуры данных DD_GETDRIVERINFODATA.
D3DGDI2_TYPE_FREE_DEFERRED_AGP Только операционные системы на основе NT.
Используется для уведомления драйвера о том, что теперь безопасно уничтожать все сопоставления пользовательского режима памяти AGP . Драйвер сохранил эти сопоставления пользовательского режима при уничтожении поверхностей и получил уведомление D3DGDI2_TYPE_DEFER_AGP_FREES. Среда выполнения предоставляет указатель на структуру DD_FREE_DEFERRED_AGP_DATA в поле lpvData структуры данных DD_GETDRIVERINFODATA.
Драйвер получает это уведомление, когда все устройства отображения в процессе перестают использовать поверхности, текстуры, буферы вершин и буферы индексов, которые были заблокированы во время изменения режима отображения.
D3DGDI2_TYPE_GETADAPTERGROUP Только Для DirectX 9.0 и более поздних версий.
Используется для запроса у драйвера идентификатора группы адаптеров, которые являются частью карта видео с несколькими головами. Эта группа использует видеоустройство, например видеопамять и трехмерный ускоритель. Драйвер должен задать DD_GETADAPTERGROUPDATA структуру данных, на которую указывает поле lpvData структуры данных DD_GETDRIVERINFODATA.
D3DGDI2_TYPE_GETD3DCAPS8 Этот тип указывает, что среда выполнения запрашивает D3DCAPS8 структуру, предоставляющую возможности стиля DirectX 8.0 устройства. Драйвер должен скопировать инициализированную структуру D3DCAPS8 в поле lpvData структуры DD_GETDRIVERINFODATA.
D3DGDI2_TYPE_GETD3DCAPS9 Требуется только для DirectX 9.0 и более поздних версий.
Этот тип указывает, что среда выполнения запрашивает D3DCAPS9 структуру, предоставляющую возможности стиля DirectX 9.0 устройства. Драйвер должен скопировать инициализированную структуру D3DCAPS9 в поле lpvData структуры DD_GETDRIVERINFODATA.
D3DGDI2_TYPE_GETD3DQUERY Только Для DirectX 9.0 и более поздних версий.
Используется для запроса к драйверу сведений о конкретном типе запроса, который он поддерживает. Драйвер должен задать структуру данных, на которую указывает полеlpvData структуры данных DD_GETDRIVERINFODATA , DD_GETD3DQUERYDATA.
D3DGDI2_TYPE_GETD3DQUERYCOUNT Только Для DirectX 9.0 и более поздних версий.
Используется для запроса к драйверу количества поддерживаемых типов запросов. Драйвер должен задать структуру данных, на которую указывает поле lpvData структуры данных DD_GETDRIVERINFODATA , DD_GETD3DQUERYCOUNTDATA.
D3DGDI2_TYPE_GETDDIVERSION Только Для DirectX 9.0 и более поздних версий.
Используется для запроса у драйвера версии DDI, которую поддерживает драйвер; Эта версия DDI, в свою очередь, зависит от версии DirectX, которая выполняет этот запрос. Драйвер должен задать член dwDDIVersion структуры DD_GETDDIVERSIONDATA , на которую указывает поле lpvData структуры данных DD_GETDRIVERINFODATA, соответствующую версию DDI.
D3DGDI2_TYPE_GETEXTENDEDMODE Только Для DirectX 9.0 и более поздних версий.
Используется для запроса у драйвера сведений о конкретном расширенном режиме отображения, который он поддерживает. Драйвер должен задать структуру данных, на которую указывает поле lpvData структуры данных DD_GETDRIVERINFODATA , DD_GETEXTENDEDMODEDATA.
D3DGDI2_TYPE_GETEXTENDEDMODECOUNT Только Для DirectX 9.0 и более поздних версий.
Используется для запроса драйвера количества поддерживаемых расширенных режимов отображения. Драйвер должен задать структуру данных, на которую указывает поле lpvData структуры данных DD_GETDRIVERINFODATA , DD_GETEXTENDEDMODECOUNTDATA.
D3DGDI2_TYPE_GETFORMAT Используется для запроса определенного формата поверхности из драйвера. Структура данных, на которую указывает поле lpvData для структуры данных DD_GETDRIVERINFODATA, DD_GETFORMATDATA .
D3DGDI2_TYPE_GETFORMATCOUNT Используется для запроса количества форматов поверхности стилей DirectX 8.0 и более поздних версий, поддерживаемых драйвером. Структура данных, на которую указывает полеlpvData DD_GETDRIVERINFODATA , DD_GETFORMATCOUNTDATA.
D3DGDI2_TYPE_GETMULTISAMPLEQUALITYLEVELS Только Для DirectX 9.0 и более поздних версий.
Используется для запроса к драйверу количества уровней качества с несколькими выборками для заданного формата цели отрисовки, который он поддерживает. Независимо от того, поддерживает ли устройство отображения маскируемую или подмаскируемую многомерную выборку, драйвер устройства должен предоставить количество уровней качества для D3DMULTISAMPLE_NONMASKABLE типа с несколькими выборками. Драйвер должен задать структуру данных, на которую указывает поле lpvData структуры данных DD_GETDRIVERINFODATA , DD_MULTISAMPLEQUALITYLEVELSDATA.

dwExpectedSize

Указывает ожидаемый размер запрошенной информации (в байтах). Драйвер должен читать (не записывать) только этот элемент.

Комментарии

Член dwExpectedSize структуры DD_GETDRIVERINFODATA не используется при выполнении запроса GetDriverInfo2 . В этом случае его значение не определено и должно игнорироваться. Вместо этого фактический ожидаемый размер данных находится в элементе 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 см. в документации по пакету SDK для DirectX.

Требования

Требование Значение
Заголовок d3dhal.h (включая D3dhal.h)

См. также раздел

DD_DEFERRED_AGP_AWARE_DATA

DD_DXVERSION

DD_FREE_DEFERRED_AGP_DATA

DD_GETADAPTERGROUPDATA

DD_GETD3DQUERYCOUNTDATA

DD_GETD3DQUERYDATA

DD_GETDDIVERSIONDATA

DD_GETDRIVERINFODATA

DD_GETEXTENDEDMODECOUNTDATA

DD_GETEXTENDEDMODEDATA

DD_GETFORMATCOUNTDATA

DD_GETFORMATDATA

DD_MULTISAMPLEQUALITYLEVELSDATA

DD_STEREOMODE

DdGetDriverInfo