IOfflineFilesCache::Synchronize 메서드(cscobj.h)

오프라인 파일 캐시의 파일 및 디렉터리를 해당 네트워크 공유 폴더의 해당 복사본과 동기화합니다.

구문

HRESULT Synchronize(
  [in] HWND                             hwndParent,
  [in] LPCWSTR                          *rgpszPaths,
  [in] ULONG                            cPaths,
  [in] BOOL                             bAsync,
  [in] DWORD                            dwSyncControl,
  [in] IOfflineFilesSyncConflictHandler *pISyncConflictHandler,
  [in] IOfflineFilesSyncProgress        *pIProgress,
  [in] GUID                             *pSyncId
);

매개 변수

[in] hwndParent

표시되는 모든 사용자 인터페이스 요소에 대한 부모 창을 식별합니다. OFFLINEFILES_SYNC_CONTROL_FLAG_INTERACTIVE 플래그가 dwSyncControl 매개 변수에 설정되지 않은 경우 이 매개 변수는 무시됩니다.

[in] rgpszPaths

동기화할 파일 또는 디렉터리의 정규화된 UNC 경로에 대한 포인터 배열입니다.

[in] cPaths

rgpszPaths 배열의 경로 수입니다.

[in] bAsync

작업이 비동기적으로 수행되는지를 나타냅니다. 이 매개 변수가 TRUE이면 작업이 시스템 스레드 풀의 별도 스레드에 배치되고 함수는 즉시 반환됩니다. 이 매개 변수가 FALSE이면 작업이 완료되면 함수가 반환됩니다.

[in] dwSyncControl

전체 동기화 작업의 동작을 제어하는 플래그입니다. 동기화 방향(인, 아웃), LNK 대상 고정 및 새 파일 고정과 같은 동작은 이러한 플래그를 통해 제어됩니다. 다음 목록에서는 각 플래그의 의미를 설명합니다.

OFFLINEFILES_SYNC_CONTROL_FLAG_FILLSPARSE(0x00000001)

캐시에 스파스 파일을 채웁니다. 이 플래그를 설정하면 캐시의 로컬 복사본이 열거됩니다. 발견된 드물게 캐시된 파일은 더 이상 스파스가 없도록 채워집니다. 스파스 캐시된 파일은 오프라인으로 사용할 수 없습니다. 자세한 내용은 IOfflineFilesFileItem::IsSparse 메서드를 참조하세요.

OFFLINEFILES_SYNC_CONTROL_FLAG_SYNCIN(0x00000002)

서버의 원격 변경 내용을 로컬 캐시로 동기화합니다. 이 플래그를 설정하면 OFFLINEFILES_SYNC_CONTROL_FLAG_FILLSPARSE 플래그도 자동으로 설정됩니다.

OFFLINEFILES_SYNC_CONTROL_FLAG_SYNCOUT(0x00000004)

로컬 캐시에서 서버로 로컬 변경 내용을 동기화합니다.

OFFLINEFILES_SYNC_CONTROL_FLAG_PINNEWFILES(0x00000008)

서버에 있는 새 파일을 고정된 디렉터리 내에 고정합니다. OFFLINEFILES_SYNC_CONTROL_FLAG_SYNCIN 플래그가 설정되지 않은 경우 이 플래그는 무시됩니다.

OFFLINEFILES_SYNC_CONTROL_PINLINKTARGETS(0x00000010)

OFFLINEFILES_SYNC_CONTROL_FLAG_PINNEWFILES 플래그가 설정된 경우에만 적용됩니다. 일반적으로 셸 링크(LNK 형식)가 고정되면 대상이 자동으로 고정되지 않습니다. 이 플래그가 설정되면 LNK 파일을 고정하면 대상이 파일인 경우 대상이 자동으로 고정됩니다. 대상이 디렉터리인 경우 대상이 자동으로 고정되지 않습니다.

OFFLINEFILES_SYNC_CONTROL_FLAG_PINFORUSER(0x00000020)

OFFLINEFILES_SYNC_CONTROL_FLAG_PINNEWFILES 플래그가 설정된 경우에만 적용됩니다. 호출하는 사용자의 항목을 고정합니다. 일반적으로 이 함수의 호출자에 대해 설정된 플래그입니다. 오프라인 파일은 고정의 진정한 사용자별 개념을 지원하지 않는다는 점에 유의해야 합니다. 항목이 사용자에 대해 고정되면 해당 컴퓨터의 모든 사용자에 대해 고정됩니다. 그러나 고정된 파일에 액세스하는 기능은 온라인 상태에서 계산된 파일에 대한 사용자의 액세스 권한에 따라 달라집니다.

OFFLINEFILES_SYNC_CONTROL_FLAG_PINFORUSER_POLICY(0x00000040)

OFFLINEFILES_SYNC_CONTROL_FLAG_PINNEWFILES 플래그가 설정된 경우에만 적용됩니다. 사용자별 정책에 대한 항목을 고정합니다. 이는 오프라인 파일 사용자 인터페이스를 통해 사용자가 이 플래그를 수정할 수 없다는 점에서 OFFLINEFILES_SYNC_CONTROL_FLAG_PINFORUSER 플래그와 다릅니다. 내부적으로 오프라인 파일은 항목이 그룹 정책 확장에 의해 고정될 때 이 플래그를 설정합니다.

OFFLINEFILES_SYNC_CONTROL_FLAG_PINFORALL(0x00000080)

OFFLINEFILES_SYNC_CONTROL_FLAG_PINNEWFILES 플래그가 설정된 경우에만 적용됩니다. 로컬 컴퓨터의 모든 사용자에 대한 항목을 고정합니다. 고정된 상태는 모든 사용자에게 적용되지만 고정된 파일에 액세스하는 기능은 온라인 상태에서 계산된 해당 파일에 대한 사용자의 액세스 권한에 따라 달라집니다.

OFFLINEFILES_SYNC_CONTROL_FLAG_PINFORREDIR(0x00000100)

OFFLINEFILES_SYNC_CONTROL_FLAG_PINNEWFILES 플래그가 설정된 경우에만 적용됩니다. 호출 사용자에 대한 폴더 리디렉션을 위해 항목을 고정합니다. Windows 폴더 리디렉션은 리디렉션된 폴더를 고정할 때 이 플래그를 설정합니다.

OFFLINEFILES_SYNC_CONTROL_FLAG_LOWPRIORITY(0x00000200)

이 플래그는 나중에 사용하도록 예약되어 있습니다.

OFFLINEFILES_SYNC_CONTROL_FLAG_ASYNCPROGRESS(0x00000400)

진행률이 실제 작업과 함께 진행률 인터페이스에 비동기적으로 보고됩니다. 동작에 대한 자세한 내용은 "비동기 진행 알림" 섹션을 참조하세요. 이 플래그를 설정하지 않으면 진행률이 각 작업과 동기적으로 보고됩니다.

OFFLINEFILES_SYNC_CONTROL_FLAG_INTERACTIVE(0x00000800)

작업에서 필요에 따라 사용자 인터페이스 요소를 표시할 수 있는 경우 이 플래그를 설정합니다. 예를 들어 시스템의 자격 증명 요청 대화 상자가 있습니다. 이 플래그를 설정하면 hwndParent의 값이 표시되는 모든 사용자 인터페이스 요소의 부모로 사용됩니다.

OFFLINEFILES_SYNC_CONTROL_FLAG_CONSOLE(0x00001000)

OFFLINEFILES_SYNC_CONTROL_FLAG_INTERACTIVE 플래그가 설정되지 않은 경우 이 플래그는 무시됩니다. OFFLINEFILES_SYNC_CONTROL_FLAG_INTERACTIVE 플래그가 설정된 경우 이 플래그는 생성된 모든 UI가 작업을 호출하는 프로세스와 연결된 콘솔 창으로 이동되어야 했음을 나타냅니다.

OFFLINEFILES_SYNC_CONTROL_FLAG_SKIPSUSPENDEDDIRS(0x00002000)

동기화 작업이 일시 중단된 디렉터리 트리를 동기화하지 않도록 하려면 이 플래그를 설정합니다. 동기화 작업이 사용자가 대화형으로 의도적으로 호출하지 않은 경우 이 플래그를 설정하는 것이 좋습니다.

OFFLINEFILES_SYNC_CONTROL_FLAG_BACKGROUND(0x00010000)

애플리케이션이 동기화 작업에 대해 현재 열려 있는 파일을 열려는 경우 동기화 작업에서 위반을 공유하지 않도록 하려면 이 플래그를 설정합니다. 이 시나리오가 발생하고 이 플래그가 설정되면 동기화 작업이 "백오프"되며 해당 시간에 해당 특정 파일에 대해 완료되지 않습니다. 이 플래그는 주로 오프라인 파일 서비스에서 내부 작업에 사용됩니다.

OFFLINEFILES_SYNC_CONTROL_FLAG_NONEWFILESOUT(0x00020000)

OFFLINEFILES_SYNC_CONTROL_FLAG_SYNCOUT 플래그가 설정되지 않은 경우 이 플래그는 무시됩니다. OFFLINEFILES_SYNC_CONTROL_FLAG_SYNCOUT 플래그가 설정된 경우 이 플래그는 클라이언트에만 존재하는 새 파일이 서버에 만들어지지 않음을 나타냅니다.

IOfflineFilesSyncConflictHandler의 구현을 제공하는 대신 모든 동기화 충돌을 "로컬 유지", "원격 유지" 또는 "최신 상태로 유지" 방식으로 해결하려는 경우 다음 플래그 값 중 하나만 설정합니다. pISyncConflictHandler 매개 변수가 NULL이 아닌 경우 이러한 플래그 값은 무시됩니다.

OFFLINEFILES_SYNC_CONTROL_CR_KEEPLOCAL(0x10000000)

로컬 복사본을 서버에 동기화합니다.

OFFLINEFILES_SYNC_CONTROL_CR_KEEPREMOTE(0x20000000)

원격 복사본을 로컬 캐시에 동기화합니다.

OFFLINEFILES_SYNC_CONTROL_CR_KEEPLATEST(0x30000000)

복사본을 최신 마지막 변경 시간으로 유지합니다. 이 해결을 "마지막 작성자 우선"이라고도 합니다.

[in] pISyncConflictHandler

충돌 처리기 구현에 대한 IOfflineFilesSyncConflictHandler 인터페이스 포인터입니다. 제공된 경우 동기화 작업은 충돌 처리기를 호출하여 작업 중에 발생하는 동기화 충돌을 resolve. 처리기는 충돌 유형을 설명하는 코드를 받은 다음 충돌이 해결되었는지 또는 동기화 작업에서 수행할 다른 작업을 나타내는 코드를 반환합니다. 이 매개 변수는 선택 사항이며 NULL일 수 있습니다. 이 매개 변수가 NULL이면 오프라인 파일 서비스에서 기본 작업이 수행됩니다. 일반적으로 이로 인해 충돌은 동기화 센터의 이후 프레젠테이션을 위해 사용자의 동기화 충돌 저장소에 기록됩니다.

[in] pIProgress

작업 중에 진행률 이벤트를 수신할 이벤트 싱크에 대한 인터페이스입니다. 이 매개 변수는 선택 사항이며 NULL일 수 있습니다.

[in] pSyncId

이 동기화 작업에 적용된 고유 ID입니다. 이 ID는 이 작업과 관련된 모든 게시된 이벤트(IOfflineFilesEvents)에 포함됩니다. 이 매개 변수는 선택 사항이며 NULL일 수 있습니다.

반환 값

성공하면 S_OK 반환하고, 그렇지 않으면 오류 값을 반환합니다.

작업이 취소된 경우 를 반환 HRESULT_FROM_WIN32(ERROR_CANCELLED) 합니다.

IOfflineFilesSyncProgress 이벤트를 모니터링하여 개별 파일과 관련된 오류를 검색합니다.

설명

bAsync 매개 변수가 TRUE이면 호출자는 pIProgress 매개 변수를 통해 이벤트 인터페이스를 제공해야 합니다. Synchronize 메서드는 작업 시작 시 이벤트 인터페이스에 대한 참조 수를 증가시키고 작업이 완료되면 참조 수를 줄입니다. 따라서 이벤트 싱크 구현은 모듈이 작업 전체에서 메모리에 유지되도록 호스팅 모듈의 참조 수를 증가시키는 것이 좋습니다.

진행 중인 동안 동기화 작업이 취소되면 해당 시점까지 동기화된 파일은 동기화된 상태로 유지됩니다.

rgpszPaths 매개 변수에 경로가 하나만 제공되고 해당 경로가 단일 파일에 있는 경우 반환 값은 해당 단일 동기화 작업의 결과를 나타냅니다. 그렇지 않으면 호출자는 다음 목록에서 진행률 콜백 메서드를 구현하고 IOfflineFilesSyncProgress::SyncItemResult 메서드를 모니터링하여 처리된 각 파일 및 디렉터리에 대한 결과를 가져와야 합니다.

진행률 이벤트 인터페이스 메서드 Description
IOfflineFilesProgress 시작 작업을 시작할 때 호출됩니다.
IOfflineFilesSyncProgress SyncItemBegin 각 파일에 대한 처리를 시작할 때 호출됩니다.
IOfflineFilesSyncProgress SyncItemResult 각 파일이 동기화된 후 호출됩니다.
IOfflineFilesProgress QueryAbort 동기화 작업 중에 주기적으로 호출되어 취소 요청을 검색합니다.
IOfflineFilesProgress End 작업이 끝날 때 호출됩니다.
 

호출 코드가 게시된 동기화 이벤트도 수신 대기하는 경우 pSyncId 매개 변수를 통해 동기화 ID를 지정할 수 있습니다. 동일한 ID 값은 이 작업에서 생성된 SyncBegin, SyncFileResultSyncEnd 게시된 이벤트(IOfflineFilesEvents)를 통해 전송됩니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista
지원되는 최소 서버 Windows Server 2008
대상 플랫폼 Windows
헤더 cscobj.h
DLL CscSvc.dll; CscObj.dll

추가 정보

IOfflineFilesCache

IOfflineFilesEvents2::BackgroundSyncBegin

IOfflineFilesEvents2::BackgroundSyncEnd

IOfflineFilesFileItem::IsSparse