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 會等於檔案的未壓縮大小
- date 會等於檔案的 16 位 MS-DOS 日期
- time 等於檔案的 16 位 MS-DOS 時間
- attribs 會等於檔案的 16 位 MS-DOS 屬性
應用程式應該會傳回三個值的其中一個;0 略過 (,也就是不要複製) 檔案;-1 (負一個) 中止 FDICopy;或非零 (和非負一) 檔案控制代碼,指出寫入檔案的位置。 檔案控制代碼必須與提供給FDICreate的PFNCLOSE函式相容。 系統會針對在目前封包內啟動的每個檔案呼叫 fdintCOPY_FILE 通知,讓應用程式有機會要求複製或略過檔案。
|
- fdintCLOSE_FILE_INFO
- 0x03
|
關閉檔案,設定相關資訊。
設定此值時,會填入 FDINOTIFICATION 結構,其中包含下列資訊:
- psz1 會指向封包中的檔案名
- hf 會是源自 fdintCOPY_FILE) 的檔案控制碼 (
- 日期 日期會等於檔案的 16 位 MS-DOS 日期
- 時間 時間等於檔案的 16 位 MS-DOS 時間
- attribs 屬性會等於檔案的 16 位 MS-DOS 屬性, (減去_A_EXEC位)
- cb 會等於 0 或 1,指出是否應該在擷取 (1) 之後執行檔案,或是否 (0)
如果 cb 等於 1,應用程式必須負責執行檔案。 所有資料都已寫入目標檔案之後,就會呼叫 fdintCLOSE_FILE_INFO 通知。 應用程式必須使用提供的 hf 控制碼) 來關閉檔案 (,並設定檔案日期、時間和屬性。 應用程式應該會傳回 TRUE 以成功 ,FALSE 或 -1 表示中止 FDICopy。 FDI 假設目標檔案已關閉,即使此回呼傳回失敗也一樣;FDI 不會嘗試使用 PFNCLOSE 關閉檔案。
|
- fdintNEXT_CABINET
- 0x04
|
檔案會繼續下一個封包。
設定此值時,會填入 FDINOTIFICATION 結構,其中包含下列資訊:
- psz1 會指向目前檔案繼續所在的下一個封包名稱
- psz2 將是源自 fdintCOPY_FILE) 的檔案控制碼 (
- psz3 會指向封包路徑資訊
- fdie 將等於成功或錯誤值
只有在 指示fdintCOPY_FILE 將後續封包繼續的檔案複製到目前的封包時,才會呼叫此通知。 由於應用程式可以修改封包名稱,因此請務必先驗證 psz3所表示的封包路徑名稱,然後再傳回。 此外,應用程式應該確保封包存在且可在傳回之前讀取;如有必要,應用程式應該發出磁片變更提示以確認。
當此函式返回 FDI 時,FDI 會確認所提供封包的 setID 和 iCabinet 欄位符合該封包的預期值。 如果沒有,則 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
|
列舉狀態。
|
傳回值
無
需求
另請參閱
FDICopy
FDINOTIFICATION