Поделиться через


IFileSyncProviderCallback::OnApplyingChange

Возникает при попытке применений изменения к файлу.

HRESULT OnApplyingChange(
  LPCWSTR pcszNewDirectoryPath,
  LPCWSTR pcszCurrentDirectoryPath,
  const WIN32_FIND_DATAW *pNewFileInfo,
  const WIN32_FIND_DATAW *pCurrentFileInfo,
  DWORD dwChangeType,
  BOOL *pfSkipChange);

Параметры

  • pcszNewDirectoryPath
    [in, string] Новый путь к файлу для изменения. Путь задается относительно корневого каталога. Если значение параметра dwChangeType равно FILESYNC_CHANGE_TYPE_DELETE, то это значение NULL. Если параметр dwChangeType имеет значение FILESYNC_CHANGE_TYPE_RENAME, то это новый путь, который применяется после переименования.
  • pcszCurrentDirectoryPath
    [in, string] Текущий путь к файлу для изменения. Путь задается относительно корневого каталога. Если значение параметра dwChangeType равно FILESYNC_CHANGE_TYPE_CREATE, то это значение NULL. Если параметр dwChangeType имеет значение FILESYNC_CHANGE_TYPE_RENAME, то это текущий путь — состояние до переименования.
  • pNewFileInfo
    [in, unique] Новые данные для изменяемого файла. Если значение параметра dwChangeType равно FILESYNC_CHANGE_TYPE_DELETE, то это значение NULL. Если параметр dwChangeType имеет значение FILESYNC_CHANGE_TYPE_RENAME, то эти данные файла представляют файл в состоянии после переименования.
  • pCurrentFileInfo
    [in, unique] Текущие данные для изменяемого файла. Если значение параметра dwChangeType равно FILESYNC_CHANGE_TYPE_DELETE, то это значение NULL. Если параметр dwChangeType имеет значение FILESYNC_CHANGE_TYPE_RENAME, то эти данные файла представляют файл в текущем состоянии (до переименования).
  • dwChangeType
    [in] Тип применяемого изменения. Это значение из перечисления FILESYNC_CHANGE_TYPE.
  • pfSkipChange
    [out] Показывает, должно ли это изменение быть пропущено.

Возвращаемое значение

  • S_OK

  • Коды ошибок, определяемые приложением

Замечания

Это событие предоставляет возможность динамически пропускать в приложении изменения во время сеанса синхронизации. Чтобы пропустить изменение, присвойте свойству pfSkipChange значение TRUE. Пропущенное изменение не будет применяться к реплике назначения. Событие IFileSyncProviderCallback::OnChangeSkipped будет вызываться с параметром dwReason, имеющим значение FILESYNC_SKIP_REASON_APPLICATION_REQUEST, применительно к каждому пропущенному изменению.

Попытка внесения некоторых изменений предпринимается в течение сеанса несколько раз. Это событие вызывается при каждой попытке. Предположим, предпринята попытка удалить папку. Однако поскольку папка содержит файл, эта попытка оканчивается неудачей. Попытки выполнить операцию удаления этой папки продолжаются в течение сеанса до тех пор, пока операция удаления не завершится успешно или будет обнаружено, что операция удаления не может быть выполнена в течение этого сеанса, и поэтому пропускается.

Это событие вызывается только в том случае, если изменение затрагивает данные файла в реплике назначения, и не вызывается, если изменение затрагивает только метаданные для файла. Например, если обнаружен конфликт операций обновления и победителем выбран файл в системе назначения, то в системе назначения изменения не применяются и это событие вызвано не будет. Аналогично, в ходе передачи отметки полного удаления от источника к назначению происходит только обновление метаданных, а в файловой системе назначения не происходят изменения. В таком случае это событие не активируется.

Если OnApplyingChange вызывает ошибку, то платформа Sync Framework прекращает обработку текущего пакета изменений и возвращает код ошибки из метода ProcessChangeBatch интерфейса IFileSyncProvider.

См. также

Справочник

Интерфейс IFileSyncProviderCallback
Перечисление FILESYNC_CHANGE_TYPE