Compartilhar via


PROTOCOL_CM_ADD_PARTY função de retorno de chamada (ndis.h)

A função ProtocolCmAddParty é uma função necessária. ProtocolCmAddParty configura os parâmetros específicos da mídia para adicionar uma parte a uma chamada multiponto existente, armazena dados de estado para a nova parte e faz com que a parte seja adicionada à chamada.

Nota Você deve declarar a função usando o tipo PROTOCOL_CM_ADD_PARTY . Para obter mais informações, consulte a seção Exemplos a seguir.
 

Sintaxe

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 o identificador para uma área de contexto alocada pelo gerenciador de chamadas na qual o gerenciador de chamadas mantém seu estado por VC. O gerenciador de chamadas forneceu esse identificador para o NDIS de sua função ProtocolCoCreateVc .

[in, out] CallParameters

Ponteiro para uma estrutura CO_CALL_PARAMETERS que contém os parâmetros, especificados por um cliente orientado à conexão, para a parte que está sendo adicionada a uma chamada existente.

[in] NdisPartyHandle

Especifica um identificador, fornecido pelo NDIS, que identifica exclusivamente uma parte de vários pontos que deve ser adicionada a uma conexão virtual existente. Esse identificador é opaco para o gerenciador de chamadas e reservado para uso da biblioteca NDIS.

[out] CallMgrPartyContext

Especifica, no retorno, um identificador para uma área de contexto fornecida pelo gerenciador de chamadas na qual o gerenciador de chamadas mantém o estado sobre essa parte para a chamada de vários pontos.

Retornar valor

ProtocolCmAddParty retorna o status de suas operações como um dos seguintes:

Código de retorno Descrição
NDIS_STATUS_SUCCESS
Indica que o gerenciador de chamadas alocou com êxito os recursos necessários para manter o estado sobre a parte e adicionou a parte com êxito à chamada.
NDIS_STATUS_PENDING
Indica que o gerenciador de chamadas concluirá a solicitação para adicionar uma parte de forma assíncrona. Quando o gerenciador de chamadas tiver concluído todas as operações para adicionar a parte, ele deverá chamar NdisCmAddPartyComplete para sinalizar ao NDIS que essa operação foi concluída.
NDIS_STATUS_RESOURCES
Indica que o gerenciador de chamadas não pôde alocar e/ou inicializar seus recursos para adicionar uma parte à conexão.
NDIS_STATUS_NOT_SUPPORTED
Indica que o gerenciador de chamadas não pôde adicionar a parte à chamada de vários pontos porque o chamador solicitou recursos inválidos ou indisponíveis nos parâmetros de chamada em CallParameters ou então que o tipo de mídia com suporte por esse gerenciador de chamadas não dá suporte a chamadas de vários pontos.

Comentários

ProtocolCmAddParty executa todas as alocações necessárias de recursos dinâmicos e estruturas que o gerenciador de chamadas exige para manter informações de estado sobre a parte, especificadas por NdisPartyHandle, a serem adicionadas a uma chamada de vários pontos. Esses recursos podem incluir, mas não se limitam a buffers de memória, estruturas de dados, eventos e outros recursos semelhantes. Os gerentes de chamadas também devem inicializar estruturas por parte relevantes nessa função.

Na área de estado por parte alocada pelo gerenciador de chamadas, o gerenciador de chamadas deve armazenar o identificador especificado por NdisPartyHandle para referência em chamadas futuras. Depois que o gerenciador de chamadas tiver alocado e terminar de inicializar sua área de estado por parte, o endereço do buffer de estado deverá ser definido como o identificador CallMgrPartyContext antes de retornar o controle para o NDIS. Para fazer isso, desreferenciar o identificador e armazenar um ponteiro para o buffer de estado como o valor do identificador. Por exemplo:

*CallMgrPartyContext = SomeBuffer;

Os gerentes de chamadas executam qualquer comunicação necessária com seu hardware de rede ou outros atores específicos da mídia, conforme necessário, para adicionar a parte especificada pelos parâmetros de chamada em CallParameters a uma chamada multiponto existente.

Exemplos

Para definir uma função ProtocolCmAddParty , primeiro você deve fornecer uma declaração de função que identifique o tipo de função que você está definindo. O Windows fornece um conjunto de tipos de função para drivers. Declarar uma função usando os tipos de função ajuda a Análise de Código para Drivers, SDV ( Verificador de Driver Estático ) e outras ferramentas de verificação a encontrar erros e é um requisito para gravar drivers para o sistema operacional Windows.

Por exemplo, para definir uma função ProtocolCmAddParty chamada "MyCmAddParty", use o tipo PROTOCOL_CM_ADD_PARTY conforme mostrado neste exemplo de código:

MINIPORT_ADD_DEVICE MyCmAddParty;

Em seguida, implemente sua função da seguinte maneira:

_Use_decl_annotations_
NDIS_STATUS
 MyCmAddParty(
    NDIS_HANDLE  CallMgrVcContext,
    PCO_CALL_PARAMETERS  CallParameters,
    NDIS_HANDLE  NdisPartyHandle,
    PNDIS_HANDLE  CallMgrPartyContext
    )
  {...}

O tipo de função PROTOCOL_CM_ADD_PARTY é definido no arquivo de cabeçalho Ndis.h. Para identificar erros com mais precisão ao executar as ferramentas de análise de código, adicione a anotação Use_decl_annotations à sua definição de função. A anotação Use_decl_annotations garante que as anotações aplicadas ao tipo de função PROTOCOL_CM_ADD_PARTY no arquivo de cabeçalho sejam usadas. Para obter mais informações sobre os requisitos para declarações de função, consulte Declarando funções usando tipos de função de função para drivers NDIS.

Para obter informações sobre Use_decl_annotations, consulte Anotando o comportamento da função.

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte para drivers NDIS 6.0 e NDIS 5.1 (consulte ProtocolCmAddParty (NDIS 5.1)) no Windows Vista. Com suporte para drivers NDIS 5.1 (consulte ProtocolCmAddParty (NDIS 5.1)) no Windows XP.
Plataforma de Destino Windows
Cabeçalho ndis.h (inclua Ndis.h)
IRQL <= DISPATCH_LEVEL

Confira também

NdisClAddParty

ProtocolClAddPartyComplete