共用方式為


FNFDINOTIFY 巨集 (fdi.h)

FNFDINOTIFY 巨集會提供應用程式定義回呼通知函式的宣告,以更新譯碼器的狀態上的應用程式。

語法

void FNFDINOTIFY(
   fn
);

參數

fn

通知的類型。

價值 意義
fdintCABINET_INFO
0x00
內閣的一般資訊。

設定此值時,FDINOTIFICATION 結構會填入下列資訊:

  • psz1 將指向下一個內閣的名稱(不包括路徑資訊)
  • psz2 會指向下一個磁碟的名稱
  • psz3 會指向封包路徑名稱
  • setID 等於目前封包的集合標識碼
  • iCabinet 將等於內閣集合內的內閣號碼(第一內閣為0,第二內閣為1等)
應用程式應該傳回 0 表示成功,或 -1 表示失敗,這會中止 FDICopy。 FDICopy開啟的每個內閣將提供一次 fdintCABINET_INFO 通知:這包括因為檔案跨越封包界限而開啟的接續封包。
fdintPARTIAL_FILE
0x01
封包中的第一個檔案是上一個內閣檔案的接續。

設定此值時,FDINOTIFICATION 結構會填入下列資訊:

  • psz1 會指向上一個封包繼續的檔名
  • psz2 會指向檔案第一個區段所在的封包名稱
  • psz3 會指向檔案第一個區段所在的磁碟名稱
fdintPARTIAL_FILE 通知是在內閣開頭的檔案,該檔案已從上一個內閣繼續進行。 只有當 FDICopy 是在序列中的第二個或後續內閣啟動時,才會發生此通知,該系列檔案會從上一個內閣繼續進行。 應用程式應該傳回 0 表示成功,或 -1 表示失敗。
fdintCOPY_FILE
0x02
識別要複製之檔案的資訊。

設定此值時,FDINOTIFICATION 結構會填入下列資訊:

  • psz1 會指向封包中檔案的名稱
  • cb 等於未壓縮的檔案大小
  • 日期 等於檔案的 16 位 MS-DOS 日期
  • 時間 等於檔案的 16 位 MS-DOS 時間
  • 會等於檔案的16位 MS-DOS 屬性。 此外,如果檔名要解譯為UTF-8,則會設定 _A_NAME_IS_UTF 旗標。

請注意,上述成員直接來自封包檔案。 如果封包檔案是惡意的,則名稱可能包含非法或惡意的檔名字符。

應用程式應該傳回三個值的其中一個;0 略過檔案(亦即未複製) 檔案;-1(負一)中止 FDICopy:或表示寫入檔案位置的非零 (和非負一個) 檔案句柄。 檔句柄必須與提供給 FDICreatePFNCLOSE 函式相容。 系統會針對在目前封包內啟動的每個檔案呼叫 fdintCOPY_FILE 通知,讓應用程式有機會要求複製或略過檔案。

fdintCLOSE_FILE_INFO
0x03
關閉檔案,設定相關信息。

設定此值時,FDINOTIFICATION 結構會填入下列資訊:

  • psz1 會指向封包中檔案的名稱
  • hf 將是檔案句柄(源自 fdintCOPY_FILE
  • 日期 日期等於檔案的 16 位 MS-DOS 日期
  • 時間 時間等於檔案的16位 MS-DOS 時間
  • 屬性 屬性等於檔案的 16 位 MS-DOS 屬性(減去_A_EXEC位)
  • cb 等於 0 或 1,指出檔案是否應在擷取後執行 (1), 或否 (0)
如果 cb 等於 1,應用程式就會負責執行檔案。 在所有數據都已寫入目標檔案之後,就會呼叫 fdintCLOSE_FILE_INFO 通知。 應用程式必須關閉檔案(使用提供的 hf 句柄),並設定檔案日期、時間和屬性。 應用程式應該傳回 true true,並 FALSE 或 -1 中止 FDICopy。 FDI 假設目標檔案已關閉,即使此回呼傳回失敗也一樣;FDI 不會嘗試使用 PFNCLOSE 關閉檔案。
fdintNEXT_CABINET
0x04
檔案繼續下一個封包。

設定此值時,FDINOTIFICATION 結構會填入下列資訊:

  • psz1 會指向下一個封包的名稱,該封包會繼續執行目前檔案
  • psz2 將是文件句柄(源自 fdintCOPY_FILE
  • psz3 會指向封包路徑資訊
  • fdie 等於成功或錯誤值
只有在指示 fdintCOPY_FILE 將檔案從後續內閣繼續複製到目前的內閣時,才會呼叫此通知。 由於應用程式可以修改封包名稱,因此請務必在傳回封包之前先驗證封包路徑名稱,psz3。 此外,應用程式應確保封包存在且可在傳回之前讀取;如有必要,應用程式應該發出磁碟變更提示以確認。

當此函式返回 FDI 時,FDI 會確認所提供封包的 setIDiCabinet 字段符合該內閣的預期值。 如果沒有,FDI 會繼續傳送 fdintNEXT_CABINET 通知訊息,並將 fdie 欄位設定為 FDIERROR_WRONG_CABINET,直到指定正確的封包檔案,或直到此函式傳回 -1 並中止 FDICopy 呼叫為止。 如果從此函式傳回之後,封包檔案不存在、可讀取或已損毀,則 fdie 字段會等於下列其中一個值:

  • FDIERROR_CABINET_NOT_FOUND
  • FDIERROR_NOT_A_CABINET
  • FDIERROR_UNKNOWN_CABINET_VERSION
  • FDIERROR_CORRUPT_CABINET
  • FDIERROR_BAD_COMPR_TYPE
  • FDIERROR_RESERVE_MISMATCH
  • FDIERROR_WRONG_CABINET
如果沒有錯誤,fdie 會等於FDIERROR_NONE。 應用程式應該傳回 0 表示成功,或 -1 表示失敗,這會中止 FDICopy
fdintENUMERATE
0x05
列舉狀態。

傳回值

沒有

要求

要求 價值
目標平臺 窗戶
標頭 fdi.h

另請參閱

FDICopy

FDINOTIFICATION