다음을 통해 공유


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로 설정합니다. 건너뛴 변경 내용은 대상 복제본에 적용되지 않습니다. 건너뛴 각 변경 내용에 대해 dwReason이 FILESYNC_SKIP_REASON_APPLICATION_REQUEST로 설정되어 IFileSyncProviderCallback::OnChangeSkipped 이벤트가 발생합니다.

일부 변경 내용은 세션을 진행하는 동안 두 번 이상 적용이 시도됩니다. 각 시도에서 이 이벤트가 발생합니다. 예를 들어 폴더 삭제 작업을 시도할 경우 폴더에 기존 파일이 있으므로 해당 시도가 실패합니다. 이 폴더 삭제 작업은 삭제 작업이 성공하거나 이 세션을 진행하는 동안 삭제 작업이 발생할 수 없음이 확인되어 해당 작업을 건너뛸 때까지 전체 세션에서 계속 시도됩니다.

이 이벤트는 변경 내용이 파일에 대한 메타데이터에만 영향을 줄 때가 아니라 대상 복제본의 파일 데이터에 영향을 줄 때만 발생합니다. 예를 들어 업데이트-업데이트 충돌이 검색되고 대상 시스템의 파일이 적용되는 내용으로 선택되면 대상에 어떠한 변경 내용도 적용되지 않으며 이 이벤트가 발생하지 않습니다. 마찬가지로 원본에서 대상으로 삭제 표식을 전달하면 대상 파일 시스템에 변경 내용이 적용되지 않고 메타데이터 업데이트 내용만 적용됩니다. 이 경우에는 이 이벤트가 발생하지 않습니다.

OnApplyingChange에서 오류를 반환할 경우 Sync Framework에서는 현재 일괄 변경 내용 처리를 중지하고 IFileSyncProviderProcessChangeBatch 메서드에서 오류 코드를 반환합니다.

참고 항목

참조

IFileSyncProviderCallback 인터페이스
FILESYNC_CHANGE_TYPE 열거형