Creazione di una routine di callback di Cabinet

Poiché l'API di installazione non fornisce una routine di callback di cabinet predefinita, è necessario fornire una routine. La routine di callback richiesta dalla funzione SetupIterateCabinet deve avere la stessa forma di quelle a cui punta fileCallback.

Di seguito è riportata la sintassi usata da SetupIterateCabinet per inviare una notifica alla routine di callback.

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

Il parametro Context è un puntatore void a una variabile di contesto o a una struttura che può essere usata dalla routine di callback per archiviare informazioni che devono essere mantenute tra le chiamate successive alla routine di callback.

Questa implementazione del contesto viene specificata dalla routine di callback e non viene mai fatto riferimento o modificato da SetupIterateCabinet.

Il parametro Notification è un intero senza segno e sarà uno dei valori seguenti.

Notifica Descrizione
SPFILENOTIFY_FILEEXTRACTED Il file è stato estratto dal gabinetto.
SPFILENOTIFY_FILEINCABINET Viene rilevato un file nel gabinetto.
SPFILENOTIFY_NEEDNEWCABINET Il file corrente viene continuato nel successivo gabinetto.

 

I due parametri finali, Param1 e Param2, sono anche interi senza segno e contengono informazioni aggiuntive rilevanti per la notifica. Per altre informazioni sulle notifiche inviate da SetupIterateCabinet, vedere Notifiche file di archivio.

Una routine SP_FILE_NOTIFY_CALLBACK restituisce un intero senza segno. La routine di callback del cabinet deve restituire uno dei valori seguenti a seconda della notifica.

Per la notifica di SPFILENOTIFY_FILEINCABINET, SetupIterateCabinet prevede che uno dei valori seguenti venga restituito dalla routine di callback.

Valore Significato
FILEOP_ABORT Interruzione dell'elaborazione del gabinetto.
FILEOP_DOIT Estrarre il file corrente.
FILEOP_SKIP Ignorare il file corrente.

 

Per le notifiche di SPFILENOTIFY_NEEDNEWCABINET e SPFILENOTIFY_FILEEXTRACTED, SetupIterateCabinet prevede che uno dei valori seguenti venga restituito dalla routine di callback.

Valore Significato
NO_ERROR Non è stato rilevato alcun errore, continuare a elaborare il gabinetto.
ERROR_XXX Si è verificato un errore del tipo specificato. La funzione SetupIterateCabinet restituirà FALSE e il codice di errore specificato verrà restituito da una chiamata a GetLastError.

 

Se la routine di callback restituisce FILEOP_DOIT, la routine deve anche fornire un percorso di destinazione completo. Per altre informazioni, vedere SPFILENOTIFY_FILEINCABINET.