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 compilador MIDL gera até três funções para cada tipo ao qual o atributo [ codifica] ou [ decodifica] é aplicado. Por exemplo, para um tipo definido pelo usuário chamado MyType, o compilador gera código para as funções MyType_Encode, MyType_Decode e MyType_AlignSize. Para essas funções, o compilador grava protótipos em Stub.h e código-fonte em Stub_c.c. Geralmente, você pode codificar um objeto MyType com MyType_Encode e decodificar um objeto do buffer usando MyType_Decode. MyType_AlignSize é usado se você precisar saber o tamanho do buffer de empacotamento antes de alocá-lo.
A seguinte função de codificação é gerada pelo compilador MIDL. Esta função serializa os dados para o objeto apontado por pObject, e o buffer é obtido de acordo com o método especificado no identificador. Depois de gravar os dados serializados no buffer, você controla o buffer. Observe que o identificador herda o status das chamadas anteriores e os buffers devem ser alinhados em 8.
Para um identificador implícito:
void MyType_Encode (MyType __RPC_FAR * pObject);
Para um identificador explícito:
void MyType_Encode (handle_t Handle, MyType __RPC_FAR * pObject);
A função a seguir desserializa os dados do armazenamento do aplicativo para o objeto apontado por pObject. Você fornece um buffer empacotado de acordo com o método especificado na alça. Observe que o identificador pode herdar o status das chamadas anteriores e os buffers devem ser alinhados em 8.
Para um identificador implícito:
void MyType_Decode (MyType __RPC_FAR * pObject);
Para um identificador explícito:
void MyType_Decode (handle_t Handle, MyType __RPC_FAR * pObject);
A função a seguir retorna um tamanho, em bytes, que inclui a instância de tipo mais quaisquer bytes de preenchimento necessários para alinhar os dados. Isso permite serializar um conjunto de instâncias do mesmo tipo ou de tipos diferentes em um buffer, garantindo que os dados de cada objeto estejam alinhados adequadamente. MyType_AlignSize pressupõe que a instância apontada por pObject será empacotada em um buffer começando no deslocamento alinhado em 8.
Para um identificador implícito:
size_t MyType_AlignSize (MyType __RPC_FAR * pObject);
Para um identificador explícito:
size_t MyType_AlignSize (handle_t Handle, MyType __RPC_FAR * pObject);
Observe que ambos os procedimentos remotos com identificadores de vinculação implícita e tipos serializados com identificadores de serialização implícita usam a mesma variável de identificador global. Portanto, é aconselhável não misturar serialização de tipo e procedimentos remotos em uma interface com identificadores implícitos. Para obter detalhes, consulte identificadores implícitos versus explícitos.