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