Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Um driver intermediário inicializa suas miniportas virtuais depois de ter aberto com êxito um adaptador de miniporta subjacente e está pronto para aceitar solicitações e envios em suas miniportas virtuais. Um driver intermediário chama NdisIMInitializeDeviceInstanceEx de sua função ProtocolBindAdapterEx uma ou mais vezes para solicitar a inicialização de uma ou mais miniportas virtuais.
Observação Um driver intermediário não é necessário para chamar NdisIMInitializeDeviceInstanceEx quando ele abre um adaptador de miniporta subjacente. Não precisa haver uma relação um-para-um entre miniportas virtuais e adaptadores abertos.
Defina o parâmetro DriverInstance de NdisIMInitializeDeviceInstanceEx como o nome do dispositivo para a miniporta virtual que está sendo inicializada. O driver intermediário obtém o nome do dispositivo da chave do Registro UpperBindings .
Para um driver intermediário MUX n-to-one que coloca em camadas várias miniportas virtuais em uma única NIC física, deve haver um nome de dispositivo para cada miniporta virtual. O driver intermediário MUX requer um objeto notify que mantém a lista de nomes de dispositivos de miniporta virtual. O local recomendado para a lista é a chave do Registro UpperBindings . Nesse caso, a chave do Registro UpperBindings é uma entrada MULTI_SZ que contém a lista de nomes de dispositivos. O driver intermediário MUX chama NdisIMInitializeDeviceInstanceEx uma vez para cada nome de dispositivo especificado na lista de nomes de dispositivos.
Chamar NdisIMInitializeDeviceInstanceEx resulta em uma chamada para a função MiniportInitializeEx do driver intermediário para executar a inicialização da miniporta virtual especificada, desde que o NDIS receba um IRP_MN_START_DEVICE para iniciar o dispositivo. Se o NDIS não receber esse IRP, o NDIS não chamará a função MiniportInitializeEx do driver intermediário. A chamada para MiniportInitializeEx pode ocorrer posteriormente e, por isso, não está necessariamente dentro do contexto da chamada para NdisIMInitializeDeviceInstanceEx. Se o NDIS nunca chamar MiniportInitializeEx para a miniporta virtual referenciada em uma chamada para NdisIMInitializeDeviceInstanceEx, e o driver intermediário não exigir mais a miniporta virtual, o driver intermediário deverá chamar NdisIMCancelInitializeDeviceInstance para cancelar a inicialização da miniporta virtual. Por exemplo, suponha que um driver intermediário crie uma miniporta virtual em resposta a uma ligação bem-sucedida a uma miniporta subjacente. Se essa ligação for removida antes de o NDIS chamar MiniportInitializeEx, o driver intermediário deverá chamar NdisIMCancelInitializeDeviceInstance para cancelar a inicialização da miniporta.
MiniportInitializeEx deve alocar e inicializar uma área de contexto específica do miniporto virtual. Para obter mais informações sobre como especificar a área de contexto, consulte Inicializando uma miniporta virtual.
Um driver intermediário deve operar como um driver desserializado. Para mais informações sobre os drivers desserializados, consulte Drivers NDIS de miniporta desserializados.
Um driver intermediário deve verificar se as informações de estado que mantém estão inicializadas corretamente. Se o driver requerer recursos relacionados com o envio - como, por exemplo, novas estruturas NET_BUFFER_LIST para dados de rede que o MiniportSendNetBufferLists transmitirá à próxima camada inferior - o pool de estruturas NET_BUFFER_LIST pode ser alocado neste momento.