PROTOCOL_CM_ADD_PARTY función de devolución de llamada (ndis.h)
La función ProtocolCmAddParty es una función necesaria. ProtocolCmAddParty configura los parámetros específicos de los medios para agregar una entidad a una llamada multipunto existente, almacena los datos de estado de la nueva entidad y hace que la entidad se agregue a la llamada.
Sintaxis
PROTOCOL_CM_ADD_PARTY ProtocolCmAddParty;
NDIS_STATUS ProtocolCmAddParty(
[in] NDIS_HANDLE CallMgrVcContext,
[in, out] PCO_CALL_PARAMETERS CallParameters,
[in] NDIS_HANDLE NdisPartyHandle,
[out] PNDIS_HANDLE CallMgrPartyContext
)
{...}
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. El administrador de llamadas proporcionó este identificador a NDIS desde su función ProtocolCoCreateVc .
[in, out] CallParameters
Puntero a una estructura de CO_CALL_PARAMETERS que contiene los parámetros, especificados por un cliente orientado a la conexión, para la entidad que se agrega a una llamada existente.
[in] NdisPartyHandle
Especifica un identificador, proporcionado por NDIS, que identifica de forma única una entidad de varios puntos que se va a agregar a una conexión virtual existente. Este identificador es opaco para el administrador de llamadas y está reservado para el uso de la biblioteca NDIS.
[out] CallMgrPartyContext
Especifica, a cambio, un identificador para un área de contexto proporcionada por el administrador de llamadas en la que el administrador de llamadas mantiene el estado sobre esta entidad para la llamada de varios puntos.
Valor devuelto
ProtocolCmAddParty devuelve el estado de sus operaciones como una de las siguientes:
Código devuelto | Descripción |
---|---|
|
Indica que el administrador de llamadas asignó correctamente los recursos necesarios para mantener el estado sobre la entidad y agregó correctamente la entidad a la llamada. |
|
Indica que el administrador de llamadas completará la solicitud para agregar una entidad de forma asincrónica. Cuando el administrador de llamadas haya completado todas las operaciones para agregar la entidad, debe llamar a NdisCmAddPartyComplete para indicar a NDIS que esta operación se ha completado. |
|
Indica que el administrador de llamadas no pudo asignar o inicializar sus recursos para agregar una entidad a la conexión. |
|
Indica que el administrador de llamadas no pudo agregar la entidad a la llamada de varios puntos porque el autor de la llamada solicitó características no válidas o no disponibles en los parámetros de llamada en CallParameters o, de lo contrario, que el tipo de medio admitido por este administrador de llamadas no admite llamadas de varios puntos. |
Comentarios
ProtocolCmAddParty realiza las asignaciones necesarias de recursos dinámicos y estructuras que el administrador de llamadas requiere para mantener información de estado sobre la entidad, especificada por NdisPartyHandle, que se va a agregar a una llamada de varios puntos. Estos recursos pueden incluir, entre otros, búferes de memoria, estructuras de datos, eventos y otros recursos similares. Los administradores de llamadas también deben inicializar las estructuras pertinentes por entidad en esta función.
En el área de estado por parte que asigna el administrador de llamadas, el administrador de llamadas debe almacenar el identificador especificado por NdisPartyHandle como referencia en futuras llamadas. Una vez que el administrador de llamadas haya asignado y terminado de inicializar su área de estado por parte, la dirección del búfer de estado se debe establecer como identificador CallMgrPartyContext antes de devolver el control a NDIS. Para ello, desreferencia el identificador y almacena un puntero al búfer de estado como el valor del identificador. Por ejemplo:
*CallMgrPartyContext = SomeBuffer;
Los administradores de llamadas realizan cualquier comunicación necesaria con su hardware de red u otros actores específicos de medios, según sea necesario, para agregar la entidad especificada por los parámetros de llamada en CallParameters a una llamada multipunto existente.
Ejemplos
Para definir una función ProtocolCmAddParty , 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 ProtocolCmAddParty denominada "MyCmAddParty", use el tipo PROTOCOL_CM_ADD_PARTY como se muestra en este ejemplo de código:
MINIPORT_ADD_DEVICE MyCmAddParty;
A continuación, implemente la función de la siguiente manera:
_Use_decl_annotations_
NDIS_STATUS
MyCmAddParty(
NDIS_HANDLE CallMgrVcContext,
PCO_CALL_PARAMETERS CallParameters,
NDIS_HANDLE NdisPartyHandle,
PNDIS_HANDLE CallMgrPartyContext
)
{...}
El tipo de función PROTOCOL_CM_ADD_PARTY 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_ADD_PARTY 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 ProtocolCmAddParty (NDIS 5.1)) en Windows Vista. Compatible con controladores NDIS 5.1 (consulte ProtocolCmAddParty (NDIS 5.1)) en Windows XP. |
Plataforma de destino | Windows |
Encabezado | ndis.h (incluya Ndis.h) |
IRQL | <= DISPATCH_LEVEL |