建立櫃檔回呼例程
因為安裝程式 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 | 下一個櫃子裡將繼續當前的檔案。 |
最後兩個參數,Param1 和 Param2,也是不帶正負號的整數,並包含與通知相關的其他資訊。 如需 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。