функция обратного вызова MINIPORT_IDLE_NOTIFICATION (ndis.h)
NDIS вызывает функцию обработчика MiniportIdleNotification , чтобы запустить операцию выборочной приостановки NDIS в неактивном сетевом адаптере. В результате этой операции сетевой адаптер приостанавливается и переходит в маломощное состояние.
Синтаксис
MINIPORT_IDLE_NOTIFICATION MiniportIdleNotification;
NDIS_STATUS MiniportIdleNotification(
[in] NDIS_HANDLE MiniportAdapterContext,
[in] BOOLEAN ForceIdle
)
{...}
Параметры
[in] MiniportAdapterContext
Дескриптор контекстной области, выделенной драйвером мини-порта в функции MiniportInitializeEx . Драйвер мини-порта использует эту область контекста для хранения сведений о состоянии сетевого адаптера.
[in] ForceIdle
Значение BOOLEAN , которое, если задано значение TRUE, указывает, что драйвер мини-порта не должен вето на уведомление о бездействии и должен продолжать переход на состояние с низким энергопотреблением.
Дополнительные сведения о параметре ForceIdle см. в разделе Примечания.
Возвращаемое значение
MiniportIdleNotification возвращает одно из следующих значений состояния:
Код возврата | Описание |
---|---|
NDIS_STATUS_PENDING | Драйвер мини-порта успешно обработал уведомление о бездействии. Уведомление остается в состоянии ожидания, пока драйвер мини-порта не вызовет NdisMIdleNotificationComplete. Примечание: Драйвер мини-порта не должен возвращать NDIS_STATUS_SUCCESS из MiniportIdleNotification. |
NDIS_STATUS_BUSY | Драйвер мини-порта наложил вето на уведомление о простое, так как сетевой адаптер все еще используется. Примечание.MiniportIdleNotification не должен возвращать этот код состояния, если параметр ForceIdle имеет значение TRUE. |
NDIS_STATUS_FAILURE | Водитель минипорта не смог успешно выдать IRP для конкретной шины. |
Комментарии
Функция обработчика MiniportIdleNotification необходима для драйверов miniport, поддерживающих интерфейс выборочной приостановки NDIS. Дополнительные сведения о том, как драйвер регистрирует свои функции обработчика выборочной приостановки, см. в разделе Регистрация функций обработчика выборочной приостановки NDIS.
NDIS устанавливает для параметра ForceIdleзначение FALSE , если сетевой адаптер неактивен дольше, чем время ожидания простоя. Поэтому NDIS выборочно приостанавливает работу только сетевого адаптера.
Продолжительность периода простоя определяется значением inf-ключевое слово *SSIdleTimeout. Дополнительные сведения об этом ключевое слово см. в разделе Стандартизированные ключевые слова INF для выборочной приостановки NDIS.
Примечание
NDIS устанавливает для параметра ForceIdleзначение TRUE только в том случае, если система, соответствующая технологии Always On Always Connected (AOAC), переходит в состояние "Подключенный режим ожидания".
Если драйвер минипорта определяет, что используется сетевой адаптер, он может наложить вето на запрос уведомления о простое, возвратив NDIS_STATUS_BUSY. В результате NDIS перезапустит монитор активности сетевого адаптера.
Если адаптер снова становится неактивным в течение периода простоя, NDIS вызывает MiniportIdleNotification.
Примечание
Драйвер мини-порта не должен возвращать NDIS_STATUS_BUSY, если параметр ForceIdle имеет значение TRUE.
После выдачи уведомления о бездействии его можно отменить и завершить следующим образом:
NDIS может отменить незавершенное уведомление о простое, если выполняются следующие условия:
- Драйвер чрезмерного протокола или фильтра выдает запрос на отправку пакета или запрос OID к драйверу минипорта.
- Базовый адаптер сигнализирует о событии пробуждения, например о получении пакета, соответствующего шаблону пробуждения по локальной сети (WOL), или об изменении состояния подключения к мультимедиа.
NDIS отменяет уведомление о простое, вызывая MiniportCancelIdleNotification. При вызове этой функции обработчика драйвер минипорта отменяет все ранее выданные ему ранее для уведомления о бездействии irp, относящиеся к шине. Наконец, драйвер мини-порта вызывает NdisMIdleNotificationComplete , чтобы завершить уведомление о бездействии.
После того как сетевой адаптер находится в маломощном состоянии, драйвер мини-порта может самостоятельно завершить уведомление о простое, чтобы возобновить работу адаптера в состояние полного питания. Причины этого зависят от конструкции и требований драйвера и адаптера.
Драйвер мини-порта завершает уведомление о бездействии, вызывая NdisMIdleNotificationComplete. Дополнительные сведения о том, как драйвер мини-порта завершает уведомление о простое, см. в разделе Завершение уведомления о выборочной приостановке простоя NDIS.
Дополнительные сведения об обработке уведомлений о простое для выборочной приостановки NDIS см. в разделе Обработка уведомления о простое выборочной приостановки NDIS.
Рекомендации по реализации функции обработчика MiniportIdleNotification см. в разделе Реализация функции обработчика MiniportIdleNotification.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Поддерживается в NDIS 6.30 и более поздних версиях. |
Целевая платформа | Windows |
Header | ndis.h (включая Ndis.h) |
IRQL | PASSIVE_LEVEL |