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

Драйверы miniport вызывают функцию 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

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

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

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

Комментарии

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

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

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

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

Требования

Требование Значение
Минимальная версия клиента Поддерживается в NDIS 6.0 и более поздних версиях.
Целевая платформа Универсальное
Верхняя часть ndis.h (включая Ndis.h, Video.h)
Библиотека Ndis.lib
IRQL <= DIRQL
Правила соответствия DDI NdisMDeregisterInterruptEx(ndis)

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

IO_INTERRUPT_MESSAGE_INFO

IO_INTERRUPT_MESSAGE_INFO_ENTRY

MiniportInterrupt

MiniportSynchronizeInterrupt

NdisMRegisterInterruptEx