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

表示显示适配器的句柄。 显示微型端口驱动程序在传递给 DxgkDdiStartDeviceDXGKRNL_INTERFACE 结构的 DeviceHandle 成员中获取此句柄。

[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) 根端口的访问。 在调用 DxgkCbReadDeviceSpaceDxgkCbWriteDeviceSpace 函数之前,将 Attributes 参数设置为此值,并将 DataType 参数设置为 DXGK_WHICHSPACE_BRIDGE。

[in] DxgkProtectedCallback

停止对适配器的所有访问时要回调的回调例程。

[in] ProtectedCallbackContext

指向要传递给 DxgkProtectedCallback 回调例程的 ProtectedCallbackContext 参数的值的指针。

返回值

DxgkCbExcludeAdapterAccess 如果成功,则返回STATUS_SUCCESS。 否则,它将返回 Ntstatus.h 中定义的错误代码之一。

注解

在此函数返回之前,将阻止应用程序请求。 处于此保护状态时,提供的 DxgkProtectedCallback 回调例程在 IRQL = PASSIVE_LEVEL调用。

DxgkCbExcludeAdapterAccess 获取独占适配器访问权限,以防止对显示适配器和所有链接执行图形相关的 I/O 操作。 这实际上使 GPU 在整个调用期间处于空闲状态。

如果在 Attributes 参数中指定DXGK_EXCLUDE_BRIDGE_ACCESS,此函数还会阻止所有 PCI 配置空间访问 PCI Express (PCIe) 根端口。

驱动程序不应通过等待 DxgkProtectedCallback 回调例程返回来阻止调用线程的继续执行。 例如,驱动程序可以计划异步工作线程来处理回调例程。

当用户模式显示驱动程序在调用 pfnLockCb 函数时,在 D3DDDICB_LOCKFLAGS 结构的 Flags 成员中设置了 UseAlternateVA 位字段标志时,应用程序请求的此阻止将发生异常。 DxgkCbExcludeAdapterAccess 不会阻止这种类型的分配锁,并且 CPU 可以在执行受保护的回调例程时访问显示适配器。

注意如果在调用 pfnLockCb 时设置了 UseAlternateVA,则显示微型端口驱动程序不应调用 DxgkCbExcludeAdapterAccess
 

要求

要求
最低受支持的客户端 在 Windows Vista 和更高版本的 Windows 操作系统中可用。
目标平台 桌面
标头 dispmprt.h (包括 Dispmprt.h)
IRQL PASSIVE_LEVEL

另请参阅

DxgkProtectedCallback