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


Функция NdisMSynchronizeWithInterruptEx (ndis.h)

Драйверы минипорта вызывают функцию NdisMSynchronizeWithInterruptEx для синхронизации выполнения функции мини-порта, предоставленной драйвером, с функцией MiniportInterrupt.

Синтаксис

BOOLEAN NdisMSynchronizeWithInterruptEx(
  [in] NDIS_HANDLE                            NdisInterruptHandle,
  [in] ULONG                                  MessageId,
  [in] MINIPORT_SYNCHRONIZE_INTERRUPT_HANDLER SynchronizeFunction,
  [in] PVOID                                  SynchronizeFunction,
  [in] PVOID                                  SynchronizeContext
);

Параметры

[in] NdisInterruptHandle

Дескриптор прерывания, полученный в предыдущем вызове драйвера минипорта функция NdisMRegisterInterruptEx.

[in] MessageId

Сообщение сигнализирует о прерывании, с которым драйвер должен синхронизироваться. Если NDIS не предоставило сигнальным прерываниям для драйвера, NDIS игнорирует этот параметр. MessageId является индексом для IO_INTERRUPT_MESSAGE_INFO_ENTRY структуры внутри структура IO_INTERRUPT_MESSAGE_INFO. NDIS передает указатель на связанную структуру IO_INTERRUPT_MESSAGE_INFO в элементе MessageInfoTable, когда драйвер успешно регистрирует MSI с помощью функции NdisMRegisterInterruptEx.

[in] SynchronizeFunction

Точка входа драйвера функция MiniportSynchronizeInterrupt.

[in] SynchronizeFunction

Точка входа драйвера функция MiniportSynchronizeInterrupt.

[in] SynchronizeContext

Указатель на область контекста, определяемую минипорт-драйвером, которая передается функции MiniportSynchronizeInterrupt в SyncContext.

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

NdisMSynchronizeWithInterruptEx возвращает логическое значение, которое возвращает MiniportSynchronizeInterrupt.

Замечания

Драйверы минипорта, которые регистрируют прерывание с помощью NdisMRegisterInterruptEx используют NdisMSynchronizeWithInterruptEx. Значение, которое функция MiniportSynchronizeInterrupt возвращается NdisMSynchronizeWithInterruptEx. Это распространяемое значение предоставляет состояние вызывающему объекту.

Любая функция драйвера минипорта, которая использует ресурсы с любой другой функцией драйвера, работающей в DIRQL, должна использовать NdisMSynchronizeWithInterruptEx для синхронизации доступа к этим ресурсам. Функция MiniportSynchronizeInterrupt также выполняется в DIRQL, а общие ресурсы защищены блокировкой спина, выделенной системой. Таким образом, общие ресурсы защищены от одновременного доступа функцией MiniportInterrupt и вызывающим элементом.

NdisMSynchronizeWithInterruptEx освобождает системную блокировку спина и восстанавливает исходный IRQL вызывающего объекта перед возвратом элемента управления.

Дополнительные сведения о получении и выпуске блокировок спина NDIS см. в синхронизации и уведомлений в сетевых драйверах.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Поддерживается в NDIS 6.0 и более поздних версиях.
целевая платформа Всеобщий
заголовка ndis.h (include Ndis.h, Video.h)
библиотеки Ndis.lib
IRQL <= DIRQL
правил соответствия DDI NdisMDeregisterInterruptEx(ndis)

См. также

IO_INTERRUPT_MESSAGE_INFO

IO_INTERRUPT_MESSAGE_INFO_ENTRY

MiniportInterrupt

MiniportSynchronizeInterrupt

NdisMRegisterInterruptEx