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