Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Os ponteiros de referência são os ponteiros mais simples e requerem a menor quantidade de processamento pelo stub do cliente. Quando um programa cliente passa um ponteiro de referência para um procedimento remoto, o ponteiro de referência sempre contém o endereço de um bloco de memória válido. Ele ainda estará apontando para o mesmo bloco de memória quando o procedimento remoto for concluído. Esses ponteiros são usados principalmente para implementar semântica de referência e para permitir parâmetros [out] em C.
No exemplo a seguir, o valor do ponteiro não muda durante a chamada, embora o conteúdo dos dados no endereço indicado pelo ponteiro possa mudar.
Um ponteiro de referência tem as seguintes características:
- Ele sempre aponta para um armazenamento válido e nunca tem o valor NULL.
- Ele nunca muda durante uma chamada e sempre aponta para o mesmo armazenamento antes e depois da chamada.
- Os dados retornados do procedimento remoto são gravados no armazenamento existente.
- O armazenamento apontado por um ponteiro de referência não pode ser acessado por qualquer outro ponteiro ou qualquer outro nome na função.
Use o atributo [ref] para especificar ponteiros de referência em definições de interface, conforme mostrado no exemplo a seguir.
/* IDL file */
[
uuid(ba209999-0c6c-11d2-97cf-00c04f8eea45),
version(1.0)
]
interface RefPtrInterface
{
void RemoteFn([in, out, ref] char *pChar);
}
Este exemplo define o parâmetro pChar como um ponteiro para um único caractere, não uma matriz de caracteres. É um parâmetro [out] e um ponteiro de referência que aponta para a memória que a rotina do servidor RemoteFn preencherá com dados.