PROTOCOL_CO_AF_REGISTER_NOTIFY función de devolución de llamada (ndis.h)
La función ProtocolCoAfRegisterNotify la usan los clientes NDIS orientados a la conexión. Todos los clientes NDIS orientados a la conexión deben tener funciones ProtocolCoAfRegisterNotify totalmente funcionales. Los administradores de llamadas independientes orientados a la conexión tienen funciones ProtocolCoAfRegisterNotify registradas que simplemente devuelven el control.
Sintaxis
PROTOCOL_CO_AF_REGISTER_NOTIFY ProtocolCoAfRegisterNotify;
VOID() ProtocolCoAfRegisterNotify(
[in] NDIS_HANDLE ProtocolBindingContext,
[in] PCO_ADDRESS_FAMILY AddressFamily
)
{...}
Parámetros
[in] ProtocolBindingContext
Especifica el identificador del área de contexto asignada por el cliente en la que el protocolo de cliente mantiene el estado en tiempo de ejecución por enlace. La función ProtocolBindAdapterEx del cliente proporcionó este identificador cuando llamó a NdisOpenAdapterEx.
[in] AddressFamily
Puntero a un búfer que describe la compatibilidad del protocolo de señalización proporcionada por un administrador de llamadas que acaba de registrar estos servicios con NDIS llamando a NdisCmRegisterAddressFamilyEx o NdisMCmRegisterAddressFamilyEx.
Valor devuelto
None
Observaciones
Una llamada a ProtocolCoAfRegisterNotify anuncia los servicios de administración de llamadas del controlador MCM o de un administrador de llamadas determinado en una NIC orientada a la conexión subyacente a la que está enlazado el cliente.
ProtocolCoAfRegisterNotify examina los datos de AddressFamily para determinar si el cliente puede usar los servicios de este administrador de llamadas en particular. Si el cliente puede realizar modificaciones en los datos proporcionados por CM (M)en AddressFamily depende de la compatibilidad concreta del protocolo de señalización del administrador de llamadas.
Si el cliente encuentra los servicios de administración de llamadas ofrecidos inaceptables, ProtocolCoAfRegisterNotify devuelve el control y NDIS podría llamar a ProtocolCoAfRegisterNotify de nuevo con el mismo identificador ProtocolBindingContext y una especificación af proporcionada por este u otro administrador de llamadas también enlazado al mismo controlador de miniport subyacente. De lo contrario, ProtocolAfRegisterNotify asigna un área de contexto por AF para el cliente y llama a NdisClOpenAddressFamilyEx con el puntero AddressFamily . Si esta llamada se realiza correctamente, el cliente ha registrado sus funciones ProtocolClXxx con NDIS para las operaciones posteriores orientadas a la conexión mediante los servicios del administrador de llamadas.
Por ejemplo, ProtocolCoAfRegisterNotify o ProtocolClOpenAfCompleteEx podrían llamar a . NdisInitializeNPagedLookasideList una o varias veces como preparación para asignaciones y versiones dinámicas de áreas de contexto por SAP, por vc o por usuario que el cliente necesitará posteriormente.
Si acepta llamadas entrantes, ProtocolCoAfRegisterNotify o La función ProtocolClOpenAfCompleteEx normalmente registra una o varias SAP con el administrador de llamadas. Después de abrir el AF del administrador de llamadas, el cliente puede continuar con la asignación de un área de estado por SAP y llamar a NdisClRegisterSap una o varias veces con NdisAfHandle obtenido de NdisClOpenAddressFamilyEx. Si realiza llamadas salientes, el cliente podría proceder a asignar un área de estado por VC y crear una credencial verificable con NdisCoCreateVc con anticipación de una solicitud entrante de uno de sus propios clientes para realizar una llamada saliente a un nodo remoto.
Ejemplos
Para definir una función ProtocolCoAfRegisterNotify , 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 Code Analysis for Drivers, Static Driver Verifier (SDV) y otras herramientas de comprobación a encontrar errores y es un requisito para escribir controladores para el sistema operativo Windows.Por ejemplo, para definir una función ProtocolCoAfRegisterNotify denominada "MyCoAfRegisterNotify", use el tipo PROTOCOL_CO_AF_REGISTER_NOTIFY como se muestra en este ejemplo de código:
PROTOCOL_CO_AF_REGISTER_NOTIFY MyCoAfRegisterNotify;
A continuación, implemente la función de la siguiente manera:
_Use_decl_annotations_
VOID
MyCoAfRegisterNotify(
NDIS_HANDLE ProtocolBindingContext,
PCO_ADDRESS_FAMILY AddressFamily
)
{...}
El tipo de función PROTOCOL_CO_AF_REGISTER_NOTIFY 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_CO_AF_REGISTER_NOTIFY en el archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, vea Declarar funciones mediante tipos de roles de función para controladores NDIS.
Para obtener información sobre Use_decl_annotations, consulte Anotación del comportamiento de la función.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Compatible con controladores NDIS 6.0 y NDIS 5.1 (consulte ProtocolCoAfRegisterNotify (NDIS 5.1)) en Windows Vista. Compatible con controladores NDIS 5.1 (consulte ProtocolCoAfRegisterNotify (NDIS 5.1)) en Windows XP. |
Plataforma de destino | Windows |
Encabezado | ndis.h (incluya Ndis.h) |
IRQL | PASSIVE_LEVEL |