PROTOCOL_CL_ADD_PARTY_COMPLETE función de devolución de llamada (ndis.h)
La función ProtocolClAddPartyComplete es necesaria para los clientes NDIS orientados a la conexión que configuran conexiones multipunto. Estos clientes deben tener funciones ProtocolClAddPartyComplete para completar las operaciones asincrónicas que inician con NdisClAddParty. De lo contrario, la función ProtocolClAddPartyComplete registrada de un controlador de protocolo puede simplemente devolver el control.
Sintaxis
PROTOCOL_CL_ADD_PARTY_COMPLETE ProtocolClAddPartyComplete;
void ProtocolClAddPartyComplete(
[in] NDIS_STATUS Status,
[in] NDIS_HANDLE ProtocolPartyContext,
[in] NDIS_HANDLE NdisPartyHandle,
[in] PCO_CALL_PARAMETERS CallParameters
)
{...}
Parámetros
[in] Status
Especifica el estado final de la operación de complemento iniciada por el cliente, que puede ser una de las siguientes:
NDIS_STATUS_SUCCESS
La entidad especificada se agregó en la credencial verificable multipunto activa del cliente.
NDIS_STATUS_RESOURCES
NDIS no pudo asignar recursos suficientes para realizar un seguimiento de la nueva entidad.
NDIS_STATUS_FAILURE
El cliente pasó un NdisVcHandle no válido a NdisClAddParty.
NDIS_STATUS_XXX
La función ProtocolCmAddParty del administrador de llamadas devolvió un valor determinado por CM para indicar por qué no pudo agregar la entidad a la credencial verificable.
[in] ProtocolPartyContext
Especifica el identificador proporcionado por el cliente que se pasó originalmente a NdisClAddParty.
[in] NdisPartyHandle
Si Status es NDIS_STATUS_SUCCESS, este identificador proporcionado por NDIS representa la asociación entre el administrador de llamadas y el cliente con respecto a esta entidad. De lo contrario, se produjo un error en el intento de agregar una entidad y el cliente debe considerar este parámetro un identificador no válido.
[in] CallParameters
Puntero a una estructura de tipo CO_CALL_PARAMETERS, configurada originalmente por el cliente para su llamada a NdisClAddParty , pero posiblemente modificada posteriormente por el administrador de llamadas.
Valor devuelto
None
Observaciones
Una llamada a ProtocolClAddPartyComplete indica la finalización de la operación asincrónica iniciada cuando el cliente llamó a NdisClAddParty. Si el estado de entrada se establece en algo distinto de NDIS_STATUS_SUCCESS, ProtocolClAddPartyComplete puede liberar o reutilizar los búferes asignados por el cliente en ProtocolPartyContext y en CallParameters .
Si el intento de agregar una entidad se realizó correctamente, ProtocolClAddPartyComplete debe guardar la entrada NdisPartyHandle para las llamadas posteriores a las funciones de biblioteca NDIS relativas a esta entidad en el área ProtocolPartyContext del cliente. Por ejemplo, el cliente debe pasar este identificador en una llamada posterior a NdisClDropParty finalmente a menos que la entidad remota que represente cierre primero su conexión.
El cliente asignó e inicializó originalmente la estructura en CallParameters , que pasó este puntero a
NdisClAddParty. Sin embargo, es posible que el administrador de llamadas haya modificado los valores proporcionados por el cliente para reflejar los resultados de la negociación de cm con la red o con un par de señalización mientras procesa la solicitud de complemento del cliente. Para determinar si el administrador de llamadas realizó modificaciones, ProtocolClAddPartyComplete puede comprobar el miembro Flags de esta estructura para determinar si se ha establecido CALL_PARAMETERS_CHANGED. Si es así, ProtocolClAddPartyComplete debe actualizar el estado por parte que el cliente mantiene para esta llamada en ProtocolPartyContext a menos que encuentre las modificaciones de cm inaceptables. El protocolo de señalización determinado determina lo que el cliente puede hacer en este caso. Normalmente, un cliente llama a NdisClDropParty si encuentra los parámetros de llamada modificados por CM inaceptables.
Según el protocolo de señalización del administrador de llamadas, los parámetros de tráfico de CallParameters pueden ser idénticos para todas las partes en cualquier conexión multipunto determinada. Es decir, como el cliente de este tipo de administrador de llamadas agrega partes en una conexión multipunto que el cliente configuró originalmente con NdisClMakeCall, solo puede proporcionar la dirección de destino de cada entidad y dejar los parámetros de tráfico como se configuró originalmente para la credencial verificable multipunto cada vez que llama a NdisClAddParty.
Ejemplos
Para definir una función ProtocolClAddPartyComplete , 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 ProtocolClAddPartyComplete denominada "MyClAddPartyComplete", use el tipo de PROTOCOL_CL_ADD_PARTY_COMPLETE como se muestra en este ejemplo de código:
PROTOCOL_CL_ADD_PARTY_COMPLETE MyClAddPartyComplete;
A continuación, implemente la función de la siguiente manera:
_Use_decl_annotations_
VOID
MyClAddPartyComplete(
NDIS_STATUS Status,
NDIS_HANDLE ProtocolPartyContext,
NDIS_HANDLE NdisPartyHandle,
PCO_CALL_PARAMETERS CallParameters
)
{...}
El tipo de función PROTOCOL_CL_ADD_PARTY_COMPLETE 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_ADD_PARTY_COMPLETE en el archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, consulte 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, consulte Anotación del comportamiento de la función.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Compatible con los controladores NDIS 6.0 y NDIS 5.1 (consulte ProtocolClAddPartyComplete (NDIS 5.1)) en Windows Vista. Compatible con los controladores NDIS 5.1 (consulte ProtocolClAddPartyComplete (NDIS 5.1)) en Windows XP. |
Plataforma de destino | Windows |
Encabezado | ndis.h (incluya Ndis.h) |
IRQL | <= DISPATCH_LEVEL |