IReplicaMetadata::GetUnreportedItemsByIndexedFields

Returns a list of items that have the specified set of indexed field values and are not currently marked as active in the metadata store and that are not already marked as deleted.

HRESULT GetUnreportedItemsByFieldValue (
  LPCWSTR * ppcszCustomFieldNames,
  IFieldValue ** ppFieldValues,
  BYTE cCustomFields,
  IItemMetadataEnumerator ** ppItemMetadataEnumerator);

Parameters

  • ppcszCustomFieldNames
    [in, size_is(cCustomFields)] The set of indexed field names that define the items for which to search.
  • ppFieldValues
    [in, size_is(cCustomFields)] The set of indexed field values that define the items for which to search. These values must be in the same order as the names in ppcszCustomFieldNames.
  • cCustomFields
    [in] The number of entries in ppcszCustomFieldNames and in ppFieldValues.
  • ppItemMetadataEnumerator
    [out] Returns the list of items that have the specified set of indexed field values and are not currently marked as active in the metadata store and that are not already marked as deleted.

Return Value

  • S_OK

  • E_POINTER

  • E_OUTOFMEMORY

  • SYNC_E_METADATA_QUERY_REQUIRES_INDEXED_FIELDS if a field in ppcszCustomFieldNames was not specified as an index field when the metadata was initialized.

  • SYNC_E_METADATA_FIELD_INVALID_NAME if a field name in ppcszCustomFieldNames does not exist.

  • SYNC_E_METADATA_FIELD_INVALID_TYPE if a field value in ppFieldValues does not match the type of the corresponding field.

Remarks

If no inactive items with the specified indexed field values exist, an empty enumerator is returned.

This method is part of the delete detection service. An item is marked as active in the metadata store when IReplicaMetadata::SaveItemMetadata is called for a changed item, or when IReplicaMetadata::ReportLiveItemByIndexedFields or IReplicaMetadata::ReportLiveItemByGlobalId is called for an unchanged but still active item. A provider can call IReplicaMetadata::GetUnreportedItems or IReplicaMetadata::GetUnreportedItemsByIndexedFields to get items that exist in the metadata store that are not reported as active. The provider can then mark these items as deleted in the metadata store.

See Also

Reference

IReplicaMetadata Interface