DXGKDDI_INTERRUPT_ROUTINE fungsi panggilan balik (dispmprt.h)

Fungsi DxgkDdiInterruptRoutine menangani gangguan yang dihasilkan oleh adaptor tampilan.

Sintaks

DXGKDDI_INTERRUPT_ROUTINE DxgkddiInterruptRoutine;

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

Parameter

[in] MiniportDeviceContext

Handel ke blok konteks yang terkait dengan adaptor tampilan. Fungsi DxgkDdiAddDevice driver miniport tampilan sebelumnya menyediakan handel ini ke subsistem kernel grafis DirectX.

[in] MessageNumber

Indeks berbasis nol dalam tabel message-signaled interrupt (MSI) jika interupsi diberi sinyal pesan. Untuk interupsi berbasis baris, parameter ini adalah nol.

Nilai kembali

Jika DxgkDdiInterruptRoutine menentukan bahwa adaptor yang diwakili oleh MiniportDeviceContext tidak menghasilkan interupsi, adaptor mengembalikan FALSE. Jika tidak, adaptor harus mematikan interupsi pada adaptor sebelum mengembalikan TRUE.

Keterangan

Jika interupsi berbasis baris (MessageNumber = 0), DxgkDdiInterruptRoutine harus menentukan apakah adaptor yang diwakili oleh MiniportDeviceContext menghasilkan interupsi dan, jika tidak, segera kembaliKAN FALSE.

Jika adaptor yang diwakili oleh MiniportDeviceContext memang menghasilkan interupsi, maka DxgkDdiInterruptRoutine harus melakukan langkah-langkah berikut:

  • Mematikan gangguan pada adaptor.
  • Selesaikan operasi yang diminta yang menyebabkan gangguan, atau antrean DPC yang akan menyelesaikan operasi nanti.
  • Kembalikan TRUE secepat mungkin.

Fungsi driver miniport tampilan lainnya yang berbagi memori (misalnya, beberapa bagian status yang diwakili oleh MiniportDeviceContext) dengan DxgkDdiInterruptRoutine harus memanggil DxgkCbSynchronizeExecution untuk menyinkronkan aksesnya ke memori bersama.

Fungsi DxgkDdiInterruptRoutine dapat memanggil DxgkCbQueueDpc dan DxgkCbNotifyInterrupt tetapi tidak boleh memanggil fungsi DxgkCbXxx lainnya. Untuk informasi selengkapnya tentang urutan panggilan fungsi yang tepat, lihat Mengirimkan Buffer Perintah.

DxgkDdiInterruptRoutine berjalan pada IRQL yang ditinggikan, sehingga (dan semua fungsi yang dipanggilnya) harus tidak dapat di-pageable. Selain itu, DxgkDdiInterruptRoutine (dan semua fungsi yang dipanggilnya) tidak boleh mencoba mengakses memori yang dapat di-pageable.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista
Target Platform Desktop
Header dispmprt.h
IRQL Lihat bagian Keterangan.

Lihat juga

DxgkCbNotifyInterrupt

DxgkCbQueueDpc

DxgkCbSynchronizeExecution