Compartir a través de


PROTOCOL_UNBIND_ADAPTER_EX función de devolución de llamada (ndis.h)

NDIS llama a la función ProtocolUnbindAdapter Ex de un controlador de protocolo para solicitar al controlador que desenlace desde un adaptador de miniport subyacente.

Nota Debe declarar la función mediante el tipo PROTOCOL_UNBIND_ADAPTER_EX. Para obtener más información, consulte la sección Ejemplos siguientes.
 

Sintaxis

PROTOCOL_UNBIND_ADAPTER_EX ProtocolUnbindAdapterEx;

NDIS_STATUS ProtocolUnbindAdapterEx(
  [in] NDIS_HANDLE UnbindContext,
  [in] NDIS_HANDLE ProtocolBindingContext
)
{...}

Parámetros

[in] UnbindContext

Identificador que identifica el área de contexto NDIS para esta operación desenlace.

[in] ProtocolBindingContext

Identificador de un área de contexto asignada por el controlador de protocolo. El controlador de protocolo mantiene la información de contexto por enlace en este área de contexto. El controlador proporcionó este identificador a NDIS cuando el controlador llamó a la función NdisOpenAdapterEx.

Valor devuelto

ProtocolUnbindAdapterEx devuelve uno de los siguientes valores de estado:

Código devuelto Descripción
NDIS_STATUS_SUCCESS
ProtocolUnbindAdapterEx desenlace correctamente de un adaptador de miniport subyacente.
NDIS_STATUS_PENDING
ProtocolUnbindAdapterEx no completó la operación de desenlace y la operación se completará de forma asincrónica. El controlador de protocolo debe llamar al función NdisCompleteUnbindAdapterEx una vez completada la operación de desenlace.

Observaciones

ProtocolUnbindAdapterEx es una función necesaria. Como recíproca de la función ProtocolBindAdapterEx de, NDIS llama a ProtocolUnbindAdapterEx para liberar los recursos asignados al controlador para las operaciones de E/S de red específicas de un enlace. Un controlador de protocolo no puede producir un error en una operación de desenlace.

Antes de llamar a ProtocolUnbindAdapterEx, NDIS pausa el enlace de protocolo. Para pausar el enlace, NDIS llama a la función ProtocolNetPnPEvent y especifica un evento NetEventPause.

ProtocolUnbindAdapterEx debe llamar a la función NdisCloseAdapterEx para cerrar el enlace al adaptador de miniport subyacente. Si NdisCloseAdapterEx devuelve NDIS_STATUS_SUCCESS, se completa la operación de cierre. Si NdisCloseAdapterEx devuelve NDIS_STATUS_PENDING, NDIS llama al controlador de protocolo. función ProtocolCloseAdapterCompleteEx una vez completada la operación de cierre.

Antes de llamar a NdisCloseAdapterEx, el controlador de protocolo debe borrar la lista de direcciones de multidifusión y los filtros de paquetes para el enlace. El controlador de protocolo establece la lista de direcciones de multidifusión de enlace en NULLy el filtro de paquetes en cero. Para obtener más información, consulte OID_802_3_MULTICAST_LIST y OID_GEN_CURRENT_PACKET_FILTER.

Si se ha especificado un patrón de reactivación, el controlador de protocolo debe quitarlo con el OID de OID_PNP_REMOVE_WAKE_UP_PATTERN y borrar los parámetros de escalado lateral de recepción con el OID_GEN_RECEIVE_SCALE_PARAMETERS OID. Un controlador de protocolo NDIS 6.20 y versiones posteriores debe quitar un patrón wake-on-LAN con el OID de OID_PM_REMOVE_WOL_PATTERN y quitar una descarga de protocolo de baja potencia con el OID de OID_PM_REMOVE_PROTOCOL_OFFLOAD.

ProtocolUnbindAdapterEx no debe liberar la memoria en ProtocolBindingContext hasta que se complete la operación de cierre. NDIS pasa el identificador en protocolBindingContext a ProtocolCloseAdapterCompleteEx.

Si el controlador de protocolo ha completado la operación de desenlace, ProtocolUnbindAdapterEx puede devolver NDIS_STATUS_SUCCESS. Si NdisCloseAdapterEx devuelve NDIS_STATUS_PENDING, ProtocolUnbindAdapterEx debe esperar a que NDIS llame a ProtocolCloseAdapterCompleteEx antes de poder devolver NDIS_STATUS_SUCCESS.

ProtocolUnbindAdapterEx puede devolver NDIS_STATUS_PENDING para aplazar la finalización de la operación de desenlace a más adelante. Si protocolUnbindAdapterEx devuelve NDIS_STATUS_PENDING, el controlador debe llamar finalmente al función NdisCompleteUnbindAdapterEx para completar la operación de desenlace. Si la función NDIS_STATUS_PENDING NdisCloseAdapterEx, el controlador puede completar la operación de desenlace en ProtocolCloseAdapterCompleteEx. ProtocolUnbindAdapterEx puede almacenar el identificador en UnbindContext en el área de contexto de ProtocolBindingContext antes de llamar a NdisCloseAdapterEx. Si ProtocolUnbindAdapterEx almacena el identificador, ProtocolCloseAdapterCompleteEx puede pasar el identificador a NdisCompleteUnbindAdapterEx para completar la operación de desenlace.

En cuanto ProtocolUnbindAdapterEx llama a NdisCloseAdapterEx, el identificador obtenido de la función NdisOpenAdapterEx en el parámetro NdisBindingHandle deja de ser válido. ProtocolUnbindAdapterEx no puede realizar llamadas posteriores a Ndisfunciones xxx con este identificador. El controlador puede obtener indicaciones de recepción y estado del adaptador de miniport subyacente hasta que se complete la operación de cierre.

NDIS llama a ProtocolUnbindAdapterEx en IRQL = PASSIVE_LEVEL.

actualización de la administración de energía y la configuración RSS

Los controladores de protocolo NDIS 6.0 y 6.1 deben realizar las siguientes operaciones cuando proceda:
  1. Quitar los patrones de reactivación de administración de energía en LAN (WOL) del adaptador de miniporte con el OID_PNP_REMOVE_WAKE_UP_PATTERN OID.
  2. Borrar los parámetros de escalado lateral de recepción con OID_GEN_RECEIVE_SCALE_PARAMETERS OID.
Los controladores de protocolo NDIS 6.20 y versiones posteriores deben realizar las siguientes operaciones:
  1. Quite los patrones WOL de administración de energía del adaptador de miniport con el OID_PM_REMOVE_WOL_PATTERN OID.
  2. Quitar descargas del protocolo de administración de energía del adaptador de miniport con OID_PM_REMOVE_PROTOCOL_OFFLOAD OID.

Ejemplos de

Para definir una función ProtocolUnbindAdapterEx, primero debe proporcionar una declaración de función que identifique el tipo de función que va a definir. Windows proporciona un conjunto de tipos de función para controladores. Declarar una función mediante los tipos de función ayuda a análisis de código para controladores, comprobador de controladores estáticos (SDV) y otras herramientas de comprobación encuentran errores y es un requisito para escribir controladores para el sistema operativo Windows.

Por ejemplo, para definir un ProtocolUnbindAdapterEx función denominada "MyUnbindAdapterEx", use el tipo PROTOCOL_UNBIND_ADAPTER_EX tal como se muestra en este ejemplo de código:

PROTOCOL_UNBIND_ADAPTER_EX MyUnbindAdapterEx;

A continuación, implemente la función de la siguiente manera:

_Use_decl_annotations_
NDIS_STATUS
 MyUnbindAdapterEx(
    NDIS_HANDLE  UnbindContext,
    NDIS_HANDLE  ProtocolBindingContext
    )
  {...}

El tipo de función PROTOCOL_UNBIND_ADAPTER_EX se define en el archivo de encabezado Ndis.h. Para identificar con más precisión los errores al ejecutar las herramientas de análisis de código, asegúrese de agregar la anotación Use_decl_annotations a la definición de función. La anotación Use_decl_annotations garantiza que se usen las anotaciones que se aplican al tipo de función PROTOCOL_UNBIND_ADAPTER_EX en el archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, vea Declaración de funciones mediante el uso de tipos de roles de función para controladores NDIS.

Para obtener información sobre Use_decl_annotations, vea Anotación del comportamiento de la función.

Requisitos

Requisito Valor
cliente mínimo admitido Compatible con NDIS 6.0 y versiones posteriores.
de la plataforma de destino de Windows
encabezado de ndis.h (incluya Ndis.h)
irQL PASSIVE_LEVEL

Consulte también

NdisCloseAdapterEx

NdisCompleteUnbindAdapterEx

NdisOpenAdapterEx

OID_802_3_MULTICAST_LIST

OID_GEN_CURRENT_PACKET_FILTER

OID_GEN_RECEIVE_SCALE_PARAMETERS

OID_PNP_REMOVE_WAKE_UP_PATTERN

ProtocolBindAdapterEx

ProtocolCloseAdapterCompleteEx

ProtocolNetPnPEvent de