CF_CALLBACK_PARAMETERS 구조체(cfapi.h)
이 구조체에는 파일 오프셋, 길이, 플래그 등과 같은 콜백 관련 매개 변수가 포함됩니다.
구문
typedef struct CF_CALLBACK_PARAMETERS {
ULONG ParamSize;
union {
struct {
CF_CALLBACK_CANCEL_FLAGS Flags;
union {
struct {
LARGE_INTEGER FileOffset;
LARGE_INTEGER Length;
} FetchData;
} DUMMYUNIONNAME;
} Cancel;
struct {
CF_CALLBACK_FETCH_DATA_FLAGS Flags;
LARGE_INTEGER RequiredFileOffset;
LARGE_INTEGER RequiredLength;
LARGE_INTEGER OptionalFileOffset;
LARGE_INTEGER OptionalLength;
LARGE_INTEGER LastDehydrationTime;
CF_CALLBACK_DEHYDRATION_REASON LastDehydrationReason;
} FetchData;
struct {
CF_CALLBACK_VALIDATE_DATA_FLAGS Flags;
LARGE_INTEGER RequiredFileOffset;
LARGE_INTEGER RequiredLength;
} ValidateData;
struct {
CF_CALLBACK_FETCH_PLACEHOLDERS_FLAGS Flags;
PCWSTR Pattern;
} FetchPlaceholders;
struct {
CF_CALLBACK_OPEN_COMPLETION_FLAGS Flags;
} OpenCompletion;
struct {
CF_CALLBACK_CLOSE_COMPLETION_FLAGS Flags;
} CloseCompletion;
struct {
CF_CALLBACK_DEHYDRATE_FLAGS Flags;
CF_CALLBACK_DEHYDRATION_REASON Reason;
} Dehydrate;
struct {
CF_CALLBACK_DEHYDRATE_COMPLETION_FLAGS Flags;
CF_CALLBACK_DEHYDRATION_REASON Reason;
} DehydrateCompletion;
struct {
CF_CALLBACK_DELETE_FLAGS Flags;
} Delete;
struct {
CF_CALLBACK_DELETE_COMPLETION_FLAGS Flags;
} DeleteCompletion;
struct {
CF_CALLBACK_RENAME_FLAGS Flags;
PCWSTR TargetPath;
} Rename;
struct {
CF_CALLBACK_RENAME_COMPLETION_FLAGS Flags;
PCWSTR SourcePath;
} RenameCompletion;
} DUMMYUNIONNAME;
} CF_CALLBACK_PARAMETERS;
멤버
ParamSize
ParamSize 는 수행 중인 콜백에 따라 설정됩니다.
콜백 | ParamSize 정보 |
---|---|
CF_CALLBACK_TYPE_FETCH_DATA | 의 크기와 FetchData 의 크기로 ULONG 설정합니다. |
CF_CALLBACK_TYPE_VALIDATE_DATA | 의 크기와 ValidateData 의 크기로 ULONG 설정합니다. |
CF_CALLBACK_TYPE_CANCEL_FETCH_DATA | 의 크기와 Cancel.FetchData 2 ULONG 의 크기로 설정합니다. |
CF_CALLBACK_TYPE_FETCH_PLACHOLDERS | 의 크기와 FetchPlaceholders 의 크기로 ULONG 설정합니다. |
CF_CALLBACK_TYPE_CANCEL_FETCH_PLACHOLDERS | 을 2 ULONG 의 크기로 설정합니다. |
CF_CALLBACK_TYPE_NOTIFY_FILE_OPEN_COMPLETION | 의 크기와 OpenCompletion 의 크기로 ULONG 설정합니다. |
CF_CALLBACK_TYPE_NOTIFY_FILE_CLOSE_COMPLETION | 을 의 CloseCompletion 크기와 의 크기 ULONG 로 설정합니다. |
CF_CALLBACK_TYPE_NOTIFY_DEHYDRATE | 의 크기와 Dehydrate 의 크기로 ULONG 설정합니다. |
CF_CALLBACK_TYPE_NOTIFY_DEHYDRATE_COMPLETION | 의 크기와 DehydrateCompletion 의 크기로 ULONG 설정합니다. |
CF_CALLBACK_TYPE_NOTIFY_DELETE | 의 크기와 Delete 의 크기로 ULONG 설정합니다. |
CF_CALLBACK_TYPE_NOTIFY_DELETE_COMPLETION | 의 크기와 DeleteCompletion 의 크기로 ULONG 설정합니다. |
CF_CALLBACK_TYPE_NOTIFY_RENAME | 의 크기와 Rename 의 크기로 ULONG 설정합니다. |
CF_CALLBACK_TYPE_NOTIFY_RENAME_COMPLETION | 의 크기와 RenameCompletion 의 크기로 ULONG 설정합니다. |
DUMMYUNIONNAME
DUMMYUNIONNAME.Cancel
DUMMYUNIONNAME.Cancel.Flags
플래그 는 다음 플래그로 설정할 수 있습니다.
- 60초 타이머의 만료로 인해 사용자 요청이 취소되면 CF_CALLBACK_CANCEL_FLAG_IO_TIMEOUT 설정됩니다.
- 사용자가 앱 시작 다운로드 알림에서 하이드레이션을 명시적으로 종료한 결과로 사용자 요청이 취소되면 CF_CALLBACK_CANCEL_FLAG_IO_ABORTED 설정됩니다.
DUMMYUNIONNAME.Cancel.DUMMYUNIONNAME
DUMMYUNIONNAME.Cancel.DUMMYUNIONNAME.FetchData
DUMMYUNIONNAME.Cancel.DUMMYUNIONNAME.FetchData.FileOffset
더 이상 필요하지 않은 파일 데이터의 범위를 지정하기 위한 오프셋(바이트)입니다. 이는 해당 페치의 RequiredFileOffset 과 일치할 수 있지만 하위 집합일 수도 있습니다. 하위 집합인 경우 나중에 도착한 미해결 I/O 작업을 충족하기 위해 취소 범위를 벗어난 데이터는 여전히 필요합니다.
DUMMYUNIONNAME.Cancel.DUMMYUNIONNAME.FetchData.Length
더 이상 필요하지 않은 파일 데이터의 길이(바이트)입니다. 이는 해당 페치의 RequiredLength 와 일치할 수 있지만 하위 집합일 수도 있습니다. 하위 집합인 경우 나중에 도착한 미해결 I/O 작업을 충족하기 위해 취소 범위를 벗어난 데이터는 여전히 필요합니다.
DUMMYUNIONNAME.FetchData
DUMMYUNIONNAME.FetchData.Flags
플래그 는 다음 값으로 설정할 수 있습니다.
- 동기화 공급자의 부정한 종료 또는 전원 손실 등으로 인해 이전에 중단된 수분 공급 프로세스의 결과로 콜백이 호출되면 CF_CALLBACK_FETCH_DATA_FLAG_RECOVER 설정됩니다.
- CfHydratePlaceholder 호출의 결과로 콜백이 호출되면 CF_CALLBACK_FETCH_DATA_FLAG_EXPLICIT_HYDRATION 설정됩니다.
DUMMYUNIONNAME.FetchData.RequiredFileOffset
미해결 I/O 요청을 충족하기 위해 필터에 절대적으로 필요한 파일 데이터 범위를 지정하기 위한 오프셋(바이트)입니다.
DUMMYUNIONNAME.FetchData.RequiredLength
미해결 I/O 요청을 충족하기 위해 필터에 절대적으로 필요한 파일 데이터의 길이(바이트)입니다.
DUMMYUNIONNAME.FetchData.OptionalFileOffset
동기화 공급자가 더 큰 청크로 데이터를 제공하는 것을 선호하는 경우 플랫폼에 유용하게 제공할 수 있는 광범위한 파일 데이터에 대한 힌트로 제공되는 오프셋(바이트)입니다. 일반적으로 선택적 범위는 현재 자리 표시자에 없는 최대 연속 범위입니다. 이는 선택 사항이며 동기화 공급자가 더 큰 데이터 세그먼트로 작업하는 것을 선호하는 경우에 사용할 수 있습니다.
DUMMYUNIONNAME.FetchData.OptionalLength
동기화 공급자가 더 큰 청크로 데이터를 제공하는 것을 선호하는 경우 플랫폼에 유용하게 제공할 수 있는 광범위한 파일 데이터에 대한 힌트로 제공되는 길이(바이트)입니다. 일반적으로 선택적 범위는 현재 자리 표시자에 없는 최대 연속 범위입니다. 이는 선택 사항이며 동기화 공급자가 더 큰 데이터 세그먼트로 작업하는 것을 선호하는 경우에 사용할 수 있습니다.
-1의 길이는 로 CF_EOF
표시되며 무한대(즉, 파일의 끝)를 의미합니다.
동기화 공급자가 필요한 모든 데이터를 한 번에 반환할 필요는 없습니다. 또한 동기화 공급자가 필요한 범위 또는 선택적 범위 내에서 데이터를 반환할 필요가 없습니다. 플랫폼은 잘못된 CF_OPERATION_TYPE_TRANSFER_DATA 작업으로 인해 수정/동기화되지 않은 파일 데이터가 수정되지 않도록 보장합니다. 그러나 반환된 범위가 파일 끝에서 끝나지 않는 한 반환된 데이터는 오프셋과 길이 모두에 대해 4KB로 정렬되어야 합니다. 이 경우 범위가 파일의 끝 또는 끝 이상으로 끝나는 경우 길이를 4KB로 정렬할 필요가 없습니다.
DUMMYUNIONNAME.FetchData.LastDehydrationTime
문제의 클라우드 파일이 탈수된 시스템 시간입니다. 1601년 1월 1일 이후 100나노초 간격의 수입니다.
DUMMYUNIONNAME.FetchData.LastDehydrationReason
파일이 마지막으로 탈수된 이유를 지정하는 CF_CALLBACK_DEHYDRATION_REASON 열거형의 멤버입니다.
LastDehydrationReason 은 다음 중 하나일 수 있습니다.
이유 | Description |
---|---|
CF_CALLBACK_DEHYDRATE_REASON_NEVER | 클라우드 파일은 생성된 후 탈수된 적이 없습니다. |
CF_CALLBACK_DEHYDRATE_REASON_USER_MANUAL | 사용자가 클라우드 파일을 명시적으로 탈수했습니다. |
CF_CALLBACK_DEHYDRATE_REASON_SYSTEM_PERIODIC | 플랫폼은 사용자 정의 정책에 따라 클라우드 파일을 사용했습니다. |
CF_CALLBACK_DEHYDRATE_REASON_SYSTEM_LOWSPACE | 이 파일이 있는 볼륨에서 디스크 공간이 부족할 때 플랫폼이 클라우드 파일을 탈수했습니다. |
CF_CALLBACK_DEHYDRATE_REASON_SYSTEM_UPGRADE | 플랫폼은 OS를 업그레이드하기 위해 디스크 공간을 회수할 때 이 파일을 탈수했습니다. |
DUMMYUNIONNAME.ValidateData
DUMMYUNIONNAME.ValidateData.Flags
데이터 유효성 검사 플래그입니다. CfHydratePlaceholder 호출의 결과로 콜백이 호출되면 CF_CALLBACK_VALIDATE_DATA_FLAG_EXPLICIT_HYDRATION 설정됩니다.
DUMMYUNIONNAME.ValidateData.RequiredFileOffset
유효성을 검사할 파일 데이터의 범위를 지정하기 위한 오프셋(바이트)입니다.
DUMMYUNIONNAME.ValidateData.RequiredLength
유효성을 검사해야 하는 파일 데이터 범위의 길이(바이트)입니다. -1의 길이는 로 CF_EOF
표시되며 무한대(즉, 파일의 끝)를 의미합니다.
동기화 공급자가 한 번에 필요한 모든 데이터를 승인할 필요가 없습니다. 동기화 공급자가 필요한 범위 내의 데이터를 승인할 필요도 없습니다. 플랫폼은 잘못된 CF_OPERATION_TYPE_ACT_DATA 작업으로 인해 수정/동기화되지 않은 파일 데이터가 삭제되지 않도록 합니다. 그러나 승인된 데이터는 반환된 범위가 파일 끝에서 끝나지 않는 한 오프셋과 길이 모두에 대해 4KB로 정렬되어야 합니다. 이 경우 범위가 파일의 끝 또는 끝 이상으로 끝나는 경우 길이를 4KB로 정렬할 필요가 없습니다.
DUMMYUNIONNAME.FetchPlaceholders
DUMMYUNIONNAME.FetchPlaceholders.Flags
이 Flags 값은 CF_CALLBACK_FETCH_PLACEHOLDERS_FLAG_NONE 설정해야 합니다.
DUMMYUNIONNAME.FetchPlaceholders.Pattern
와일드카드 문자(?
, *
)를 포함할 수 있는 표준 Windows 파일 패턴입니다. 종종 패턴이 될 *
수 있지만 더 구체적일 수 있습니다. 동기화 공급자는 CF_OPERATION_TYPE_TRANSFER_PLACEHOLDERS 사용하여 디렉터리의 모든 파일에 대한 자리 표시자 정보를 전송하기 시작할 것으로 예상됩니다. 동기화 공급자는 최소 요구 사항으로 패턴과 일치하는 모든 자리 표시자를 한 번의 샷으로 전송해야 합니다. 또한 동기화 공급자는 패턴과 일치하지 않는 자리 표시자를 전송하도록 선택할 수 있습니다.
DUMMYUNIONNAME.OpenCompletion
DUMMYUNIONNAME.OpenCompletion.Flags
자리 표시자 열기 완료 플래그입니다. 다음 두 플래그 중 하나로 설정할 수 있습니다.
- 자리 표시자 메타데이터가 손상된 경우 CF_CALLBACK_OPEN_COMPLETION_FLAG_PLACEHOLDER_UNKNOWN 설정됩니다.
- 자리 표시자 메타데이터가 이전 버전이고 지원되지 않는 버전인 경우 CF_CALLBACK_OPEN_COMPLETION_FLAG_PLACEHOLDER_UNSUPPORTED 설정됩니다.
DUMMYUNIONNAME.CloseCompletion
DUMMYUNIONNAME.CloseCompletion.Flags
자리 표시자 닫기 완료 플래그입니다. 닫기의 결과로 자리 표시자가 삭제되면 CF_CALLBACK_CLOSE_COMPLETION_FLAG_DELETED 설정할 수 있습니다.
DUMMYUNIONNAME.Dehydrate
DUMMYUNIONNAME.Dehydrate.Flags
자리 표시자 탈수 플래그입니다. 시스템 백그라운드 서비스에서 탈수 요청을 시작하는 경우 CF_CALLBACK_DEHYDRATE_FLAG_BACKGROUND 설정할 수 있습니다.
DUMMYUNIONNAME.Dehydrate.Reason
이유는 자리 표시자가 탈수되는 이유를 지정하는 CF_CALLBACK_DEHYDRATION_REASON 열거형의 멤버입니다. 다음 값 중 하나일 수 있습니다.
이유 | Description |
---|---|
CF_CALLBACK_DEHYDRATE_REASON_USER_MANUAL | 사용자가 클라우드 파일을 탈수하도록 명시적으로 요청합니다. |
CF_CALLBACK_DEHYDRATE_REASON_SYSTEM_INACTIVITY | 플랫폼은 사용자 정의 정책에 따라 클라우드 파일을 주기적으로 사용 중단합니다. |
CF_CALLBACK_DEHYDRATE_REASON_SYSTEM_LOW_SPACE | 플랫폼에 이 클라우드 파일이 있는 볼륨의 디스크 공간이 부족합니다. |
CF_CALLBACK_DEHYDRATE_REASON_SYSTEM_OS_UPGRADE | 플랫폼은 OS를 업그레이드하기 위해 디스크 공간을 회수하고 있습니다. |
DUMMYUNIONNAME.DehydrateCompletion
DUMMYUNIONNAME.DehydrateCompletion.Flags
자리 표시자 탈수 완료 플래그입니다. 다음 값으로 설정할 수 있습니다.
- 시스템 백그라운드 서비스에서 탈수 요청을 시작하면 CF_CALLBACK_DEHYDRATE_COMPLETION_FLAG_BACKGROUND 설정됩니다.
- CF_CALLBACK_DEHYDRATE_COMPLETION_FLAG_DEHYDRATED 탈수 요청 전에 자리가 수화되면 설정됩니다.
DUMMYUNIONNAME.DehydrateCompletion.Reason
이유는 자리 표시자가 탈수된 이유를 지정하는 CF_CALLBACK_DEHYDRATION_REASON 열거형의 멤버입니다. 다음 값 중 하나일 수 있습니다.
이유 | Description |
---|---|
CF_CALLBACK_DEHYDRATE_REASON_USER_MANUAL | 사용자가 클라우드 파일을 탈수하도록 명시적으로 요청합니다. |
CF_CALLBACK_DEHYDRATE_REASON_SYSTEM_INACTIVITY | 플랫폼은 사용자 정의 정책에 따라 클라우드 파일을 주기적으로 사용 중단합니다. |
CF_CALLBACK_DEHYDRATE_REASON_SYSTEM_LOW_SPACE | 플랫폼에 이 클라우드 파일이 있는 볼륨의 디스크 공간이 부족합니다. |
CF_CALLBACK_DEHYDRATE_REASON_SYSTEM_OS_UPGRADE | 플랫폼은 OS를 업그레이드하기 위해 디스크 공간을 회수하고 있습니다. |
DUMMYUNIONNAME.Delete
DUMMYUNIONNAME.Delete.Flags
자리 표시자 삭제 플래그입니다. CF_CALLBACK_DELETE_FLAG_NONE 설정됩니다.
DUMMYUNIONNAME.DeleteCompletion
DUMMYUNIONNAME.DeleteCompletion.Flags
자리 표시자 삭제 완료 플래그입니다. CF_CALLBACK_DELETE_COMPLETION_FLAG_NONE 설정됩니다.
DUMMYUNIONNAME.Rename
DUMMYUNIONNAME.Rename.Flags
자리 표시자 플래그의 이름을 바꿉니다. 다음 값으로 설정할 수 있습니다.
- 자리 표시자가 디렉터리인 경우 CF_CALLBACK_RENAME_FLAG_IS_DIRECTORY 설정됩니다.
- 이름을 바꾸거나 이동할 링크가 동기화 프로세스에서 관리하는 동기화 루트 내에 있으면 CF_CALLBACK_RENAME_FLAG_SOURCE_IN_SCOPE 설정됩니다.
- 이름 바꾸기 또는 이동 대상이 원본 경로의 동일한 동기화 루트에 있으면 CF_CALLBACK_RENAME_FLAG_TARGET_IN_SCOPE 설정됩니다.
DUMMYUNIONNAME.Rename.TargetPath
볼륨을 기준으로 하는 전체 이름 바꾸기/이동 대상 경로입니다.
DUMMYUNIONNAME.RenameCompletion
DUMMYUNIONNAME.RenameCompletion.Flags
이름 바꾸기 완료 자리 표시자 플래그입니다. CF_CALLBACK_RENAME_COMPLETION_FLAG_NONE 설정됩니다.
DUMMYUNIONNAME.RenameCompletion.SourcePath
볼륨을 기준으로 하는 전체 원본 링크 경로입니다.
요구 사항
지원되는 최소 클라이언트 | Windows 10 버전 1709 [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2016 [데스크톱 앱만 해당] |
머리글 | cfapi.h |