PROTOCOL_CL_OPEN_AF_COMPLETE_EX función de devolución de llamada (ndis.h)
La función ProtocolClOpenAfCompleteEx completa la apertura de una familia de direcciones (AF) que se inició cuando un cliente de CoNDIS llamó a la función NdisClOpenAddressFamilyEx.
Sintaxis
PROTOCOL_CL_OPEN_AF_COMPLETE_EX ProtocolClOpenAfCompleteEx;
void ProtocolClOpenAfCompleteEx(
[in] NDIS_HANDLE ProtocolAfContext,
[in] NDIS_HANDLE NdisAfHandle,
[in] NDIS_STATUS Status
)
{...}
Parámetros
[in] ProtocolAfContext
Identificador proporcionado por el cliente a su área de contexto para un AF de dirección. El cliente asignó este área de contexto y pasó este identificador a NDIS en su llamada a . función NdisClOpenAddressFamilyEx.
[in] NdisAfHandle
Un identificador proporcionado por NDIS a un AF, si estado es NDIS_STATUS_SUCCESS. De lo contrario, este parámetro es NULL. Este identificador representa una asociación que NDIS estableció entre el cliente y un administrador de llamadas enlazado a un adaptador de miniport de CoNDIS. Si el identificador no es null, el cliente debe guardar el identificador para usarlo en llamadas posteriores a NdisClXxx y NdisCofunciones xxx.
[in] Status
El estado final de la llamada del cliente a NdisClOpenAddressFamilyEx, que puede ser cualquiera de los siguientes:
NDIS_STATUS_SUCCESS
El AF se ha abierto, por lo que el cliente puede inicializar su estado en ProtocolAfContext y usar el identificador devuelto de NdisAfHandle en llamadas posteriores a NdisClXxx y NdisCofunciones xxx, como NdisCoOidRequest.
NDIS_STATUS_RESOURCES
Error en la operación solicitada porque NDIS o el administrador de llamadas no pudieron asignar suficiente memoria ni inicializar el estado que uno de ellos usa para realizar un seguimiento de la apertura del cliente del AF que ProtocolAfContext especifica.
NDIS_STATUS_FAILURE
NDIS produjo un error en la llamada, posiblemente por uno de los siguientes motivos:
- El AF especificado no coincide con ningún AF registrado para el controlador de miniport subyacente al que está enlazado el autor de la llamada.
- El enlace del adaptador del autor de la llamada se está cerrando.
- El administrador de llamadas que registró el AF especificado está cerrando su enlace al adaptador de miniport subyacente.
Valor devuelto
Ninguno
Observaciones
La función ProtocolClOpenAfCompleteEx es necesaria para los clientes de CoNDIS. Los clientes de CoNDIS deben proporcionar ProtocolClOpenAfCompleteEx para completar las operaciones asincrónicas que inician los clientes llamando a función NdisClOpenAddressFamilyEx.
NDIS llama a ProtocolClOpenAfCompleteEx para indicar que se han producido algunas o todas las siguientes:
- Si todos los parámetros del cliente función ProtocolCoAfRegisterNotify que se pasó a la función NdisClOpenAddressFamilyEx eran válidas, NDIS llamó a la función ProtocolCmOpenAf del administrador de llamadas que acaba de registrar el AF especificado con NDIS.
- El administrador de llamadas ha examinado la especificación de que la función ProtocolCoAfRegisterNot ify del cliente pasó a NdisClOpenAddressFamilyEx en el parámetro AddressFamily y devolvió si era válido para este administrador de llamadas a NDIS.
De lo contrario, ProtocolClOpenAfCompleteEx debe configurar el estado determinado por el cliente que el cliente necesitará para las operaciones posteriores en el AF recién abierto. En concreto, el cliente debe guardar el identificador del parámetro NdisAfHandle, normalmente en el área de contexto ProtocolAfCon text del cliente.
Si el cliente acepta llamadas entrantes, podría asignar un área de estado de punto de acceso por servicio (SAP) y llamar a la función NdisClRegisterSap. Si el cliente realiza llamadas salientes, podría asignar un área de estado de conexión por virtual (VC) y crear un VC con la función de NdisCoCreateVc para prepararse para una solicitud entrante de uno de los propios clientes del cliente para realizar una llamada saliente a un nodo remoto.
NDIS llama a ProtocolClOpenAfCompleteEx en IRQL = PASSIVE_LEVEL.
Ejemplos de
Para definir una función ProtocolClOpenAfCompleteEx, 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 una función ProtocolClOpenAfCompleteEx denominada "MyClOpenAfCompleteEx", use el tipo PROTOCOL_CL_OPEN_AF_COMPLETE_EX como se muestra en este ejemplo de código:
PROTOCOL_CL_OPEN_AF_COMPLETE_EX MyClOpenAfCompleteEx;
A continuación, implemente la función de la siguiente manera:
_Use_decl_annotations_
VOID
MyClOpenAfCompleteEx(
NDIS_HANDLE ProtocolAfContext,
NDIS_HANDLE NdisAfHandle,
NDIS_STATUS Status
)
{...}
El tipo de función PROTOCOL_CL_OPEN_AF_COMPLETE_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_CL_OPEN_AF_COMPLETE_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 | Se admite en NDIS 6.0 y versiones posteriores. |
de la plataforma de destino de | Windows |
encabezado de | ndis.h (incluya Ndis.h) |
irQL | PASSIVE_LEVEL |