Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La función ProtocolCmCloseCall de es una función necesaria que finaliza una llamada existente y libera los recursos asignados por el administrador de llamadas para la llamada.
Sintaxis
PROTOCOL_CM_CLOSE_CALL ProtocolCmCloseCall;
NDIS_STATUS ProtocolCmCloseCall(
[in] NDIS_HANDLE CallMgrVcContext,
[in, optional] NDIS_HANDLE CallMgrPartyContext,
[in, optional] PVOID CloseData,
[in, optional] UINT Size
)
{...}
Parámetros
[in] CallMgrVcContext
Especifica el identificador de un área de contexto asignada por el administrador de llamadas en la que el administrador de llamadas mantiene su estado por VC. Este identificador se proporcionó a NDIS desde los administradores de llamadas función protocolCmMakeCall.
[in, optional] CallMgrPartyContext
Especifica el identificador, si existe, en un área de contexto asignada por el administrador de llamadas en la que el administrador de llamadas mantiene información sobre una entidad en un VC de varios puntos. Este identificador es null si la llamada que se cierra no es una llamada de varios puntos.
[in, optional] CloseData
Puntero a un búfer que contiene datos especificados por el cliente orientado a la conexión que se deben enviar a través de la conexión antes de que finalice la llamada. Este parámetro es NULL si el medio de red subyacente no admite transferencias de datos al cerrar una conexión.
[in, optional] Size
Especifica la longitud, en bytes, del búfer en CloseData, cero si CloseData es NULL.
Valor devuelto
ProtocolCmCloseCall devuelve el estado de sus operaciones como una de las siguientes:
| Código devuelto | Descripción |
|---|---|
|
Indica que el administrador de llamadas finalizó correctamente la llamada. |
|
Indica que el administrador de llamadas completará la solicitud para finalizar la llamada de forma asincrónica. Cuando el administrador de llamadas haya completado todas las operaciones necesarias para finalizar la conexión, debe llamar a NdisCmCloseCallComplete para indicar a NDIS que se ha cerrado la llamada. |
|
Indica que se especificó CloseData, pero el medio de red subyacente no admite el envío de datos simultáneos con la finalización de una llamada. |
|
Indica que el administrador de llamadas no pudo finalizar la llamada. El error real devuelto puede ser un estado propagado desde otra rutina de biblioteca NDIS. |
Observaciones
ProtocolCmCloseCall comunicarse con dispositivos de control de red u otros actores específicos de medios, según lo requiera su medio, para finalizar una conexión entre el nodo local y un nodo remoto. Si el administrador de llamadas es necesario para comunicarse con dispositivos de control de red (como un conmutador de red), debe usar una conexión virtual al dispositivo de control de red que estableció en su función ProtocolBindAdapterEx. Los administradores de llamadas independientes se comunican con estos dispositivos de red llamando a NdisCoSendNetBufferLists. Los controladores de miniport con compatibilidad integrada con la administración de llamadas nunca llaman a NdisCoSendNetBufferLists. En su lugar, transmiten los datos directamente a través de la red.
Si closeData no esNULL y el medio que controla este administrador de llamadas debe transmitir los datos especificados en CloseData al nodo remoto antes de completar la finalización de la llamada. Si no se admite el envío de datos simultáneos con una conexión finalizada, los administradores de llamadas deben devolver NDIS_STATUS_INVALID_DATA.
Si protocolCmCloseCall se pasa un CallMgrPartyContext explícito, la llamada que se termina es un VC de varios puntos y el administrador de llamadas debe realizar cualquier comunicación de red necesaria con su hardware de red, según corresponda a su tipo de medio, para finalizar la llamada como una llamada de varios puntos. El administrador de llamadas también debe liberar la memoria que asignó anteriormente, en ProtocolCmMakeCall, para su estado por parte al que apunta CallMgrPartyContext . Si no se libera correctamente, se desasigna o desactiva esos recursos, se produce una pérdida de memoria.
Una vez finalizada la llamada con la red, se han enviado los datos de cierre y se han liberado todos los recursos de CallMgrPartyContext, el administrador de llamadas debe llamar a NdisCmDeactivateVc. Esto notifica a NDIS y al controlador de miniport subyacente, si existe, para esperar ninguna transferencia adicional en el VC especificado.
Ejemplos de
Para definir una función ProtocolCmCloseCall, 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 ProtocolCmCloseCall función denominada "MyCmCloseCall", use el tipo PROTOCOL_CM_CLOSE_CALL tal como se muestra en este ejemplo de código:
PROTOCOL_CM_CLOSE_CALL MyCmCloseCall;
A continuación, implemente la función de la siguiente manera:
_Use_decl_annotations_
NDIS_STATUS
MyCmCloseCall(
NDIS_HANDLE CallMgrVcContext,
NDIS_HANDLE CallMgrPartyContext,
PVOID CloseData,
UINT Size
)
{...}
El tipo de función PROTOCOL_CM_CLOSE_CALL 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_CALL 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 los controladores NDIS 6.0 y NDIS 5.1 (consulte ProtocolCmCloseCall (NDIS 5.1)) en Windows Vista. Compatible con los controladores NDIS 5.1 (consulte ProtocolCmCloseCall (NDIS 5.1)) en Windows XP. |
| de la plataforma de destino de | Windows |
| encabezado de | ndis.h (incluya Ndis.h) |
| irQL | <= DISPATCH_LEVEL |