Метод IDXGIFactory::EnumAdapters (dxgi.h)
Перечисляет адаптеры (видеоадаптеры).
Синтаксис
HRESULT EnumAdapters(
UINT Adapter,
[out] IDXGIAdapter **ppAdapter
);
Параметры
Adapter
Тип: UINT
Индекс адаптера для перечисления.
[out] ppAdapter
Тип: IDXGIAdapter**
Адрес указателя на интерфейс IDXGIAdapter в позиции, заданной параметром Adapter . Этот параметр не должен иметь значение NULL.
Возвращаемое значение
Тип: HRESULT
В случае успешного выполнения возвращает S_OK; В противном случае возвращает DXGI_ERROR_NOT_FOUND , если индекс больше или равен числу адаптеров в локальной системе, или DXGI_ERROR_INVALID_CALL , если параметр ppAdapter имеет значение NULL.
Комментарии
При создании фабрики фабрика перечисляет набор адаптеров, доступных в системе. Поэтому при изменении адаптеров в системе необходимо уничтожить и повторно создать объект IDXGIFactory . Количество адаптеров в системе изменяется при добавлении или удалении дисплея карта, а также при закреплении или отстыковке ноутбука.
Когда метод EnumAdapters завершается успешно и заполняет параметр ppAdapter адресом указателя на интерфейс адаптера, EnumAdapters увеличивает количество ссылок интерфейса адаптера. Завершив работу с интерфейсом адаптера, вызовите метод Release для уменьшения количества ссылок перед уничтожением указателя.
EnumAdapters сначала возвращает адаптер с выходными данными, на которых отображается основной рабочий стол. Этот адаптер соответствует индексу, равному нулю. Затем EnumAdapters возвращает другие адаптеры с выходными данными. EnumAdapters , наконец, возвращает адаптеры без выходных данных.
Примеры
Перечисление адаптеров
В следующем примере кода показано, как перечислить адаптеры с помощью метода EnumAdapters .
UINT i = 0;
IDXGIAdapter * pAdapter;
std::vector <IDXGIAdapter*> vAdapters;
while(pFactory->EnumAdapters(i, &pAdapter) != DXGI_ERROR_NOT_FOUND)
{
vAdapters.push_back(pAdapter);
++i;
}
Требования
Требование | Значение |
---|---|
Целевая платформа | Windows |
Header | dxgi.h |
Библиотека | DXGI.lib |