다음을 통해 공유


DXGKDDI_PREEMPTCOMMAND 콜백 함수(d3dkmddi.h)

DxgkDdiPreemptCommand 함수는 이전에 하드웨어 명령 실행 단위에 제출되고 현재 큐에 대기된 DMA(직접 메모리 액세스) 버퍼를 선점합니다.

구문

DXGKDDI_PREEMPTCOMMAND DxgkddiPreemptcommand;

NTSTATUS DxgkddiPreemptcommand(
  [in] IN_CONST_HANDLE hAdapter,
  [in] IN_CONST_PDXGKARG_PREEMPTCOMMAND pPreemptCommand
)
{...}

매개 변수

[in] hAdapter

디스플레이 어댑터와 연결된 컨텍스트 블록에 대한 핸들입니다. 디스플레이 미니포트 드라이버는 이전에 DxgkDdiAddDevice 함수의 MiniportDeviceContext 출력 매개 변수에서 Microsoft DirectX 그래픽 커널 하위 시스템에 이 핸들을 제공했습니다.

[in] pPreemptCommand

이전에 하드웨어 명령 실행 단위에 제출된 DMA 버퍼를 선점하는 데 사용되는 명령을 설명하는 DXGKARG_PREEMPTCOMMAND 구조체에 대한 포인터입니다.

반환 값

성공적으로 완료되면 STATUS_SUCCESS 반환합니다. 드라이버가 오류 코드를 반환하는 경우 운영 체제로 인해 시스템 버그 검사가 발생합니다. 자세한 내용은 아래 설명 부분을 참조하십시오.

설명

드라이버가 하드웨어가 제출된 모든 DMA 버퍼 처리를 이미 완료했다고 판단하고 하드웨어가 DMA 버퍼를 선점하기 위해 DxgkDdiPreemptCommand 함수를 호출할 때 완성에 대해 GPU(그래픽 처리 장치) 스케줄러에 알린 경우 드라이버는 DXGKARG_PREEMPTCOMMAND PreemptionFenceId 멤버로 식별되는 선점 펜스를 하드웨어에 제출하는 대신 다음 작업을 수행해야 합니다.

  • 인터럽트 수준에 IRQL을 올립니다. 예를 들어 드라이버는 DxgkCbSynchronizeExecution 함수를 호출하여 DxgkDdiInterruptRoutine 함수와 동기화할 수 있습니다.
  • 선점 정보를 GPU 스케줄러에 알릴 수 있습니다. 드라이버는 DxgkCbNotifyInterrupt 함수를 직접 호출하거나 DxgkDdiInterruptRoutine 함수를 호출할 수 있습니다(예: 드라이버가 다른 업데이트를 수행해야 하는 경우).

    GPU 스케줄러는 TDR(시간 제한 검색 및 복구) 작업으로 인해 하드웨어가 응답을 중지한 인스턴스를 처리합니다.

드라이버가 오류 코드를 반환하는 경우 Microsoft DirectX 그래픽 커널 하위 시스템에서 시스템 버그 검사가 발생합니다. 크래시 덤프 파일에서 오류는 다음 네 개의 매개 변수가 있는 BugCheck 0x119 메시지로 표시됩니다.
  1. 0x2
  2. 실패한 드라이버 호출에서 반환된 NTSTATUS 오류 코드
  3. DXGKARG_PREEMPTCOMMAND 구조체에 대한 포인터
  4. 내부 스케줄러 데이터 구조에 대한 포인터
DxgkDdiPreemptCommand 는 IRQL = DISPATCH_LEVEL

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista
대상 플랫폼 데스크톱
머리글 d3dkmddi.h
IRQL DISPATCH_LEVEL

추가 정보

DXGKARG_PREEMPTCOMMAND

DxgkCbNotifyInterrupt

DxgkCbSynchronizeExecution

DxgkDdiAddDevice

DxgkDdiInterruptRoutine