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입니다.
반환 값
DxgkDdiInterruptRoutine이 MiniportDeviceContext가 나타내는 어댑터가 인터럽트를 생성하지 않았다고 판단하면 FALSE를 반환합니다. 그렇지 않으면 TRUE를 반환하기 전에 어댑터의 인터럽트 를 해제해야 합니다.
설명
인터럽트가 줄 기반(MessageNumber = 0)인 경우 DxgkDdiInterruptRoutine 은 MiniportDeviceContext 가 나타내는 어댑터가 인터럽트를 생성했는지 여부를 결정해야 하며, 그렇지 않은 경우 FALSE를 즉시 반환해야 합니다.
MiniportDeviceContext로 표시되는 어댑터가 인터럽트를 생성한 경우 DxgkDdiInterruptRoutine은 다음 단계를 수행해야 합니다.
- 어댑터의 인터럽트 해제
- 인터럽트 발생시킨 요청된 작업을 완료하거나 나중에 작업을 완료할 DPC를 큐에 대기합니다.
- 가능한 한 빨리 TRUE를 반환합니다.
메모리를 공유하는 다른 모든 디스플레이 미니포트 드라이버 함수(예: MiniportDeviceContext가 나타내는 상태의 일부)와 DxgkDdiInterruptRoutine 은 DxgkCbSynchronizeExecution 을 호출하여 공유 메모리에 대한 액세스를 동기화해야 합니다.
DxgkDdiInterruptRoutine 함수는 DxgkCbQueueDpc 및 DxgkCbNotifyInterrupt를 호출할 수 있지만 다른 DxgkCbXxx 함수를 호출해서는 안 됩니다. 함수 호출의 적절한 시퀀스에 대한 자세한 내용은 명령 버퍼 제출을 참조하세요.
DxgkDdiInterruptRoutine 은 관리자 권한 IRQL에서 실행되므로 호출하는 모든 함수는 페이징할 수 없어야 합니다. 또한 DxgkDdiInterruptRoutine (및 호출하는 모든 함수)은 페이징 가능한 메모리에 액세스하려고 시도해서는 안 됩니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista |
대상 플랫폼 | 데스크톱 |
머리글 | dispmprt.h |
IRQL | 설명 섹션을 참조하십시오. |