Función NdisOpenAdapter (ndis.h)
Nota NDIS 5. x ha quedado en desuso y se sustituye por NDIS 6. x. Para el nuevo desarrollo de controladores NDIS, consulte Controladores de red a partir de Windows Vista. Para obtener información sobre cómo migrar NDIS 5. x controladores a NDIS 6. x, consulte Migración de controladores NDIS 5.x a NDIS 6.0.
NdisOpenAdapter configura un enlace entre el protocolo de llamada y un controlador NIC o un controlador intermedio NDIS subyacente determinado.
Sintaxis
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
Puntero a una variable proporcionada por el autor de la llamada que puede ser uno de los siguientes valores devueltos desde esta función:
STATUS_SUCCESS
El enlace solicitado ahora está configurado para que el autor de la llamada pueda usar los valores devueltos en NdisBindingHandle y SelectedMediumIndex en llamadas posteriores a NdisXxx.NDIS_STATUS_PENDING
La operación solicitada se controla de forma asincrónica y se llamará a la función ProtocolOpenAdapterComplete del autor de la llamada cuando se complete la apertura.NDIS_STATUS_RESOURCES
Error en la operación solicitada porque NDIS no pudo asignar memoria suficiente ni inicializar el estado que usa para realizar un seguimiento de un enlace abierto.NDIS_STATUS_ADAPTER_NOT_FOUND
Error en la operación solicitada porque no se encontró el nombre en AdapterName en el espacio de nombres del objeto del sistema.NDIS_STATUS_UNSUPPORTED_MEDIA
La matriz de MediumArray no especificó ningún medio admitido por NDIS ni por el controlador subyacente.NDIS_STATUS_CLOSING
Se está cerrando el autor de la llamada o el dispositivo físico o virtual designado en AdapterName .NDIS_STATUS_OPEN_FAILED
Error en el intento de apertura por ninguno de los motivos específicos anteriores. Por ejemplo, posiblemente NDIS no pudo inicializar el paquete de filtro para el medio seleccionado.
[out] OpenErrorStatus
Puntero a una variable proporcionada por el autor de la llamada que puede contener un error NDIS_STATUS_XXX que proporciona más información si NdisOpenAdapter devuelve un error en Status. Por ejemplo, el controlador de una NIC de anillo de token podría devolver un error de anillo en esta variable.
[out] NdisBindingHandle
Puntero a una variable proporcionada por el autor de la llamada en la que NDIS devuelve un identificador que representa un enlace correcto entre el autor de la llamada y la NIC física o virtual especificada en AdapterName.
[out] SelectedMediumIndex
Puntero a una variable proporcionada por el autor de la llamada en la que NDIS devuelve el índice del elemento de matriz que especifica el tipo de medio que usa el controlador NDIS subyacente.
[in] MediumArray
Puntero a una matriz de valores de tipo NDIS_MEDIUM que especifican los tipos de medios que el autor de la llamada puede admitir. Los posibles elementos incluyen cualquier subconjunto adecuado de lo siguiente:
NdisMedium802_3
Especifica una red Ethernet (802.3).NdisMedium802_5
Especifica una red de anillo de token (802.5).NdisMediumFddi
Especifica una red de interfaz de datos distribuida (FDDI) de fibra.NdisMediumWan
Especifica una red de área extensa. Este tipo trata varias formas de NIC de punto a punto y WAN, así como formatos de dirección/encabezado variantes que se deben negociar entre el controlador de protocolo y el controlador subyacente después de establecer el enlace.NdisMediumLocalTalk
Especifica una red de LocalTalk.NdisMediumDix
Especifica una red Ethernet para la que los controladores usan el formato de encabezado Ethernet DIX.NdisMediumArcnetRaw
Especifica una red ARCNET.NdisMediumArcnet878_2
Especifica una red ARCNET (878.2).NdisMediumAtm
Especifica una red ATM. Los protocolos de cliente orientados a la conexión se pueden enlazar a un controlador de miniport subyacente que devuelve este valor. De lo contrario, los protocolos heredados se enlazan al controlador intermedio de LanE proporcionado por el sistema, que informa de su tipo medio como de NdisMedium802_3 o NdisMedium802_5, dependiendo de cómo el administrador de red configure el controlador LanE.NdisMediumWirelessWan
Especifica una red inalámbrica. Los controladores de miniporte NDIS 5.X que admiten paquetes LAN inalámbricos (WLAN) o WAN inalámbrica (WWAN) declaran su medio como NdisMedium802_3 y emulan Ethernet a controladores NDIS de nivel superior.Nota Este tipo de medio no está disponible para su uso a partir de Windows Vista.
NdisMediumIrda
Especifica una red de infrarrojos (IrDA).NdisMediumCoWan
Especifica una red de área extensa en un entorno orientado a la conexión.NdisMedium1394
Especifica una red IEEE 1394 (cable de incendio).
[in] MediumArraySize
Especifica el número de elementos en MediumArray.
[in] NdisProtocolHandle
Especifica el identificador devuelto por NdisRegisterProtocol.
[in] ProtocolBindingContext
Especifica el identificador de un área de contexto residente proporcionada por el autor de la llamada en la que el protocolo mantiene el estado sobre este enlace una vez establecido.
[in] AdapterName
Puntero a un tipo de NDIS_STRING que contiene una cadena contada, especificada en el juego de caracteres predeterminado del sistema, asigna un nombre a la NIC o al adaptador virtual de un controlador NDIS subyacente. Este controlador exporta un conjunto de funciones de borde superior ( MiniportXxx). Para los controladores de Windows 2000 y versiones posteriores, esta cadena contada contiene caracteres Unicode. Es decir, para Windows 2000 y versiones posteriores, NDIS define el tipo de NDIS_STRING como un tipo de UNICODE_STRING .
[in] OpenOptions
Especifica una máscara de bits que contiene marcas que el autor de la llamada pasa al controlador inferior siguiente, que se supone que es un controlador NIC. Actualmente, este parámetro está reservado para uso del sistema.
[in, optional] AddressingInformation
Puntero a una cadena contada de longitud variable opcional que contiene información específica de la NIC subyacente que el controlador NIC puede usar para programar el netcard. Este puntero puede ser NULL.
Si se proporciona, la información de direccionamiento debe permanecer válida hasta que se complete la operación de apertura. Un controlador NIC subyacente que admita un módem asincrónico puede usar esta información para marcar.
Valor devuelto
None
Observaciones
Un controlador de protocolo llama a NdisOpenAdapter desde su función ProtocolBindAdapter . NDIS ya no admite la llamada a NdisOpenAdapter desde la función DriverEntry , que era una opción disponible para los protocolos heredados (V3.0). NDIS ya no admite protocolos V3.0. NDIS produce un error al intentar llamar a NdisOpenAdapter fuera del contexto de ProtocolBindAdapter.
La cadena de AdapterName permanece válida solo hasta que NdisOpenAdapter devuelve el control, incluso si devuelve NDIS_STATUS_PENDING en Estado.
Las variables de NdisBindingHandle y SelectedMediumIndex deben omitirse hasta que se llame a la función ProtocolOpenAdapterComplete si NdisOpenAdapter devuelve NDIS_STATUS_PENDING. Dado que estas variables pueden permanecer no válidas hasta que se llama a ProtocolOpenAdapterComplete , no pueden estar en la pila. Normalmente, estas variables residen en el área ProtocolBindingContext , ya que este identificador es un parámetro de entrada para ProtocolOpenAdapterComplete.
Un controlador de protocolo debe mantener el identificador devuelto en NdisProtocolHandle. Es un parámetro necesario para otras funciones de NdisXxx a las que el controlador llama posteriormente. ProtocolBindingContext proporcionado es un parámetro de entrada para las funciones ProtocolXxx del autor de la llamada, por lo que los protocolos normalmente pasan un puntero NdisProtocolHandle a una variable en algún lugar del área de contexto asignada por el autor de la llamada en sus llamadas a NdisOpenAdapter.
El llamador usa el valor devuelto en SelectedMediumIndex en llamadas posteriores a NdisRequest o NdisCoRequest. Los OID que establece en el paquete de solicitud dependen del NdisMediumXxx devuelto. Por ejemplo, si se devuelve NdisMediumAtm en SelectedMediumIndex, el controlador de protocolo llama a NdisCoRequest al especificar OID_ATM_ códigos XXX o OID_CO_XXX y NdisRequest al especificar códigos OID_GEN_XXX .
Si se devuelve NdisMediumWan en SelectedMediumIndex, el controlador de protocolo llama a NdisRequest especificando OID_WAN_MEDIUM_SUBTYPE en una consulta para determinar qué tipos de medios WAN usa el controlador subyacente.
Si una consulta global emitida anteriormente de OID_NETWORK_TYPE para medios inalámbricos indica que el controlador y la NIC subyacente admiten más de un medio de tipo NdisMediumWirelessWan, el protocolo debe seleccionar uno de los medios admitidos en cuanto NDIS haya configurado el enlace y antes de que el protocolo seleccione el formato de encabezado.
Para obtener más información sobre los OID generales y específicos de medios que usan los controladores de protocolo para negociar con un controlador NDIS enlazado just-bound, consulte Identificadores de objetos NDIS.
- Plataforma de destino: Universal
- Versión: no se admite para controladores NDIS 6.0 en Windows Vista. En su lugar, use NdisOpenAdapterEx. Compatible con controladores NDIS 5.1 en Windows Vista y Windows XP.
Requisitos
Requisito | Valor |
---|---|
Header | ndis.h (incluya Ndis.h) |
Library | Ndis.lib |
IRQL | PASSIVE_LEVEL |
Consulte también
- ANSI_STRING
- DriverEntry de controladores de protocolo NDIS
- MiniportInitialize
- MiniportQueryInformation
- MiniportSendPackets
- MiniportSetInformation
- NdisCloseAdapter
- NdisClOpenAddressFamily
- NdisCoRequest
- NdisCmRegisterAddressFamily
- NdisIMInitializeDeviceInstance
- NdisIMRegisterLayeredMiniport
- NdisMIndicateReceivePacket
- NDIS_PACKET_OOB_DATA
- NdisRegisterProtocol
- NdisRequest
- NdisSendPackets
- ProtocolBindAdapter
- ProtocolOpenAdapterComplete
- ProtocolReceivePacket
- UNICODE_STRING