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


Таймеры обслуживания

NDIS вызывает функцию NetTimerCallback при срабатывании таймера NDIS 6.0. Параметр FunctionContext этой функции содержит указатель на область контекста, предоставляемую драйвером. Значение по умолчанию для FunctionContext указывается в структуре NDIS_TIMER_CHARACTERISTICS . Драйвер передал структуру функции NdisAllocateTimerObject для выделения и инициализации связанного объекта таймера.

Если драйвер указал значение, отличное от NULL, в параметре FunctionContext , передаваемом функции NdisSetTimerObject , NDIS передает это значение параметру FunctionContext функции NetTimerCallback . В противном случае NDIS передает значение по умолчанию, указанное в структуре NDIS_TIMER_CHARACTERISTICS.

Любой драйвер NDIS может иметь несколько функций NetTimerCallback . Каждая такая функция NetTimerCallback должна быть связана с другим выделенным драйвером и инициализированным объектом таймера.

Вызов функции NdisSetTimerObject приводит к тому, что функция NetTimerCallback , связанная с объектом таймера, будет выполняться через указанный интервал или периодически.

Чтобы остановить вызовы функции NetTimerCallback , вызовите функцию NdisCancelTimerObject . NDIS может по-прежнему вызывать NetTimerCallback , если время ожидания уже истекло до вызова NdisCancelTimerObject.

Если функция NetTimerCallback совместно использует ресурсы с другими функциями драйвера, драйвер должен синхронизировать доступ к этим ресурсам с помощью спиновой блокировки.