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


OID_PNP_SET_POWER

OID OID_PNP_SET_POWER уведомляет драйвер минипорта о том, что его базовый сетевой адаптер будет переходить в состояние питания устройства, указанное в InformationBuffer. Состояние питания устройства указывается как одно из следующих NDIS_DEVICE_POWER_STATE значений:

  • NdisDeviceStateD0
  • NdisDeviceStateD1
  • NdisDeviceStateD2
  • NdisDeviceStateD3

Запросу OID_PNP_SET_POWER может предшествовать запрос OID_PNP_QUERY_POWER .

Начиная с версии NDIS 6.30, NDIS не будет приостанавливать и перезапускать драйверы NDIS в стеке драйверов во время перехода состояния питания, если выполняются следующие условия:

  • Базовый драйвер мини-порта устанавливает флаг NDIS_MINIPORT_ATTRIBUTES_NO_PAUSE_ON_SUSPEND в структуре NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES . Драйвер передает указатель на эту структуру в вызове функции NdisMSetMiniportAttributes .

  • Все драйверы фильтров, подключенные к драйверу мини-порта, поддерживают NDIS 6.30 или более поздние версии NDIS.

  • Все драйверы протоколов, привязанные к драйверу минипорта, поддерживают NDIS 6.30 или более поздние версии NDIS.

Переход в состояние Low-Power (D1–D3)

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

Драйвер miniport, поддерживающий NDIS 6.30 и более поздние версии NDIS, также должен выполнять следующие действия:

  • Не дожидаться завершения ожидающих получения указаний с помощью вызовов функции MiniportReturnNetBufferLists . Кроме того, драйвер мини-порта не должен изменять структуру NET_BUFFER_LIST или данные для пакетов, ожидающих завершения.

  • Обработка OID_PNP_SET_POWER запроса к состоянию с низким энергопотреблением из состояний адаптера Приостановлено или Работает. Дополнительные сведения об этих состояниях см. в разделе Состояния и операции адаптера Miniport.

Перед переходом сетевого адаптера в состояние D3 драйвер мини-порта должен отключить все, что находится под контролем драйвера минипорта, выполнив следующие задачи:

  • Отключите прерывания и подсистему DMA на сетевом адаптере.

  • Остановите обработчик приема в сетевом адаптере.

  • Не отменяйте выделение и не изменяйте дескрипторы приема и буферы пакетов, связанные с ожидающими указаниями получения.

  • Отмена всех таймеров NDIS.

Примечание Драйвер мини-порта не может получить доступ к сетевому адаптеру после того, как драйвер шины переведет сетевой адаптер в состояние D3.

Переход в состояние Full-Power (D0)

Когда драйвер мини-порта обрабатывает запрос набора OID_PNP_SET_POWER для перехода в состояние полной мощности, он должен восстановить подсистему приема сетевого адаптера в том же состоянии, в которое находился обработчик приема до перехода адаптера в состояние с низким энергопотреблением.

Примечание Драйвер мини-порта не должен обращаться к буферам приема, связанным с ожидающими указаниями получения, или изменять их.

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

Примечание Промежуточный драйвер всегда должен возвращать NDIS_STATUS_SUCCESS в запрос OID_PNP_SET_POWER. Промежуточный драйвер никогда не должен распространять запрос OID_PNP_SET_POWER на базовый драйвер мини-порта.

Коды состояния возврата

Функция MiniportOidRequest драйвера miniport возвращает одно из следующих значений для этого запроса:

Термин Описание

NDIS_STATUS_SUCCESS

Драйвер мини-порта успешно выполнил запрос.

NDIS_STATUS_PENDING

Драйвер мини-порта выполнит запрос асинхронно. После того как драйвер мини-порта завершит всю обработку, он должен выполнить запрос, вызвав функцию NdisMOidRequestComplete , передав NDIS_STATUS_SUCCESS для параметра Status .

NDIS_STATUS_NOT_ACCEPTED

Драйвер минипорта сбрасывается.

Требования

Версия

Поддерживается для NDIS 5.1 и NDIS 6.0 и более поздних версий.

Заголовок

Ntddndis.h (включая Ndis.h)

См. также раздел


MiniportInitializeEx

MiniportPause

MiniportRestart

MiniportReturnNetBufferLists

MiniportSendNetBufferLists

NDIS_DEVICE_POWER_STATE

NdisMIndicateReceiveNetBufferLists

NdisMSendNetBufferListsComplete

NET_BUFFER_LIST