Compartir a través de


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

Todos los clientes NDIS orientados a la conexión usan la función ProtocolClIncomingCloseCall . Todos estos clientes deben tener funciones ProtocolClIncomingCloseCall totalmente funcionales.

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

Sintaxis

PROTOCOL_CL_INCOMING_CLOSE_CALL ProtocolClIncomingCloseCall;

void ProtocolClIncomingCloseCall(
  [in] NDIS_STATUS CloseStatus,
  [in] NDIS_HANDLE ProtocolVcContext,
  [in] PVOID CloseData,
  [in] UINT Size
)
{...}

Parámetros

[in] CloseStatus

Especifica el estado que indica la causa de la desmontaje de la conexión, que normalmente se NDIS_STATUS_SUCCESS para indicar que la parte remota a la llamada solicitó que se cerrara la conexión. Cualquier otro valor indica que los problemas en la red provocaron que el administrador de llamadas finalizara la conexión.

[in] ProtocolVcContext

Especifica el identificador del área de contexto por VC del cliente para la credencial verificable en la que se cierra la conexión. Sea cual sea el valor de CloseStatus, el cliente no puede enviar ni recibir datos en el VC designado por NdisVcHandle que almacenó en este área de contexto.

[in] CloseData

Puntero a un búfer que contiene un mensaje de cierre específico del protocolo, posiblemente uno proporcionado por el cliente remoto que el administrador de llamadas recibió a través de la red, o este parámetro puede ser NULL.

Cuando CloseStatus se NDIS_STATUS_SUCCESS, este parámetro es NULL si el medio de red subyacente no admite transferencias de datos al cerrar una conexión. Sin embargo, cualquier administrador de llamadas determinado podría definir una estructura para pasar información de diagnóstico adicional a sus clientes en las desmontaciones de llamadas causadas por problemas en la red.

[in] Size

Especifica el tamaño en bytes del búfer en CloseData, cero si CloseData es NULL.

Valor devuelto

None

Observaciones

Una llamada a ProtocolClIncomingCloseCall indica que se ha producido una de las siguientes acciones:

  • El administrador de llamadas ha recibido una solicitud a través de la red para cerrar una conexión establecida, identificada por NdisVcHandle que el cliente almacenó en su área de contexto por VC en ProtocolVcContext .
  • El administrador de llamadas ha detectado que los problemas de red impedirán más transferencias de datos en la conexión establecida.
En cualquier caso, ProtocolClIncomingCloseCall debe llevar a cabo cualquier operación determinada por protocolo, como notificar a los propios clientes del cliente que se interrumpe la conexión. Por ejemplo, si la llamada que se va a cerrar es un VC de varios puntos creado por el cliente, ProtocolClIncomingCloseCall debe llamar a NdisClDropParty una o varias veces hasta que solo una entidad permanezca en su VC de varios puntos.

Si el VC especificado es una conexión de punto único o de varios puntos, ProtocolClIncomingCloseCall debe llamar a NdisClCloseCall para confirmar que el cliente no intentará enviar ni esperar recibir datos en esta credencial verificable concreta. Si el administrador de llamadas creó este VC, ProtocolClIncomingCloseCall debe devolver el control después de llamar a NdisClCloseCall. Es responsabilidad del administrador de llamadas destruir o reutilizar cualquier vc que haya creado.

Si el cliente creó originalmente este VC para una llamada saliente, ProtocolClIncomingCloseCall puede realizar una de las siguientes después de llamar a NdisClDropParty tantas veces como sea necesario, si existe, y NdisClCloseCall:

  • Si CloseStatus está NDIS_STATUS_SUCCESS, desmonte la credencial verificable con NdisCoDeleteVc y libere el área de contexto por vc del cliente o prepárela para reutilizarla en una llamada posterior a NdisCoCreateVc.
  • Si CloseStatus está NDIS_STATUS_SUCCESS, conserve la credencial verificable que creó el cliente y prepare su área de contexto por VC para reutilizarla en una llamada posterior a NdisClMakeCall.
  • De lo contrario, desmonta la credencial verificable con NdisCoDeleteVc y libera su área de contexto por VC si el administrador de llamadas indicó que la red se ha vuelto inoperante.

Ejemplos

Para definir una función ProtocolClIncomingCloseCall , 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 ProtocolClIncomingCloseCall denominada "MyClIncomingCloseCall", use el tipo PROTOCOL_CL_INCOMING_CLOSE_CALL como se muestra en este ejemplo de código:

PROTOCOL_CL_INCOMING_CLOSE_CALL MyClIncomingCloseCall;

A continuación, implemente la función de la siguiente manera:

_Use_decl_annotations_
VOID
 MyClIncomingCloseCall(
    NDIS_STATUS  CloseStatus,
    NDIS_HANDLE  ProtocolVcContext,
    PVOID  CloseData,
    UINT  Size
    )
  {...}

El tipo de función PROTOCOL_CL_INCOMING_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_CL_INCOMING_CLOSE_CALL 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 ProtocolClIncomingCloseCall (NDIS 5.1)) en Windows Vista. Compatible con los controladores NDIS 5.1 (consulte ProtocolClIncomingCloseCall (NDIS 5.1)) en Windows XP.
Plataforma de destino Windows
Encabezado ndis.h (incluya Ndis.h)
IRQL <= DISPATCH_LEVEL

Consulte también

NdisClCloseCall

NdisClDropParty

NdisClMakeCall

NdisCmDispatchIncomingCloseCall

NdisCoCreateVc

NdisCoDeleteVc

NdisFreeMemory

NdisFreeToNPagedLookasideList NdisMCmDispatchIncomingCloseCall

ProtocolClDropPartyComplete

ProtocolCoDeleteVc