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


Регистрация функций выборочного обработчика приостановки NDIS

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

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

Например, драйвер usb-минипорта определяет, может ли сетевой адаптер перейти в состояние низкой мощности путем выдачи пакета запросов ввода-вывода (IRP) для запроса простоя USB (IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION) на базовый драйвер USB-шины. При обработке этого IRP мини-драйвер уведомляется о том, что адаптер неактивен и может быть переключен в состояние низкой мощности.

MiniportCancelIdleNotification
NDIS вызывает функцию обработчика MiniportCancelIdleNotification, чтобы отменить текущее уведомление о простое. При вызове этой функции драйвер минипорта отменяет любые специфические для шины IRP, которые могли быть ранее выданы для уведомления об ожидании.

Например, когда вызывается MiniportCancelIdleNotification, минипорт USB должен отменить ранее выданный USB IRP запроса на простой. После отмены IRP драйвер минипорта уведомляется о том, что адаптер теперь можно перейти в состояние полной мощности.

Когда вызывается функция драйвера miniport DriverEntry, драйвер регистрирует свои функции выборочного обработчика приостановки NDIS, выполнив следующие действия:

  1. Минипорт-драйвер должен задать элемент SetOptionsHandler структуры NDIS_MINIPORT_DRIVER_CHARACTERISTICS как точку входа для функции драйвера MiniportSetOptions. Драйвер вызывает NdisMRegisterMiniportDriver для регистрации структуры NDIS_MINIPORT_DRIVER_CHARACTERISTICS с помощью NDIS.

  2. NDIS вызывает функцию MiniportSetOptions в контексте вызова функции NdisMRegisterMiniportDriver.

    При вызове MiniportSetOptions драйвер минипорта инициализирует структуру NDIS_MINIPORT_SS_CHARACTERISTICS с указателями на функции обработчика. Затем минипорт-драйвер вызывает NdisSetOptionalHandlers и устанавливает параметр OptionalHandlers как указатель на структуру NDIS_MINIPORT_SS_CHARACTERISTICS.

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