Поделиться через


функция обратного вызова 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 не блокирует этот тип блокировки выделения, и ЦП может получить доступ к адаптеру дисплея во время выполнения защищенной процедуры обратного вызова.

Примечание Если параметр UseAlternateVA задан в вызове pfnLockCb, драйвер мини-порта дисплея не должен вызывать DxgkCbExcludeAdapterAccess.
 

Требования

Требование Значение
Минимальная версия клиента Windows Vista
Целевая платформа Персональный компьютер
Верхняя часть dispmprt.h (включая Dispmprt.h)
IRQL PASSIVE_LEVEL

См. также раздел

DxgkProtectedCallback