다음을 통해 공유


DXGKDDI_INTERRUPT_ROUTINE 콜백 함수(dispmprt.h)

DxgkDdiInterruptRoutine 함수는 디스플레이 어댑터에서 생성된 인터럽트를 처리합니다.

구문

DXGKDDI_INTERRUPT_ROUTINE DxgkddiInterruptRoutine;

BOOLEAN DxgkddiInterruptRoutine(
  [in] IN_CONST_PVOID MiniportDeviceContext,
  [in] IN_ULONG MessageNumber
)
{...}

매개 변수

[in] MiniportDeviceContext

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

[in] MessageNumber

인터럽트에서 메시지 신호를 받은 경우 MSI( 메시지 신호 인터럽트 ) 테이블의 인덱스(0부터 시작)입니다. 줄 기반 인터럽트에서 이 매개 변수는 0입니다.

반환 값

DxgkDdiInterruptRoutineMiniportDeviceContext가 나타내는 어댑터가 인터럽트를 생성하지 않았다고 판단하면 FALSE를 반환합니다. 그렇지 않으면 TRUE를 반환하기 전에 어댑터의 인터럽트 를 해제해야 합니다.

설명

인터럽트가 줄 기반(MessageNumber = 0)인 경우 DxgkDdiInterruptRoutineMiniportDeviceContext 가 나타내는 어댑터가 인터럽트를 생성했는지 여부를 결정해야 하며, 그렇지 않은 경우 FALSE를 즉시 반환해야 합니다.

MiniportDeviceContext로 표시되는 어댑터가 인터럽트를 생성한 경우 DxgkDdiInterruptRoutine은 다음 단계를 수행해야 합니다.

  • 어댑터의 인터럽트 해제
  • 인터럽트 발생시킨 요청된 작업을 완료하거나 나중에 작업을 완료할 DPC를 큐에 대기합니다.
  • 가능한 한 빨리 TRUE를 반환합니다.

메모리를 공유하는 다른 모든 디스플레이 미니포트 드라이버 함수(예: MiniportDeviceContext가 나타내는 상태의 일부)와 DxgkDdiInterruptRoutineDxgkCbSynchronizeExecution 을 호출하여 공유 메모리에 대한 액세스를 동기화해야 합니다.

DxgkDdiInterruptRoutine 함수는 DxgkCbQueueDpcDxgkCbNotifyInterrupt를 호출할 수 있지만 다른 DxgkCbXxx 함수를 호출해서는 안 됩니다. 함수 호출의 적절한 시퀀스에 대한 자세한 내용은 명령 버퍼 제출을 참조하세요.

DxgkDdiInterruptRoutine 은 관리자 권한 IRQL에서 실행되므로 호출하는 모든 함수는 페이징할 수 없어야 합니다. 또한 DxgkDdiInterruptRoutine (및 호출하는 모든 함수)은 페이징 가능한 메모리에 액세스하려고 시도해서는 안 됩니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista
대상 플랫폼 데스크톱
머리글 dispmprt.h
IRQL 설명 섹션을 참조하십시오.

추가 정보

DxgkCbNotifyInterrupt

DxgkCbQueueDpc

DxgkCbSynchronizeExecution