Création d’une routine de rappel d’armoire
Étant donné que l’API d’installation ne fournit pas de routine de rappel d’armoire par défaut, vous devez fournir une routine. La routine de rappel requise par la fonction SetupIterateCabinet doit avoir le même formulaire que celles pointées par FileCallback.
Voici la syntaxe utilisée par SetupIterateCabinet pour envoyer une notification à la routine de rappel.
MsgHandler( //the specified callback routine
Context, //context used by the callback routine
Notification, //cabinet notification
Param1, //additional notification information
Param2 //additional notification information
);
Le paramètre Context est un pointeur void vers une variable ou une structure de contexte qui peut être utilisé par la routine de rappel pour stocker des informations qui doivent persister entre les appels suivants à la routine de rappel.
L’implémentation de ce contexte est spécifiée par la routine de rappel, et elle n’est jamais référencée ou modifiée par SetupIterateCabinet.
Le paramètre Notification est un entier non signé et sera l’une des valeurs suivantes.
Notification | Description |
---|---|
SPFILENOTIFY_FILEEXTRACTED | Le fichier a été extrait de l’armoire. |
SPFILENOTIFY_FILEINCABINET | Un fichier est rencontré dans l’armoire. |
SPFILENOTIFY_NEEDNEWCABINET | Le fichier actuel est poursuivi dans le cabinet suivant. |
Les deux derniers paramètres, Param1 et Param2, sont également des entiers non signés et contiennent des informations supplémentaires relatives à la notification. Pour plus d’informations sur les notifications envoyées par SetupIterateCabinet, consultez Notifications de fichier cabinet.
Une routine SP_FILE_NOTIFY_CALLBACK retourne un entier non signé. La routine de rappel de l’armoire doit retourner l’une des valeurs suivantes en fonction de la notification.
Pour la notification SPFILENOTIFY_FILEINCABINET, SetupIterateCabinet s’attend à ce que l’une des valeurs suivantes soit retournée par la routine de rappel.
Valeur | Signification |
---|---|
FILEOP_ABORT | Abandonner le traitement de l’armoire. |
FILEOP_DOIT | Extrayez le fichier actif. |
FILEOP_SKIP | Ignorez le fichier actif. |
Pour les notifications SPFILENOTIFY_NEEDNEWCABINET et SPFILENOTIFY_FILEEXTRACTED, SetupIterateCabinet s’attend à ce que l’une des valeurs suivantes soit retournée par la routine de rappel.
Valeur | Signification |
---|---|
NO_ERROR | Aucune erreur n’a été rencontrée, poursuivez le traitement de l’armoire. |
ERROR_XXX | Une erreur du type spécifié s’est produite. La fonction SetupIterateCabinet retourne FALSE et le code d’erreur spécifié est retourné par un appel à GetLastError. |
Si la routine de rappel retourne FILEOP_DOIT, la routine doit également fournir un chemin cible complet. Pour plus d’informations , consultez SPFILENOTIFY_FILEINCABINET.