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


Инициализация адаптера miniport

Когда сетевое устройство становится доступным, система загружает необходимый драйвер мини-порта NDIS, если он еще не загружен. Затем менеджер Plug and Play (PnP) отправляет NDIS IRP Plug and Play для запуска устройства. NDIS вызывает функцию MiniportInitializeEx драйвера miniport для инициализации адаптера для операций сетевого ввода-вывода. NDIS может вызвать MiniportInitializeEx в любое время после инициализации драйвера. Дополнительные сведения об инициализации драйвера минипорта см. в разделе Инициализация драйвера минипорта.

Пока не будет возвращено значение MiniportInitializeEx , NDIS не отправляет запросы для инициализации адаптера. Адаптер находится в состоянии Инициализация.

Драйвер мини-порта обычно выполняет следующие задачи в MiniportInitializeEx:

  1. Получает сведения о конфигурации для адаптера.

  2. Получает сведения об аппаратных ресурсах для адаптера.

  3. Вызывает атрибуты NdisMSetMiniportAttributes и предоставляет следующие атрибуты, связанные с адаптером:

    • Указатель на область контекста, выделенную драйвером.
    • Соответствующие флаги атрибутов.
    • Интервал времени ожидания для вызова функции MiniportCheckForHangEx .
    • Тип интерфейса.
  4. Инициализирует ресурсы для конкретных адаптеров.

Драйвер мини-порта задает атрибуты адаптера в структуре NDIS_MINIPORT_ADAPTER_ATTRIBUTES , которую MiniportInitializeEx передает в NdisMSetMiniportAttributes.

Как правило, MiniportInitializeEx выделяет ресурсы для конкретных адаптеров в следующем порядке:

  1. Непагрегированная память пула.

  2. NET_BUFFER и NET_BUFFER_LIST пулов (см. раздел Операции отправки и получения драйвера miniport).

  3. Спин-блокировки.

  4. Таймеры.

  5. Порты ввода-вывода.

  6. DMA (см. раздел Точечная и сборная DMA).

  7. Общая память.

  8. Прерывания (см. раздел Управление прерываниями).

После успешного возврата MiniportInitializeEx адаптер находится в состоянии Приостановлено. NDIS может вызвать функцию MiniportRestart , чтобы перевести адаптер в состояние Выполняется. Дополнительные сведения см. в разделе Запуск адаптера Miniport.

Если MiniportInitializeEx возвращает NDIS_STATUS_SUCCESS, драйвер должен освободить все ресурсы для адаптера в функции MiniportHaltEx . Дополнительные сведения см. в разделе Остановка адаптера miniport.

Драйвер должен вызвать NdisMSetMiniportAttributes и задать generalAttributes в структуре NDIS_MINIPORT_ADAPTER_ATTRIBUTES , если возвращает NDIS_STATUS_SUCCESS.

Если miniportInitializeEx завершилось сбоем, miniportInitializeEx должен освободить все выделенные ресурсы, прежде чем вернуться, и адаптер вернется в состояние Остановлено.

Остановка адаптера miniport

Состояния и операции адаптера miniport

Операции отправки и получения драйвера miniport

Точечная или сборная DMA

Запуск адаптера miniport