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가 디스플레이 어댑터에 액세스할 수 있습니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista |
대상 플랫폼 | 데스크톱 |
머리글 | dispmprt.h(Dispmprt.h 포함) |
IRQL | PASSIVE_LEVEL |