Compartir a través de


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

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.

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

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
NDIS_STATUS_SUCCESS
Indica que el administrador de llamadas finalizó correctamente la llamada.
NDIS_STATUS_PENDING
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.
NDIS_STATUS_INVALID_DATA
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.
NDIS_STATUS_XXX
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

Consulte también

NdisClMakeCall

NdisCmDeactivateVc

NdisCoSendNetBufferLists

ProtocolCmMakeCall de