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


структура 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, если это вызов GetDriverInfo 2. В противном случае эта структура, по сути, является вызовом 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 и более поздних версий.
Используется для запроса драйвера для удостоверения группы адаптеров, которые являются частью его много головной видеокарты. Эта группа использует видеоустройство, например память видео и трехмерный акселератор. Драйвер должен задать структуру данных, на которую указывает поле lpvData структуры данных DD_GETDRIVERINFODATA, на DD_GETADAPTERGROUPDATA.
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 и более поздних версий.
Используется для запроса драйвера сведений о конкретном типе запроса, который он поддерживает. Драйвер должен задать структуру данных, на которую указывает поле thelpvData структуры данных 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 Используется для запроса определенного формата поверхности от драйвера. Структура данных, на которую указывает lpvDatafield структуры данных DD_GETDRIVERINFODATA, DD_GETFORMATDATA.
D3DGDI2_TYPE_GETFORMATCOUNT Используется для запроса числа форматов поверхностей стилей DirectX 8.0 и более поздних стилей, поддерживаемых драйвером. Структура данных, на которую указывает поле thelpvData 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 (include 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