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 |