共用方式為


建立封包回呼常式

因為安裝程式 API 不提供預設封包回呼常式,所以您需要提供常式。 SetupIterateCabinet函式所需的回呼常式必須具有與FileCallback所指向的回呼常式相同。

以下是 SetupIterateCabinet 用來將通知傳送至回呼常式的語法。

MsgHandler(          //the specified callback routine
    Context,         //context used by the callback routine
    Notification,    //cabinet notification
    Param1,          //additional notification information
    Param2           //additional notification information
);

CoNtext參數是內容變數或結構的 void 指標,可供回呼常式用來儲存後續呼叫回呼常式之間需要保存的資訊。

此內容的實作是由回呼常式所指定,而且永遠不會由 SetupIterateCabinet參考或改變。

Notification參數是不帶正負號的整數,而且會是下列其中一個值。

通知 描述
SPFILENOTIFY_FILEEXTRACTED 檔案已從封包擷取。
SPFILENOTIFY_FILEINCABINET 在封包中遇到檔案。
SPFILENOTIFY_NEEDNEWCABINET 下一個封包中會繼續目前的檔案。

 

最後兩個參數 Param1Param2也是不帶正負號的整數,並包含與通知相關的其他資訊。 如需 SetupIterateCabinet所傳送之通知的詳細資訊,請參閱 封包檔案通知

SP_FILE_NOTIFY_CALLBACK常式會傳回不帶正負號的整數。 封包回呼常式應該會根據通知傳回下列其中一個值。

針對SPFILENOTIFY_FILEINCABINET通知, SetupIterateCabinet 預期回呼常式會傳回下列其中一個值。

意義
FILEOP_ABORT 中止封包處理。
FILEOP_DOIT 擷取目前的檔案。
FILEOP_SKIP 略過目前的檔案。

 

針對SPFILENOTIFY_NEEDNEWCABINET和SPFILENOTIFY_FILEEXTRACTED通知, SetupIterateCabinet 預期回呼常式會傳回下列其中一個值。

意義
NO_ERROR 未發生任何錯誤,請繼續處理封包。
ERROR_XXX 發生指定型別的錯誤。 SetupIterateCabinet函式會傳回FALSE,而指定的錯誤碼將會由GetLastError呼叫傳回。

 

如果回呼常式傳回FILEOP_DOIT,則常式也必須提供完整的目標路徑。 如需詳細資訊,請參閱 SPFILENOTIFY_FILEINCABINET