Поделиться через


функция обратного вызова DXGKDDI_INTERRUPT_ROUTINE (dispmprt.h)

Функция DxgkDdiInterruptRoutine обрабатывает прерывания, созданные видеоадаптером.

Синтаксис

DXGKDDI_INTERRUPT_ROUTINE DxgkddiInterruptRoutine;

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

Параметры

[in] MiniportDeviceContext

Дескриптор для блока контекста, связанного с видеоадаптером. Функция DxgkDdiAdddDevice драйвера мини-порта дисплея ранее предоставляла этот дескриптор подсистеме ядра графики DirectX.

[in] MessageNumber

Отсчитываемый от нуля индекс в таблице прерываний с сигналом сообщения (MSI), если прерывание сигнализирует о сообщении. Для прерываний на основе строк этот параметр равен нулю.

Возвращаемое значение

Если 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 См. раздел "Примечания".

См. также раздел

DxgkCbNotifyInterrupt

DxgkCbQueueDpc

DxgkCbSynchronizeExecution