Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O atributo [ wire_marshal] é um atributo do tipo IDL semelhante em sintaxe a [ transmit_as], mas fornecendo uma maneira mais eficiente de organizar dados em uma rede.
Use o atributo [wire_marshal] para especificar um tipo de dados que será transmitido no lugar do tipo de dados específico do aplicativo. Cada tipo específico de aplicação tem um tipo transmissível correspondente que define a representação de fio (a representação usada na rede). O tipo específico do aplicativo não precisa ser transmissível, mas deve ser um tipo que o MIDL reconheça. Para organizar um tipo desconhecido para MIDL, use o atributo ACF [ user_marshal].
Seu tipo específico de aplicativo pode ser um tipo simples, composto ou de ponteiro. A principal restrição é que a instância de tipo deve ter um tamanho de memória fixo e bem definido. Se o tamanho da instância de tipo precisar ser alterado, use um campo de ponteiro em vez de uma matriz conforme. Como alternativa, você pode definir um ponteiro para o tipo mutável.
Você deve fornecer as rotinas para dimensionar, empacotar e desempacotar os dados, bem como liberar a memória associada. A tabela a seguir descreve os quatro nomes de rotina fornecidos pelo usuário. O tipo <> é o userm-type especificado na definição de tipo [wire_marshal].
| Rotina | Descrição |
|---|---|
| <tipo>_UserSize | Dimensiona o buffer de dados RPC antes de empacotar no lado do cliente ou servidor. |
| <tipo>_UserMarshal | Marshals os dados no lado do cliente ou servidor. |
| <tipo>_UserUnmarshal | Desmarshals os dados no lado do cliente ou servidor. |
| <tipo>_UserFree | Libera os dados no lado do servidor. |
Essas rotinas fornecidas pelo programador são fornecidas pelo aplicativo cliente ou servidor com base nos atributos direcionais.
Se o parâmetro for apenas [ in], o cliente transmite para o servidor. O cliente precisa do tipo <>_UserSize e <tipo>_UserMarshal funções. O servidor precisa do tipo <>_UserUnmarshale <tipo>_UserFree funções.
Para um parâmetro [ out]-only, o servidor transmite para o cliente. O servidor precisa do tipo <>_UserSize e <tipo>_UserMarshal funções, enquanto o cliente precisa do tipo <>_UserMarshal função.
Tópicos relacionados