Share via


Função NdisOpenAdapter (ndis.h)

Nota NDIS 5. x foi preterido e substituído pelo NDIS 6. x. Para obter o novo desenvolvimento de driver NDIS, consulte Drivers de rede começando com o Windows Vista. Para obter informações sobre como portar o NDIS 5. x drivers para NDIS 6. x, consulte Portabilidade de drivers NDIS 5.x para NDIS 6.0.

O NdisOpenAdapter configura uma associação entre o protocolo de chamada e um driver NIC subjacente específico ou um driver intermediário do NDIS.

Sintaxe

void NdisOpenAdapter(
  [out]          PNDIS_STATUS Status,
  [out]          PNDIS_STATUS OpenErrorStatus,
  [out]          PNDIS_HANDLE NdisBindingHandle,
  [out]          PUINT        SelectedMediumIndex,
  [in]           PNDIS_MEDIUM MediumArray,
  [in]           UINT         MediumArraySize,
  [in]           NDIS_HANDLE  NdisProtocolHandle,
  [in]           NDIS_HANDLE  ProtocolBindingContext,
  [in]           PNDIS_STRING AdapterName,
  [in]           UINT         OpenOptions,
  [in, optional] PSTRING      AddressingInformation
);

Parâmetros

[out] Status

Ponteiro para uma variável fornecida pelo chamador que pode ser um dos seguintes valores no retorno dessa função:

  • STATUS_SUCCESS
    A associação solicitada agora está configurada para que o chamador possa usar os valores retornados em NdisBindingHandle e SelectedMediumIndex em chamadas subsequentes para NdisXxx.

  • NDIS_STATUS_PENDING
    A operação solicitada está sendo tratada de forma assíncrona e a função ProtocolOpenAdapterComplete do chamador será chamada quando a abertura for concluída.

  • NDIS_STATUS_RESOURCES
    A operação solicitada falhou porque o NDIS não pôde alocar memória suficiente ou inicializar o estado que usa para rastrear uma associação aberta.

  • NDIS_STATUS_ADAPTER_NOT_FOUND
    A operação solicitada falhou porque o nome em AdapterName não pôde ser encontrado no namespace do objeto do sistema.

  • NDIS_STATUS_UNSUPPORTED_MEDIA
    A matriz em MediumArray não especificou nenhum meio com suporte do NDIS ou do driver subjacente.

  • NDIS_STATUS_CLOSING
    O chamador ou o dispositivo físico ou virtual designado em AdapterName está sendo fechado.

  • NDIS_STATUS_OPEN_FAILED
    A tentativa aberta falhou por nenhum dos motivos específicos anteriores. Por exemplo, possivelmente o NDIS não pôde inicializar o pacote de filtro para o meio selecionado.

[out] OpenErrorStatus

Ponteiro para uma variável fornecida pelo chamador que pode conter um erro NDIS_STATUS_XXX fornecendo mais informações se NdisOpenAdapter retornar um erro em Status. Por exemplo, o driver de uma NIC do Anel de Token pode retornar um erro de anel nessa variável.

[out] NdisBindingHandle

Ponteiro para uma variável fornecida pelo chamador na qual o NDIS retorna um identificador que representa uma associação bem-sucedida entre o chamador e a NIC física ou virtual especificada em AdapterName.

[out] SelectedMediumIndex

Ponteiro para uma variável fornecida pelo chamador na qual o NDIS retorna o índice do elemento de matriz que especifica o tipo de mídia que o driver NDIS subjacente usa.

[in] MediumArray

Ponteiro para uma matriz de valores de tipo NDIS_MEDIUM especificando os tipos de mídia que o chamador pode dar suporte. Os elementos possíveis incluem qualquer subconjunto adequado do seguinte:

  • NdisMedium802_3
    Especifica uma rede Ethernet (802.3).

  • NdisMedium802_5
    Especifica uma rede de Anel de Token (802.5).

  • NdisMediumFddi
    Especifica uma rede FDDI (Interface de Dados Distribuídos de Fibra).

  • NdisMediumWan
    Especifica uma rede de ampla área. Esse tipo abrange várias formas de NICs ponto a ponto e WAN, bem como formatos de endereço/cabeçalho variantes que devem ser negociados entre o driver de protocolo e o driver subjacente após a associação ser estabelecida.

  • NdisMediumLocalTalk
    Especifica uma rede LocalTalk.

  • NdisMediumDix
    Especifica uma rede Ethernet para a qual os drivers usam o formato de cabeçalho DIX Ethernet.

  • NdisMediumArcnetRaw
    Especifica uma rede ARCNET.

  • NdisMediumArcnet878_2
    Especifica uma rede ARCNET (878.2).

  • NdisMediumAtm
    Especifica uma rede de caixa eletrônico. Os protocolos de cliente orientados para conexão podem se associar a um driver de miniporto subjacente que retorna esse valor. Caso contrário, os protocolos herdados se associam ao driver intermediário LanE fornecido pelo sistema, que relata seu tipo médio como NdisMedium802_3 ou NdisMedium802_5, dependendo de como o driver LanE é configurado pelo administrador de rede.

  • NdisMediumWirelessWan
    Especifica uma rede sem fio. Os drivers de miniporto NDIS 5.X que dão suporte a pacotes WLAN (LAN sem fio) ou WWAN (WAN sem fio) declaram seu meio como NdisMedium802_3 e emulam ethernet para drivers NDIS de nível superior.

    Nota Esse tipo de mídia não está disponível para uso a partir do Windows Vista.

  • NdisMediumIrda
    Especifica uma rede infravermelha (IrDA).

  • NdisMediumCoWan
    Especifica uma rede de ampla área em um ambiente orientado a conexões.

  • NdisMedium1394
    Especifica uma rede IEEE 1394 (transmissão de fogo).

[in] MediumArraySize

Especifica o número de elementos em MediumArray.

[in] NdisProtocolHandle

Especifica o identificador retornado por NdisRegisterProtocol.

[in] ProtocolBindingContext

Especifica o identificador de uma área de contexto residente fornecida pelo chamador na qual o protocolo mantém o estado sobre essa associação depois que ele é estabelecido.

[in] AdapterName

Ponteiro para um tipo de NDIS_STRING que contém uma cadeia de caracteres contada, especificada no conjunto de caracteres padrão do sistema, nomeando a NIC ou o adaptador virtual de um driver NDIS subjacente. Esse driver exporta um conjunto de funções de borda superior ( MiniportXxx). Para drivers windows 2000 e posteriores, essa cadeia de caracteres contada contém caracteres Unicode. Ou seja, para o Windows 2000 e posterior, o NDIS define o tipo NDIS_STRING como um tipo de UNICODE_STRING .

[in] OpenOptions

Especifica uma máscara de bits que contém sinalizadores que o chamador passa para o próximo driver inferior, considerado um driver NIC. Atualmente, esse parâmetro é reservado para uso do sistema.

[in, optional] AddressingInformation

Ponteiro para uma cadeia de caracteres contada de comprimento variável opcional que contém informações específicas para a NIC subjacente que o driver NIC pode usar para programar o netcard. Esse ponteiro pode ser NULL.

Se for fornecido, as informações de endereçamento deverão permanecer válidas até que a operação aberta seja concluída. Um driver NIC subjacente que dá suporte a um modem assíncrono pode usar essas informações para discagem.

Retornar valor

Nenhum

Comentários

Um driver de protocolo chama NdisOpenAdapter de sua função ProtocolBindAdapter . O NDIS não dá mais suporte à chamada de NdisOpenAdapter da função DriverEntry , que era uma opção disponível para protocolos herdados (V3.0). O NDIS não dá mais suporte a protocolos V3.0. O NDIS falha em qualquer tentativa de chamar NdisOpenAdapter fora do contexto de ProtocolBindAdapter.

A cadeia de caracteres em AdapterName permanece válida somente até que NdisOpenAdapter retorne o controle, mesmo que retorne NDIS_STATUS_PENDING em Status.

As variáveis em NdisBindingHandle e SelectedMediumIndex devem ser ignoradas até que a função ProtocolOpenAdapterComplete seja chamada se NdisOpenAdapter retornar NDIS_STATUS_PENDING. Como essas variáveis podem permanecer inválidas até que ProtocolOpenAdapterComplete seja chamado, elas não podem estar na pilha. Normalmente, essas variáveis residem na área ProtocolBindingContext , pois esse identificador é um parâmetro de entrada para ProtocolOpenAdapterComplete.

Um driver de protocolo deve manter o identificador retornado em NdisProtocolHandle. É um parâmetro necessário para outras funções NdisXxx que o driver chama posteriormente. O ProtocolBindingContext fornecido é um parâmetro de entrada para as funções ProtocolXxx do chamador, portanto, os protocolos geralmente passam um ponteiro NdisProtocolHandle para uma variável em algum lugar na área de contexto alocada pelo chamador em suas chamadas para NdisOpenAdapter.

O chamador usa o valor retornado em SelectedMediumIndex em chamadas subsequentes para NdisRequest e/ou NdisCoRequest. Os OIDs que ele define no pacote de solicitação dependem do NdisMediumXxx retornado. Por exemplo, se NdisMediumAtm for retornado em SelectedMediumIndex, o driver de protocolo chamará NdisCoRequest ao especificar OID_ATM_ códigos XXX ou OID_CO_XXX e NdisRequest ao especificar códigos OID_GEN_XXX .

Se NdisMediumWan for retornado em SelectedMediumIndex, o driver de protocolo chamará NdisRequest especificando OID_WAN_MEDIUM_SUBTYPE em uma consulta para determinar qual dos tipos de mídia WAN o driver subjacente usa.

Se uma consulta global emitida anteriormente de OID_NETWORK_TYPE para mídia sem fio indicar que o driver e a NIC subjacente dão suporte a mais de um meio do tipo NdisMediumWirelessWan, o protocolo deverá selecionar uma das mídias com suporte assim que o NDIS tiver configurado a associação e antes que o protocolo selecione o formato de cabeçalho.

Para obter mais informações sobre as OIDs gerais e médias específicas que os drivers de protocolo usam para negociar com um driver NDIS just-bound, consulte Identificadores de objeto NDIS.

  • Plataforma de destino: Universal
  • Versão: não há suporte para drivers NDIS 6.0 no Windows Vista. Em vez disso, use NdisOpenAdapterEx. Com suporte para drivers NDIS 5.1 no Windows Vista e windows XP.

Requisitos

Requisito Valor
Cabeçalho ndis.h (inclua Ndis.h)
Biblioteca Ndis.lib
IRQL PASSIVE_LEVEL

Confira também