atributo represent_as

O atributo ACF [represent_as] associa um tipo local nomeado no tipo de repr de linguagem de destino a um tipo de transferência nomeado que é transferido entre o cliente e o servidor.

typedef [represent_as(repr-type) [[ , type-attribute-list ]] ] named-type; 
void __RPC_USER named-type_from_local (
  repr-type __RPC_FAR * ,
  named-type __RPC_FAR * __RPC_FAR * );
void __RPC_USER named-type_to_local (
  named-type __RPC_FAR * ,
  repr-type __RPC_FAR * ); void __RPC_USER named-type _free_inst ( named-type __RPC_FAR * ); void __RPC_USER named-type _free_local ( repr-type __RPC_FAR * );

Parâmetros

tipo nomeado

Especifica o tipo de dados de transferência nomeado que é transferido entre o cliente e o servidor.

type-attribute-list

Especifica um ou mais atributos que se aplicam ao tipo. Separe vários atributos com vírgulas.

tipo de repr

Especifica o tipo local representado no idioma de destino apresentado aos aplicativos cliente e servidor.

Comentários

Ao usar [represent_as], você deve fornecer rotinas que se convertem entre os tipos locais e de transferência e essa memória gratuita usada para armazenar os dados convertidos. O atributo [represent_as] instrui os stubs a chamar as rotinas de conversão fornecidas pelo usuário.

O tipo nomeado transferido deve ser resolvido para um tipo base MIDL, tipo predefinido ou para um identificador de tipo. Para obter mais informações, consulte MIDL Base Types.

Você deve fornecer as seguintes rotinas:

Nome de rotina Descrição
named_type**_from_local** Converte dados do tipo local para o tipo de rede. A rotina aloca memória para o tipo de dados de rede, incluindo memória para quaisquer dados referenciados por ponteiros no tipo de dados de rede.
named_type**_to_local** Converte dados do tipo de rede para o tipo local. A rotina é responsável por alocar memória para dados referenciados por ponteiros no tipo local. O RPC aloca memória para o próprio tipo local.
named_type**_free_local** Libera a memória alocada para dados referenciados por ponteiros no tipo local. O RPC libera memória para o próprio tipo
named_type**_free_inst** Libera a memória alocada para os dados referenciados por ponteiros no tipo de rede e para o próprio tipo de rede.

 

O stub do cliente chama named-type**_from_local** para alocar espaço para o tipo transmitido e traduzir os dados do tipo local para o tipo de rede. O stub do servidor aloca espaço para o tipo de dados original e chama o tipo nomeado**_to_local** para traduzir os dados do tipo de rede para o tipo local.

Após o retorno do código do aplicativo, os stubs do cliente e do servidor chamam o tipo nomeado**_free_inst** para desalocar o armazenamento para o tipo de rede. O stub do cliente chama named-type**_free_local** para desalocar o armazenamento retornado pela rotina.

Os seguintes tipos não podem ter um atributo [represent_as] :

  • Matrizes de variação de conformidade, variáveis ou de acordo
  • Estruturas nas quais o último membro é uma matriz conformante (uma estrutura de conformidade)
  • Ponteiros ou tipos que contêm um ponteiro
  • Pipes ou tipos que contêm pipes
  • Tipos que são usados como o tipo base para um pipe
  • Tipos predefinidos handle_t, void
  • Tipos que têm o atributo [handle]

Exemplos

//these data types defined in .IDL or elsewhere
typedef struct  _lbox 
{ 
    long         data; 
    struct _lbox *next; 
} lbox; 
typedef [ref] lbox *PBOX_LOC; 
typedef long LONG4[4]; 
 
//in .ACF file :
interface iface
{
    typedef  [ represent_as(PBOX_LOC) ]  LONG4; 
}

Confira também

Arquivo de Configuração de Aplicativo (ACF)

Matrizes

Tipos base MIDL

handle_t

Typedef

Vazio