Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Некоторые сведения относятся к предварительному продукту, который может быть существенно изменен до его коммерческого выпуска. Корпорация Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых в отношении информации, предоставленной здесь.
Функция обратного вызова ОС вызывает драйвер в подпрограмме SetSwapChain для настройки цепочки буферов с определенным устройством DXGI.
Синтаксис
HRESULT IddCxSwapChainSetDevice2(
[in] IDDCX_SWAPCHAIN SwapChainObject,
[in] const IDARG_IN_SWAPCHAINSETDEVICE2 *pInArgs
);
Параметры
[in] SwapChainObject
Объект IDDCX_SWAPCHAIN , ранее переданный драйверу в вызове EVT_IDD_CX_MONITOR_ASSIGN_SWAPCHAIN.
[in] pInArgs
Указатель на IDARG_IN_SWAPCHAINSETDEVICE2 структуру, содержащую входные аргументы функции.
Возвращаемое значение
Метод возвращает S_OK, если операция выполнена успешно, в противном случае соответствующий код ошибки HRESULT.
Замечания
Драйвер может вызвать IddCxSwapChainSetDevice2 , чтобы связать объект устройства, используемый для обработки объектов буферной цепочки поверхностей. Драйвер должен задать поле IDARG_IN_SWAPCHAINSETDEVICE2::Type и соответствующий указатель в союзе IDARG_IN_SWAPCHAINSETDEVICE2::D evice .
Замечание
Драйвер отвечает за проверку адаптера, указанного IDARG_IN_SETSWAPCHAIN. RenderAdapterLuid в вызове обратного вызова драйвера EVT_IDD_CX_MONITOR_ASSIGN_SWAPCHAIN поддерживает D3D12 и, в случае, если D3D12 недоступен, D3D11 по-прежнему можно использовать. Драйверы могут проверять поддержку D3D12 несколькими способами, одним из которых является получение объекта IDXGIAdapter с помощью EnumAdapterByLuid , а затем попробуйте вызвать D3D12CreateDevice.
ComPtr<IDXGIFactory4> pFactory;
ComPtr<IDXGIAdapter3> pRenderAdapter;
ComPtr<ID3D12Device> pD3d12Device;
HRESULT Result = CreateDXGIFactory2(0, IID_PPV_ARGS(&pFactory));
if (!FAILED(Result))
{
// Assume RenderAdapterLuid is obtained from IDARG_IN_SETSWAPCHAIN and passed to this routine
LUID renderAdapterLuid = /* obtain from IDARG_IN_SETSWAPCHAIN */;
Result = pFactory->EnumAdapterByLuid(renderAdapterLuid, IID_PPV_ARGS(&pRenderAdapter));
if (!FAILED(Result))
{
Result = D3D12CreateDevice(pRenderAdapter.Get(), D3D_FEATURE_LEVEL_12_0, IID_PPV_ARGS(&pD3d12Device));
if (FAILED(Result))
{
// No D3D12, fall back to using D3D11
}
else
{
// D3D12 can be used with this swapchain
}
}
}
Замечание
Драйвер IddCx 1.11 по-прежнему может вызывать IddCxSwapChainSetDevice для связывания объекта IDXGIDevice с цепочкой буферов.
Требования
| Требование | Ценность |
|---|---|
| Минимальный поддерживаемый клиент | Windows 11, 26H1 (IddCx 1.11) |
| целевая платформа | Виндоус |
| Header | iddcx.h |