共用方式為


建立櫃檔回呼例程

因為安裝程式 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