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

디스플레이 어댑터를 나타내는 핸들입니다. 디스플레이 미니포트 드라이버는 DxgkDdiStartDevice에 전달된 DXGKRNL_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) 루트 포트에 대한 액세스를 보호합니다. DataType 매개 변수가 DXGK_WHICHSPACE_BRIDGE 설정된 DxgkCbReadDeviceSpace 또는 DxgkCbWriteDeviceSpace 함수를 호출하기 전에 Attributes 매개 변수를 이 값으로 설정합니다.

[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 Express(PCIe) 루트 포트에 대한 모든 PCI 구성 공간 액세스를 방지 합니다 .

드라이버는 DxgkProtectedCallback 콜백 루틴이 반환될 때까지 대기하여 호출 스레드의 지속적인 실행을 차단해서는 안 됩니다. 예를 들어 드라이버는 콜백 루틴을 처리하도록 비동기 작업자 스레드를 예약할 수 있습니다.

이 애플리케이션 요청 차단에 대한 예외는 사용자 모드 표시 드라이버가 pfnLockCb 함수 호출에서 D3DDDICB_LOCKFLAGS 구조체의 Flags 멤버에서 UseAlternateVA 비트 필드 플래그를 설정한 경우에 발생합니다. DxgkCbExcludeAdapterAccess 는 이러한 유형의 할당 잠금을 차단하지 않으며 보호된 콜백 루틴이 실행되는 동안 CPU가 디스플레이 어댑터에 액세스할 수 있습니다.

참고pfnLockCb 호출에서 UseAlternateVA가 설정된 경우 디스플레이 미니포트 드라이버는 DxgkCbExcludeAdapterAccess를 호출하지 않아야 합니다.
 

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista 이상 버전의 Windows 운영 체제에서 사용할 수 있습니다.
대상 플랫폼 데스크톱
머리글 dispmprt.h(Dispmprt.h 포함)
IRQL PASSIVE_LEVEL

추가 정보

DxgkProtectedCallback