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.
O ponto de entrada inicial exigido de um driver intermediário deve ser explicitamente nomeado DriverEntry para que o carregador possa identificá-lo corretamente. Todas as outras funções de driver exportadas, descritas nesta seção como MiniportXxx e ProtocolXxx, podem ter qualquer nome especificado pelo fornecedor porque são passadas como endereços para NDIS.
Em um driver intermediário, DriverEntry deve, no mínimo:
Chame NdisMRegisterMiniportDriver e salve o identificador retornado no parâmetro NdisMiniportDriverHandle .
Chame NdisRegisterProtocolDriver para registrar as funções ProtocolXxx do driver se o driver posteriormente se ligar a um driver NDIS subjacente.
Ligue para NdisIMAssociateMiniport para informar o NDIS sobre a associação entre a borda superior da miniporta do motorista e a borda inferior do protocolo.
Um driver intermediário deve registar um manipulador de descarga MiniportDriverUnload. Esse manipulador de descarga é chamado quando o sistema descarrega o driver intermediário. Se DriverEntry falhar, esse manipulador de descarga não será chamado; em vez disso, o driver é simplesmente descarregado. Para obter mais informações sobre o manipulador de descarga, consulte Descarregando um driver intermediário.
O manipulador de descarga deve chamar NdisDeregisterProtocolDriver para cancelar o registro da parte do protocolo do driver intermediário. O manipulador de descarga também deve executar todas as operações de limpeza necessárias, como realocar recursos usados pela parte de protocolo do driver.
Observe que um manipulador de descarga difere de uma função MiniportHaltEx : o manipulador de descarga tem um escopo mais global e o escopo da função MiniportHaltEx é restrito a um adaptador de miniporta específico. O driver intermediário deve limpar as informações de estado e realocar recursos quando cada driver de miniporta subjacente vinculado a ele for interrompido. Para obter informações sobre como lidar com a operação de parada para miniportas virtuais, consulte Parando uma miniporta virtual.
ProtocolUninstall é um manipulador de descarga opcional. Registre um ponto de entrada para essa função na estrutura ProtocolCharacteristics que você passa para NdisRegisterProtocolDriver. O NDIS chama ProtocolUninstall em resposta a uma solicitação do usuário para desinstalar um driver intermediário. O NDIS chama ProtocolUnbindAdapterEx uma vez para cada adaptador acoplado e, em seguida, o NDIS chama ProtocolUninstall. Este manipulador é chamado antes que o sistema realmente descarregue o driver. Esse tempo fornece uma chance de liberar quaisquer objetos de dispositivo ou outros recursos que, de outra forma, poderiam impedir o sistema de chamar o manipulador de descarga registrado com NdisMRegisterMiniportDriver e descarregar o driver.
DriverEntry pode inicializar bloqueios de rotação para proteger quaisquer recursos compartilhados globalmente que o driver intermediário aloca, como variáveis de estado, estruturas e áreas de memória. O driver usa esses recursos para rastrear conexões e para rastrear envios em andamento ou filas alocadas pelo driver.
Se DriverEntry não conseguir alocar quaisquer recursos que o driver precisa para realizar operações de E/S de rede, ele deve liberar todos os recursos alocados anteriormente e retornar um status de erro apropriado.
Os tópicos a seguir descrevem melhor como registrar drivers intermediários:
Registando-se como um controlador intermediário NDIS
Registrar um controlador intermediário como um miniport driver
Registrando um driver intermediário como um driver de protocolo