функция обратного вызова 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 | См. раздел "Примечания". |