Desassociação de um adaptador
O NDIS chama a função ProtocolUnbindAdapterEx de um driver de protocolo para solicitar que o driver seja desvinmado de um adaptador subjacente. Como recíproco de ProtocolBindAdapterEx, o NDIS chama ProtocolUnbindAdapterEx para fechar a associação ao adaptador e liberar os recursos alocados pelo driver para a associação.
Em ProtocolUnbindAdapterEx, um driver de protocolo chama NdisCloseAdapterEx para fechar a associação a um adaptador subjacente. O driver de protocolo passa NdisCloseAdapterEx o identificador que NdisOpenAdapterEx forneceu em seu parâmetro NdisBindingHandle . Esse identificador identifica a associação que o NDIS deve fechar.
Os drivers de protocolo devem fechar um adaptador da função ProtocolBindAdapterEx ou da função ProtocolUnbindAdapterEx .
Se um driver de protocolo precisar iniciar uma operação para fechar uma associação, o driver poderá chamar NdisUnbindAdapter. NdisUnbindAdapter agenda um item de trabalho que resulta em uma chamada NDIS para ProtocolUnbindAdapterEx. Esse item de trabalho pode ser executado antes que a chamada para NdisUnbindAdapter retorne. Portanto, os gravadores de driver devem assumir que o identificador de associação é inválido após o retorno de NdisUnbindAdapter .
Se um driver de protocolo retornar NDIS_STATUS_PENDING de ProtocolUnbindAdapterEx, ele deverá chamar NdisCompleteUnbindAdapterEx com o status final para concluir a solicitação de associação.
Se o NDIS retornar NDIS_STATUS_PENDING de NdisCloseAdapterEx, o NDIS chamará posteriormente a função ProtocolCloseAdapterCompleteEx do driver de protocolo.
O NDIS poderá chamar ProtocolUnbindAdapterEx se a associação estiver no estado Pausado.
Depois que todas as operações desassociadas forem concluídas, a associação estará no estado Unbound.