структура 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) |