ISyncFilterInfo::Serialize
Serializa los datos del filtro en una matriz de bytes.
HRESULT Serialize(
BYTE *pbBuffer,
DWORD *pcbBuffer);
Parámetros
- pbBuffer
[in, out, size_is(*pcbBuffer)] Devuelve la información de filtro serializada. Establezca este valor en NULL para solicitar el tamaño necesario del búfer.
- pcbBuffer
[in, out] Especifica el número de bytes de pbBuffer. Devuelve el número de bytes necesarios para serializar el filtro si pcbBuffer es demasiado pequeño, o bien, el número de bytes escritos.
Valor devuelto
S_OK
E_INVALIDARG
0x800700EA (HRESULT_FROM_WIN32(ERROR_MORE_DATA)) si pbBuffer es NULL o pcbBuffer es demasiado pequeño. En este caso, el número de bytes necesarios para serializar el filtro se devuelve en pcbBuffer.
Formato de serialización
La información de filtro serializada incluida en pbBuffer se almacena en un formato compacto, sin margen y en orden de byte big-endian. La información de filtro serializada contiene los elementos siguientes, en el orden siguiente.
Una sección de encabezado. La sección de encabezado contiene los elementos siguientes.
Tipo de datos Longitud en bytes Descripción ULONGLONG
8
Versión del formato de serialización de la información del filtro. Este valor es 2 si el filtro es un filtro de elementos o un filtro de unidades de cambio. Este valor es 3 si el filtro es un filtro personalizado o un filtro combinado.
ULONG
4
Marcas asociadas a la información del filtro. Contiene valores del conjunto de marcas SYNC_FILTER_INFO_FLAG.
Si las marcas incluyen SYNC_FILTER_INFO_FLAG_ITEM_LIST o SYNC_FILTER_INFO_FLAG_CHANGE_UNIT_LIST, se serializan los datos de filtro siguientes.
Tipo de datos Longitud en bytes Descripción BOOL
1
Indica si los identificadores de la unidad de cambio incluidos en la información del filtro son de longitud fija o de longitud variable. Este valor es 0 si los identificadores son de longitud fija ó 1 si son de longitud variable.
USHORT
2
Longitud, en bytes, de los identificadores de la unidad de cambio en el caso de los identificadores de longitud fija o longitud máxima del identificador en el caso de los identificadores de longitud variable.
ULONG
4
Número de identificadores de unidad de cambio incluidos en la información del filtro.
La información del filtro contiene una lista de identificadores de unidad de cambio cuya longitud es igual al valor incluido en el elemento ULONG anterior.
Cada identificador de unidad de cambio contiene los elementos siguientes.
Si los identificadores de unidad de cambio son de longitud fija.
Tipo de datos Longitud en bytes Descripción Secuencia de bytes
Longitud especificada en el formato del identificador de unidad de cambio.
Identificador de unidad de cambio de longitud fija.
O bien, si los identificadores de unidad de cambio son de longitud variable.
Tipo de datos Longitud en bytes Descripción USHORT
2
Longitud, en bytes, del identificador de longitud variable. Esta longitud incluye los dos bytes del elemento USHORT que contiene la longitud, además de los bytes que contienen el identificador real.
Secuencia de bytes
Longitud especificada en el elemento USHORT anterior.
Identificador de unidad de cambio de longitud variable.
Si las marcas incluyen SYNC_FILTER_INFO_FLAG_CUSTOM, se serializan los datos de filtro siguientes.
Tipo de datos Longitud en bytes Descripción Secuencia de bytes
Determinada por el filtro personalizado.
Datos de filtro serializados que el método ISyncFilter::Serialize escribió en la secuencia.
Si las marcas incluyen SYNC_FILTER_INFO_COMBINED, se serializan los datos de filtro siguientes.
Tipo de datos Longitud en bytes Descripción ULONG
4
Longitud en bytes del primer objeto de información de filtro en la combinación.
Secuencia de bytes
Longitud especificada en el elemento ULONG anterior.
Información de filtro serializada del primer filtro, en el formato especificado por este documento.
ULONG
4
Longitud en bytes del segundo objeto de información de filtro en la combinación.
Secuencia de bytes
Longitud especificada en el elemento ULONG anterior.
Información de filtro serializada del segundo filtro, en el formato especificado por este documento.