PROTOCOL_CM_CLOSE_AF función de devolución de llamada (ndis.h)
La función ProtocolCmCloseAf es una función necesaria que libera recursos por apertura para una familia de direcciones que admite un administrador de llamadas.
Sintaxis
PROTOCOL_CM_CLOSE_AF ProtocolCmCloseAf;
NDIS_STATUS ProtocolCmCloseAf(
[in] NDIS_HANDLE CallMgrAfContext
)
{...}
Parámetros
[in] CallMgrAfContext
Especifica el identificador del área de contexto por AF del administrador de llamadas, proporcionada originalmente a NDIS por la función ProtocolCmOpenAf del administrador de llamadas.
Valor devuelto
ProtocolCmCloseAf devuelve el estado de sus operaciones como una de las siguientes:
Código devuelto | Descripción |
---|---|
|
Indica que el administrador de llamadas ha liberado o desactivado correctamente los recursos asignados en nombre del cliente orientado a la conexión que abrió esta instancia de la familia de direcciones. |
|
Indica que la solicitud para cerrar la instancia abierta de la familia de direcciones se completará de forma asincrónica. El administrador de llamadas debe llamar a NdisCmCloseAddressFamilyComplete cuando se hayan completado todas estas operaciones. |
Comentarios
ProtocolCmCloseAf libera o desactiva los recursos asignados por el administrador de llamadas en su función ProtocolCmOpenAf . El administrador de llamadas también debe deshacer cualquier otra acción que haya realizado en nombre del cliente orientado a la conexión cuando ese cliente abrió la familia de direcciones.
Si hay solicitudes o conexiones pendientes abiertas en una familia de direcciones almacenada en CallMgrAfContext, un administrador de llamadas puede responder a la solicitud de un cliente para cerrar la familia de direcciones de cualquiera de las maneras siguientes:
- El administrador de llamadas puede producir un error en la solicitud con NDIS_STATUS_NOT_ACCEPTED.
- El administrador de llamadas puede devolver NDIS_STATUS_PENDING. Una vez que el cliente ha cerrado todas las llamadas y ha anulado el registro de todas las SAP, el administrador de llamadas puede cerrar la familia de direcciones y llamar a NdisCmCloseAddressFamilyComplete o NdisMCmCloseAddressFamilyComplete para notificar al cliente. Esta es la respuesta preferida.
Ejemplos
Para definir una función ProtocolCmCloseAf , 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 ProtocolCmCloseAf denominada "MyCmCloseAf", use el tipo de PROTOCOL_CM_CLOSE_AF como se muestra en este ejemplo de código:
PROTOCOL_CM_CLOSE_AF MyCmCloseAf;
A continuación, implemente la función de la siguiente manera:
_Use_decl_annotations_
NDIS_STATUS
MyCmCloseAf(
NDIS_HANDLE CallMgrAfContext
)
{...}
El tipo de función PROTOCOL_CM_CLOSE_AF 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_CM_CLOSE_AF 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 ProtocolCmCloseAf (NDIS 5.1)) en Windows Vista. Compatible con controladores NDIS 5.1 (consulte ProtocolCmCloseAf (NDIS 5.1)) en Windows XP. |
Plataforma de destino | Windows |
Encabezado | ndis.h (incluya Ndis.h) |
IRQL | <= DISPATCH_LEVEL |