共用方式為


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 加上兩 ULONG 個 s 的大小。
CF_CALLBACK_TYPE_FETCH_PLACHOLDERS 設定為 的大小 FetchPlaceholders 加上 的大小 ULONG
CF_CALLBACK_TYPE_CANCEL_FETCH_PLACHOLDERS 設定為兩 ULONG 個 s 的大小。
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 可以是下列其中一項:

原因 描述
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

Reason列舉CF_CALLBACK_DEHYDRATION_REASON成員,指定預留位置解除凍結的原因。 它可能是下列其中一個值:

原因 描述
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

ReasonCF_CALLBACK_DEHYDRATION_REASON列舉的成員,指定預留位置解除凍結的原因。 它可能是下列其中一個值:

原因 描述
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

另請參閱

CfHydratePlaceholder

CF_CALLBACK_TYPE

CF_CALLBACK_DEHYDRATION_REASON