Compartilhar via


Atributos de matriz

Há uma relação próxima entre matrizes e ponteiros na linguagem C. Quando passado como um parâmetro para uma função, um nome de matriz é tratado como um ponteiro para o primeiro elemento da matriz, conforme mostrado no exemplo a seguir:

/* fragment */
extern void f1(char * p1);

void main(void)
{
    char chArray[MAXSIZE];

    fLocal1(chArray);
}

Em uma chamada local, você pode usar o parâmetro de ponteiro para percorrer a memória e examinar o conteúdo de outros endereços:

/* dump memory (fragment) */
void fLocal1(char * pch1)
{
    int i;

    for (i = 0; i < MAXSIZE; i++)
       printf("%c ", *pch1++);
}

Quando um cliente passa um ponteiro para um procedimento remoto, o stub do cliente transmite o ponteiro e os dados para os quais ele aponta. A menos que o ponteiro seja restrito aos dados correspondentes, toda a memória do cliente deve ser transmitida a cada chamada remota. Ao impor uma digitação forte na definição de interface, MIDL limita o processamento de stub do cliente aos dados que correspondem ao ponteiro especificado.

O tamanho da matriz e o intervalo de elementos de matriz transmitidos para o computador remoto podem ser constantes ou variáveis. Quando esses valores são variáveis e, portanto, determinados em tempo de execução, você deve usar atributos no arquivo IDL para especificar quantos elementos de matriz transmitir. Os atributos MIDL a seguir dão suporte a limites de matriz.

Atributo Descrição Padrão
[ first_is] Índice do primeiro elemento de matriz transmitido. 0
[ last_is] Índice do último elemento de matriz transmitido. -
[ length_is] Número total de elementos de matriz transmitidos. -
[ max_is] Maior valor de índice de matriz válido. -
[ min_is] Menor valor de índice de matriz válido. 0
[ size_is] Número total de elementos de matriz alocados para a matriz. -

 

Observação

O atributo min_is não é implementado no RPC. O índice mínimo de matriz é sempre tratado como zero.