ISyncFilterInfo::Serialize
Serializa os dados de filtro para uma matriz de bytes.
HRESULT Serialize(
BYTE *pbBuffer,
DWORD *pcbBuffer);
Parâmetros
- pbBuffer
[in, out, size_is(*pcbBuffer)] Retorna as informações de filtro serializadas. Define esse valor como NULL para solicitar o tamanho necessário do buffer.
- pcbBuffer
[in, out] Especifica o número de bytes em pbBuffer. Retorna o número de bytes necessários para serializar o filtro quando pcbBuffer for muito pequeno, ou o número de bytes gravados.
Valor de retorno
S_OK.
E_INVALIDARG.
0x800700EA (HRESULT_FROM_WIN32(ERROR_MORE_DATA)) quando pbBuffer for NULL ou pcbBuffer for muito pequeno. Nesse caso, o número de bytes necessários para serializar o filtro é retornado em pcbBuffer.
Formato de serialização
As informações de filtro serializadas contidas em pbBuffer são armazenadas em forma compacta, sem preenchimento, em ordem de byte big-endian. As informações de filtro serializadas contêm os elementos abaixo, na ordem a seguir.
Uma seção de cabeçalho. A seção de cabeçalho contém os elementos a seguir.
Tipo de dados Comprimento em bytes Descrição ULONGLONG
8
A versão do formato de serialização das informações de filtro. Esse valor será 2 quando o filtro for um filtro de itens ou um filtro de unidades de alteração. Esse valor será 3 quando o filtro for um filtro personalizado ou um filtro combinado.
ULONG
4
Os sinalizadores associados às informações de filtro. Contém valores do conjunto de sinalizadores SYNC_FILTER_INFO_FLAG.
Quando os sinalizadores incluírem SYNC_FILTER_INFO_FLAG_ITEM_LIST ou SYNC_FILTER_INFO_FLAG_CHANGE_UNIT_LIST, os dados de filtro a seguir serão serializados.
Tipo de dados Comprimento em bytes Descrição BOOL
1
Indica se as IDs de unidade de alteração contidas nas informações de filtro têm comprimento fixo ou variável. Esse valor será 0 se as IDs tiverem comprimento fixo; ou 1 se tiverem comprimento variável.
USHORT
2
O comprimento, em bytes, das IDs de unidade de alteração de comprimento fixo, ou o comprimento máximo das IDs de comprimento variável.
ULONG
4
O número de IDs de unidade de alteração contidas nas informações de filtro.
As informações de filtro contêm uma lista de IDs de unidade de alteração com o comprimento da lista igual ao valor contido no ULONG anterior.
Cada ID de unidade de alteração contém os elementos a seguir.
Quando as IDs de unidade de alteração têm comprimento fixo.
Tipo de dados Comprimento em bytes Descrição Sequência de bytes
O comprimento especificado no formato da ID de unidade de alteração.
A ID da unidade de alteração de comprimento fixo.
Ou, quando as IDs de unidade de alteração tiverem comprimento variável.
Tipo de dados Comprimento em bytes Descrição USHORT
2
O comprimento, em bytes, da ID de comprimento variável. Esse comprimento inclui os dois bytes para o USHORT que contém o comprimento, mais os bytes que contêm a ID real.
Sequência de bytes
O comprimento especificado no USHORT anterior.
A ID da unidade de alteração de comprimento variável.
Quando os sinalizadores incluírem SYNC_FILTER_INFO_FLAG_CUSTOM, os dados de filtro a seguir serão serializados.
Tipo de dados Comprimento em bytes Descrição Sequência de bytes
Determinado pelo filtro personalizado.
Os dados do filtro serializados gravados no fluxo pelo método ISyncFilter::Serialize.
Quando os sinalizadores incluírem SYNC_FILTER_INFO_COMBINED, os dados de filtro a seguir serão serializados.
Tipo de dados Comprimento em bytes Descrição ULONG
4
O comprimento, em bytes, do primeiro objeto de informações de filtro na combinação.
Sequência de bytes
O comprimento especificado no ULONG anterior.
As informações de filtro serializado do primeiro filtro, no formato especificado por este documento.
ULONG
4
O comprimento, em bytes, do segundo objeto de informações de filtro na combinação.
Sequência de bytes
O comprimento especificado no ULONG anterior.
As informações de filtro serializado do segundo filtro, no formato especificado por este documento.