Функция 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) |