atributo de retorno de chamada

O atributo [callback] declara uma função de retorno de chamada estática que existe no lado do cliente do aplicativo distribuído. As funções de retorno de chamada fornecem uma maneira de o servidor executar o código no cliente.

[callback [ , function-attr-list] ] type-specifier [ptr-declarator] function-name(
        [ [attribute-list] ] type-specifier [declarator]
        , ...);

Parâmetros

function-attr-list

Especifica zero ou mais atributos que se aplicam à função. Os atributos de função válidos são [local]; o atributo de ponteiro [ref], [unique]ou [ptr]; e os atributos de uso [string], [ignore], e [context_handle]. Separe vários atributos com vírgulas.

type-specifier

Especifica uma base_type, struct, união, tipo de enumeração ou identificador de tipo. Uma especificação de armazenamento opcional pode preceder o especificador de tipo.

ptr-declarator

Especifica zero ou mais declaradores de ponteiro. Um declarador de ponteiro é o mesmo que o declarador de ponteiro usado em C; ele é construído a partir do designador * , modificadores como , por exemplo, e o qualificador const.

function-name

Especifica o nome do procedimento remoto.

attribute-list

Especifica zero ou mais atributos direcionais, atributos de campo, atributos de uso e atributos de ponteiro apropriados para o tipo de parâmetro especificado. Separe vários atributos com vírgulas.

declarator

Especifica um declarador C padrão, como identificadores, declaradores de ponteiro e declaradores de matriz. Para obter mais informações, consulte Atributos de matriz e Sized-Pointer, matrizes e matrizes e ponteiros. O identificador parameter-name é opcional.

Comentários

A função [retorno de chamada] é útil quando o servidor deve obter informações do cliente. Se os aplicativos de servidor tiverem suporte no Windows 3. x, o servidor pode fazer uma chamada para um procedimento remoto no Windows 3. x servidor para obter as informações necessárias. A função de retorno de chamada realiza a mesma finalidade e permite que o servidor consulte o cliente para obter informações no contexto da chamada original.

Retornos de chamada são casos especiais de chamadas remotas que são executadas como parte de um único thread. Um retorno de chamada é emitido no contexto de uma chamada remota. Qualquer procedimento remoto definido como parte da mesma interface que a função de retorno de chamada estática pode chamar a função de retorno de chamada.

É importante observar que o uso de [retorno de chamada] não é recomendado na programação de vários threads. Como uma função de programação de thread único, ela não está equipada para dar suporte às demandas de segurança que um ambiente de vários threads fornece.

A função RpcCancelThread não pode ser usada para cancelar uma chamada que pode expedir um retorno de chamada estático. Se uma chamada de procedimento remoto específica nunca resultar em um retorno de chamada, ela poderá ser cancelada. Caso contrário, uma chamada só poderá ser cancelada se puder garantir que um retorno de chamada para ele não tenha sido emitido.

Somente as sequências de protocolo local e orientadas a conexão dão suporte ao atributo de retorno de chamada. O tamanho dos dados [out] para retornos de chamada na sequência de protocolo local é limitado a 150 bytes. Se uma interface RPC usar uma sequência de protocolo sem conexão (datagram), as chamadas para procedimentos com o atributo de retorno de chamada falharão.

Os identificadores não podem ser usados como parâmetros em funções de retorno de chamada. Como os retornos de chamada sempre são executados no contexto de uma chamada, o identificador de associação usado pelo cliente para fazer a chamada ao servidor também é usado como o identificador de associação do servidor para o cliente.

Os retornos de chamada podem aninhar a qualquer profundidade.

Exemplos

[callback] HRESULT DisplayString([in, string] char * p1);

Confira também

Matrizes

Tipos base MIDL

const

context_handle

Enum

Arquivo IDL (definição de interface)

Ignorar

Local

/Osf

Ref

Ptr

String

Struct

union

Único

RpcCancelThread