建立封包回呼常式
因為安裝程式 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。