Share via


CF_SYNC_POLICIES 구조체(cfapi.h)

동기화 루트에서 사용하는 동기화 정책을 정의합니다.

구문

typedef struct CF_SYNC_POLICIES {
  ULONG                            StructSize;
  CF_HYDRATION_POLICY              Hydration;
  CF_POPULATION_POLICY             Population;
  CF_INSYNC_POLICY                 InSync;
  CF_HARDLINK_POLICY               HardLink;
  CF_PLACEHOLDER_MANAGEMENT_POLICY PlaceholderManagement;
} CF_SYNC_POLICIES;

멤버

StructSize

구조체의 크기입니다 CF_SYNC_POLICIES .

Hydration

하이드레이션 정책을 사용하면 동기화 공급자가 플랫폼에서 자리 표시자 파일을 하이드레이션하는 방법을 제어할 수 있습니다. 기본 정책 및 정책 한정자 집합으로 구성됩니다.

기본 정책에는 다음과 같은 네 가지 가능한 값이 있습니다.

정책 설명
ALWAYS_FULL ALWAYS_FULL 이 선택되면 플랫폼은 HRESULT, CfCreatePlaceholders, CfDehydratePlaceholder, 탈수 옵션이 있는 CfUpdatePlaceholder 및 탈수 옵션이 있는CfConvertPlaceholder를 포함하는 완전히 하이드레이션되지 않은 자리 표시자를 생성할 수 있는 자리 표시자 작업인 HRESULTERROR_CLOUD_FILE_INVALID_REQUEST와 함께 실패합니다.
FULL FULL 이 선택되면 플랫폼에서 자리 표시자를 탈수할 수 있습니다. 플랫폼이 탈수된 자리 표시자에 대한 액세스를 감지하면 요청이 1 바이트만 요청하는 경우에도 사용자 IO 요청을 완료하기 전에 자리 표시자의 전체 콘텐츠를 로컬로 사용할 수 있는지 확인합니다.
진보적인 PROGRESSIVE 이 선택되면 플랫폼에서 자리 표시자를 탈수할 수 있습니다. 플랫폼이 탈수된 자리 표시자에 대한 액세스를 감지하면 동기화 공급자로부터 충분한 데이터가 수신되었다고 판단되는 즉시 사용자 IO 요청을 완료합니다. 그러나 플랫폼은 자리 표시자의 전체 콘텐츠를 로컬로 사용할 수 있거나 자리 표시자의 마지막 사용자 핸들을 닫을 때까지 백그라운드에서 동기화 공급자의 자리 표시자에 있는 나머지 콘텐츠를 계속 요청할 것을 약속합니다.

옵트인 PROGRESSIVE 하는 동기화 공급자는 수분 공급 콜백이 오프셋 0에서 순차적으로 도착한다고 가정하지 않을 수 있습니다. 즉, 정책과 동기화 공급자 PROGRESSIVE 는 자리 표시자에서 임의 검색을 처리해야 합니다.
PARTIAL 정책은 PARTIAL 과 매우 유사합니다 PROGRESSIVE. 둘 사이의 유일한 차이점은 정책과 백그라운드에서 연속 수화의 부족이다 PARTIAL .

현재 VALIDATION_REQUIRED지원되는 세 가지 정책 한정자는 , STREAMING_ALLOWEDAUTO_DEHYDRATION_ALLOWED입니다. 일반적으로 한정자는 조합이 자체 충돌하지 않는 한 모든 기본 정책 및 기타 정책 한정자와 혼합 및 일치시킬 수 있습니다.

정책 한정자 Description
VALIDATION_REQUIRED 이 정책 한정자는 동기화 공급자에게 두 가지 보증을 제공합니다. 먼저 동기화 공급자가 반환한 데이터가 사용자 애플리케이션에 반환되기 전에 항상 디스크에 유지되도록 보장합니다. 둘째, 동기화 공급자가 이전에 플랫폼에 반환한 것과 동일한 데이터를 검색하고 무결성의 유효성을 검사할 수 있습니다. 동기화 공급자가 무결성을 성공적으로 확인한 후에만 플랫폼이 사용자 IO 요청을 완료합니다. 이 한정자는 추가 디스크 IO의 비용으로 엔드 투 엔드 데이터 무결성을 지원하는 데 도움이 됩니다.
STREAMING_ALLOWED 이 정책 한정자는 동기화 공급자가 반환한 데이터를 로컬 디스크에 저장하지 않을 수 있는 권한을 플랫폼에 부여합니다. 이 정책 한정자는 와 VALIDATION_REQUIRED함께 사용할 수 없습니다. 두 플래그를 모두 지정하면 API가 와 함께 ERROR_INVALID_PARAMETER 실패합니다.
AUTO_DEHYDRATION_ALLOWED 이 정책 한정자는 동기화 공급자의 도움 없이 동기화 중인 클라우드 파일 자리 표시자를 탈수할 수 있는 권한을 플랫폼에 부여합니다. 이 플래그가 없으면 플랫폼에서 CfDehydratePlaceholder 를 직접 호출할 수 없습니다. 대신 클라우드 파일 자리 표시자를 디하이드레이션하는 유일한 지원 방법은 파일의 고정된 특성을 지우고 파일의 고정되지 않은 특성을 설정하는 것입니다. 그런 다음 두 특성에 대한 디렉터리 변경 알림을 받은 후 동기화 엔진에서 실제 탈수 작업을 비동기적으로 수행합니다. 이 플래그를 지정하면 플랫폼이 동기화 중인 클라우드 파일 자리 표시자에서 CfDehydratePlaceholder 를 직접 호출할 수 있습니다. 동기화 공급자가 자동 탈수를 지원하는 것이 좋습니다.
ALLOW_FULL_RESTART_HYDRATION 이 정책 한정자는 AV 필터가 파일을 검사하려는 시도를 가로챌 때 파일을 동기적으로 완전히 수화할 수 있는 플랫폼 권한을 부여합니다. RestartHydration을 사용하여 FetchData 콜백에서 을 변경 fileSize 하려는 동기화 공급자는 파일을 검사하려는 바이러스 백신 및 맬웨어 방지 소프트웨어와 RestartHydration을 사용하여 변경 fileSize 하려는 공급자와의 교착 상태를 방지하기 위해 정책을 옵트 ALLOW_FULL_RESTART_HYDRATION 인해야 합니다.

참고: 이 한정자는 CfGetPlatformInfo에서 가져온 이 이상인 경우에만 PlatformVersion.IntegrationNumber 지원됩니다0x500.

Population

채우기 정책을 사용하면 동기화 공급자가 플랫폼에서 디렉터리와 파일 모두 자리 표시자 네임스페이스를 만드는 방법을 제어할 수 있습니다. 현재 한정자가 정의되지 않은 세 가지 기본 정책이 있습니다.

정책 설명
ALWAYS_FULL ALWAYS_FULL 이 선택되면 플랫폼은 전체 이름 공간을 항상 로컬로 사용할 수 있다고 가정합니다. 동기화 공급자에 디렉터리 열거형 요청을 전달하지 않습니다.
FULL FULL 채우기 정책을 사용하면 플랫폼이 완전히 채워지지 않은 디렉터리에 대한 액세스를 감지하면 동기화 공급자가 사용자 요청을 완료하기 전에 디렉터리 아래의 모든 항목을 반환할 것을 요청합니다.
PARTIAL PARTIAL 채우기 정책을 사용하면 플랫폼이 완전히 채워지지 않은 디렉터리에 대한 액세스를 감지하면 동기화 공급자의 사용자 애플리케이션에 필요한 항목만 요청합니다.

InSync

InSync 정책을 사용하면 동기화 공급자가 플랫폼이 자리 표시자에서 동기화 중 상태를 지워야 하는 시기를 제어할 수 있습니다. 플랫폼은 데이터 수정 시 항상 동기화 내를 지우는 것 외에도 현재 세 개의 파일 특성(ReadOnly, SystemHidden)과 두 개의 파일 시간(CreateTimeLastWriteTime)의 조합에 대한 변경 내용에 대해 동기화 중을 지울 수 있습니다. 이러한 정책은 파일 및 디렉터리에 별도로 적용할 수 있습니다.

HardLink

기본적으로 플랫폼은 모든 자리 표시자에 하드 링크를 만들 수 없습니다. 그러나 하드 링크를 처리할 수 있는 동기화 공급자는 정책을 통해 지원을 사용하도록 플랫폼에 ALLOWED 지시할 수 있습니다. 이 정책을 사용하면 링크가 동일한 동기화 루트 아래에 있거나 동기화 루트가 없는 한 애플리케이션에서 파일 시스템에서 지원하는 만큼의 하드 링크를 만들 수 있습니다. 플랫폼은 첫 번째 동기화되지 않은 루트 링크가 도입될 때 자리 표시자를 강제로 하이드레이션하고 마지막 동기화 루트 내 링크가 제거될 때 자리 표시자를 일반 파일에 되돌리기. 정책과 호환되지 않는 하드링크 만들기는 HRESULT ERROR_CLOUD_FILES_INCOMPATIBLE_HARDLINKS로 실패합니다. 정책과 호환되지 않는 자리 표시자 작업도 에서 ERROR_CLOUD_FILES_INCOMPATIBLE_HARDLINKS실패합니다.

PlaceholderManagement

기본적으로 동기화 공급자만 동기화 루트에서 자리 표시자 관리 작업을 수행할 수 있습니다. 동기화 공급자가 아닌 프로세스는 동기화 루트가 비활성 상태인 경우에만 자리 표시자 관리 작업을 수행할 수 있습니다(즉, 동기화 공급자가 동기화 루트에 연결되지 않은 경우). 이러한 정책을 사용하도록 설정하면 동기화되지 않은 공급자 프로세스가 활성 동기화 루트에서 각 자리 표시자 관리 작업을 수행할 수 있습니다. CF_PLACEHOLDER_MANAGEMENT_POLICY_DEFAULT 는 연결된 동기화 공급자만 자리 표시자 관리 작업을 수행할 수 있도록 하는 기본 정책입니다. 아래의 세 가지 정책은 모든 조합으로 지정할 수 있습니다.

정책 설명
CF_PLACEHOLDER_MANAGEMENT_POLICY_CREATE_UNRESTRICTED 등록하는 동안 이 정책을 지정하면 모든 프로세스에서 CfCreatePlaceholders를 호출하여 활성 동기화 루트 내에 자리 표시자를 만들 수 있습니다.
CF_PLACEHOLDER_MANAGEMENT_POLICY_CONVERT_UNRESTRICTED 등록하는 동안 이 정책을 지정하면 모든 프로세스에서 CfConvertToPlaceholder를 호출하여 활성 동기화 루트 내의 파일 또는 디렉터리를 자리 표시자로 변환할 수 있습니다.
CF_PLACEHOLDER_MANAGEMENT_POLICY_UPDATE_UNRESTRICTED 등록하는 동안 이 정책을 지정하면 모든 프로세스에서 API CfUpdatePlaceholder를 통해 활성 동기화 루트 내의 자리 표시자를 업데이트할 수 있습니다.

참고

이러한 플래그는 CfGetPlatformInfo에서 가져온 이 이상인 경우에만 PlatformVersion.IntegrationNumber 지원됩니다0x310.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10 버전 1709 [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2016 [데스크톱 앱만 해당]
머리글 cfapi.h

추가 정보

CfCreatePlaceholders

CfConvertToPlaceholder

CfGetPlatformInfo