Inicializando um adaptador miniportuário

Quando um dispositivo de rede fica disponível, o sistema carrega o driver de miniporto NDIS necessário, se ele ainda não estiver carregado. Posteriormente, o gerenciador do Plug and Play (PnP) envia ao NDIS um IRP plug-and-play para iniciar o dispositivo. O NDIS chama a função MiniportInitializeEx do driver de miniport para inicializar um adaptador para operações de E/S de rede. O NDIS pode chamar MiniportInitializeEx a qualquer momento após a inicialização do driver. Para obter mais informações sobre a inicialização do driver de miniporto, consulte Inicializando um driver de miniporto.

Até que MiniportInitializeEx retorne, o NDIS não envia nenhuma solicitação para o adaptador que está sendo inicializado. O adaptador está no estado Inicializando.

Um driver de miniporte normalmente executa as seguintes tarefas em MiniportInitializeEx:

  1. Obtém informações de configuração para o adaptador.

  2. Obtém informações sobre os recursos de hardware para o adaptador.

  3. Chama NdisMSetMiniportAttributes e fornece os seguintes atributos associados ao adaptador:

    • Um ponteiro para uma área de contexto alocada pelo driver.
    • Sinalizadores de atributos apropriados.
    • O intervalo de tempo limite para chamar sua função MiniportCheckForHangEx .
    • O tipo de interface.
  4. Inicializa recursos específicos do adaptador.

O driver de miniporto especifica os atributos do adaptador na estrutura NDIS_MINIPORT_ADAPTER_ATTRIBUTES que MiniportInitializeEx passa para NdisMSetMiniportAttributes.

Normalmente, MiniportInitializeEx aloca recursos específicos do adaptador na seguinte ordem:

  1. Memória do pool nãopagado.

  2. NET_BUFFER e pools de NET_BUFFER_LIST (consulte Operações de envio e recebimento do miniport driver).

  3. Bloqueios de rotação.

  4. Temporizadores.

  5. Portas de E/S.

  6. DMA (consulte Dispersão/Reunir DMA).

  7. Memória compartilhada.

  8. Interrupções (consulte Gerenciando interrupções).

Depois que MiniportInitializeEx retornar com êxito, o adaptador estará no estado Pausado. O NDIS pode chamar a função MiniportRestart para fazer a transição do adaptador para o estado Em execução. Para obter mais informações, consulte Iniciando um adaptador de miniporte.

Se MiniportInitializeEx retornar NDIS_STATUS_SUCCESS, o driver deverá liberar todos os recursos para o adaptador na função MiniportHaltEx . Para obter mais informações, consulte Interrompendo um adaptador de miniport.

O driver deve chamar NdisMSetMiniportAttributes e definir GeneralAttributes na estrutura NDIS_MINIPORT_ADAPTER_ATTRIBUTES se retornar NDIS_STATUS_SUCCESS.

Se MiniportInitializeEx falhou, MiniportInitializeEx deverá liberar todos os recursos alocados antes de retornar e o adaptador retornar ao estado Parado.

Interrompendo um adaptador de miniporte

Estados e operações do adaptador miniport

Operações de envio e recebimento do driver de miniport

DMA de dispersão/coleta

Iniciando um adaptador de miniporte