функция обратного вызова DXGKCB_EXCLUDE_ADAPTER_ACCESS (dispmprt.h)
Функция DxgkCbExcludeAdapterAccess предотвращает весь доступ к адаптеру дисплея и вызывает предоставленную подпрограмму обратного вызова DxgkProtectedCallback , находясь в этом защищенном состоянии.
Синтаксис
DXGKCB_EXCLUDE_ADAPTER_ACCESS DxgkcbExcludeAdapterAccess;
NTSTATUS DxgkcbExcludeAdapterAccess(
[in] HANDLE DeviceHandle,
[in] ULONG Attributes,
[in] DXGKDDI_PROTECTED_CALLBACK DxgkProtectedCallback,
[in] PVOID ProtectedCallbackContext
)
{...}
Параметры
[in] DeviceHandle
Дескриптор, представляющий видеоадаптер. Драйвер мини-порта дисплея получил этот дескриптор в элементе DeviceHandleструктуры DXGKRNL_INTERFACE , переданной DxgkDdiStartDevice.
[in] Attributes
Значение типа , указывающее операции видеопамяти. Этот параметр может быть любым сочетанием следующих значений битовых флагов, за исключением того, что DXGK_EXCLUDE_EVICT_ALL и DXGK_EXCLUDE_CALL_SYNCHRONOUS являются взаимоисключающими. Эти значения определены в Dispmprt.h.
DXGK_EXCLUDE_EVICT_ALL
Вся видеопамя в адаптере копируется в системную память; это дорогостоящая операция. Если для параметра Attributes не задано это значение, доступ к заблокированным поверхностям в системной памяти приостанавливается.
DXGK_EXCLUDE_CALL_SYNCHRONOUS
Выполняет защищенную процедуру обратного вызова драйвера DxgkProtectedCallback в том же контексте потока, что и вызывающий объект. Вызывающий объект должен вызываться из синхронизированного DDI-вызова второго илитретьего уровня . В противном случае функция DxgkCbExcludeAdapterAccess завершится ошибкой .
DXGK_EXCLUDE_BRIDGE_ACCESS
Защищает доступ к корневому порту PCI Express (PCIe), когда драйверу требуется доступ к пространству конфигурации корневого порта. Задайте для параметра Attributes это значение перед вызовом функций DxgkCbReadDeviceSpace или DxgkCbWriteDeviceSpace , а для параметра DataType задано значение DXGK_WHICHSPACE_BRIDGE.
[in] DxgkProtectedCallback
Процедура обратного вызова, вызываемая при остановке всего доступа к адаптеру.
[in] ProtectedCallbackContext
Указатель на значение, передаваемое на параметр ProtectedCallbackContext подпрограммы обратного вызова DxgkProtectedCallback .
Возвращаемое значение
DxgkCbExcludeAdapterAccess возвращает STATUS_SUCCESS в случае успешного выполнения. В противном случае возвращается один из кодов ошибок, определенных в ntstatus.h.
Комментарии
Запросы приложений будут блокироваться до тех пор, пока эта функция не вернет. В этом защищенном состоянии предоставленная подпрограмма обратного вызова DxgkProtectedCallback вызывается в irQL = PASSIVE_LEVEL.
DxgkCbExcludeAdapterAccess получает монопольный доступ к адаптеру, чтобы предотвратить операции ввода-вывода, связанные с графикой, к адаптеру дисплея и всем ссылкам. Это фактически бездействует GPU в течение всего времени вызова.
Эта функция также предотвращает доступ ко всем пространствам конфигурации PCI к корневому порту PCI Express (PCIe), если DXGK_EXCLUDE_BRIDGE_ACCESS указан в параметре Attributes .
Драйвер не должен блокировать продолжение выполнения вызывающего потока, ожидая возврата процедуры обратного вызова DxgkProtectedCallback . Например, драйвер может запланировать асинхронный рабочий поток для обработки подпрограммы обратного вызова.
Исключение из этой блокировки запросов приложений возникает, когда драйвер отображения пользовательского режима установил флаг битового поля UseAlternateVA в элементе Flags структуры D3DDDICB_LOCKFLAGS при вызове функции pfnLockCb . DxgkCbExcludeAdapterAccess не блокирует этот тип блокировки выделения, и ЦП может получить доступ к адаптеру дисплея во время выполнения защищенной процедуры обратного вызова.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista |
Целевая платформа | Персональный компьютер |
Верхняя часть | dispmprt.h (включая Dispmprt.h) |
IRQL | PASSIVE_LEVEL |