La macro FNFDINOTIFY fournit la déclaration permettant à la fonction de notification de rappel définie par l’application de mettre à jour l’application sur le status du décodeur.
Syntaxe
void FNFDINOTIFY(
fn
);
Paramètres
fn
Type de notification.
Valeur
Signification
fdintCABINET_INFO
0x00
Informations générales sur le cabinet.
Lorsque cette valeur est définie, la structure FDINOTIFICATION est remplie avec les informations suivantes :
psz1 pointe vers le nom de l’armoire suivante (à l’exception des informations de chemin d’accès)
psz2 pointe vers le nom du disque suivant
psz3 pointe vers le nom du chemin d’accès de l’armoire
setID est égal à l’ID de jeu de l’armoire actuelle
iCabinet est égal au numéro d’armoire dans l’ensemble d’armoires (0 pour la première armoire, 1 pour la deuxième armoire, etc.)
L’application doit retourner 0 pour indiquer la réussite, ou -1 pour indiquer l’échec, ce qui abandonnera FDICopy. Une notification fdintCABINET_INFO sera fournie une fois pour chaque armoire ouverte par FDICopy; cela inclut les armoires de continuation ouvertes en raison de fichiers couvrant les limites du cabinet.
fdintPARTIAL_FILE
0x01
Le premier fichier dans le cabinet est une continuation d’un fichier du cabinet précédent.
Lorsque cette valeur est définie, la structure FDINOTIFICATION est remplie avec les informations suivantes :
psz1 pointe vers le nom du fichier qui continue à partir d’une armoire précédente
psz2 pointe vers le nom de l’armoire sur laquelle se trouve le premier segment du fichier
psz3 pointe vers le nom du disque sur lequel se trouve le premier segment du fichier
La notification fdintPARTIAL_FILE est appelée pour les dossiers au début d’un cabinet qui ont continué d’un cabinet précédent. Cette notification ne se produit que lorsque FDICopy est démarré sur la deuxième armoire ou la suivante d’une série, dont les fichiers se sont poursuivis à partir d’un cabinet précédent. L’application doit retourner 0 pour la réussite, ou -1 pour indiquer l’échec.
fdintCOPY_FILE
0x02
Informations identifiant le fichier à copier.
Lorsque cette valeur est définie, la structure FDINOTIFICATION est remplie avec les informations suivantes :
psz1 pointe vers le nom d’un fichier dans l’armoire ; cb est égal à la taille non compressée du fichier
la date est égale à la date MS-DOS 16 bits du fichier
time est égal à l’heure MS-DOS 16 bits du fichier
les attribs sont égales aux attributs MS-DOS 16 bits du fichier
L’application doit retourner l’une des trois valeurs suivantes : 0 pour ignorer (c’est-à-dire ne pas copier) le fichier ; -1 (négatif) pour abandonner FDICopy; ou un handle de fichier différent de zéro (et non négatif- un) qui indique où écrire le fichier. Le handle de fichier doit être compatible avec la fonction PFNCLOSE fournie à FDICreate. La notification fdintCOPY_FILE est appelée pour chaque fichier qui démarre dans l’armoire actuelle, ce qui permet à l’application de demander que le fichier soit copié ou ignoré.
fdintCLOSE_FILE_INFO
0x03
Fermez le fichier, définissez les informations pertinentes.
Lorsque cette valeur est définie, la structure FDINOTIFICATION est remplie avec les informations suivantes :
psz1 pointe vers le nom d’un fichier dans l’armoire
hf sera un handle de fichier (qui provient de fdintCOPY_FILE)
date égale la date MS-DOS 16 bits du fichier
heure égale à l’heure MS-DOS 16 bits du fichier
Les attributs attribs sont égaux aux attributs MS-DOS 16 bits du fichier (moins le _A_EXEC bit)
cb est égal à 0 ou 1, indiquant si le fichier doit être exécuté après l’extraction (1) ou non (0)
Il incombe à l’application d’exécuter le fichier si cb est égal à 1. La notification fdintCLOSE_FILE_INFO est appelée une fois que toutes les données ont été écrites dans un fichier cible. L’application doit fermer le fichier (à l’aide du handle hf fourni) et définir la date, l’heure et les attributs du fichier. L’application doit retourner TRUE pour réussir, et FALSE ou -1 pour abandonner FDICopy. L’IDE suppose que le fichier cible a été fermé, même si ce rappel retourne un échec ; FDI ne tentera pas d’utiliser PFNCLOSE pour fermer le fichier.
fdintNEXT_CABINET
0x04
Le fichier a continué à l’armoire suivante.
Lorsque cette valeur est définie, la structure FDINOTIFICATION est remplie avec les informations suivantes :
psz1 pointe vers le nom de l’armoire suivante sur laquelle le fichier actuel est poursuivi
psz2 sera un handle de fichier (qui provient de fdintCOPY_FILE)
psz3 pointe vers les informations de chemin d’accès de l’armoire
fdie est égal à une valeur de réussite ou d’erreur
Cette notification est appelée uniquement si fdintCOPY_FILE est invité à copier un fichier, qui est poursuivi à partir d’une armoire suivante, vers l’armoire actuelle. Étant donné qu’il est possible pour l’application de modifier le nom de l’armoire, il est important que le nom du chemin d’accès de l’armoire, indiqué par psz3, soit validé avant d’être retourné. En outre, l’application doit s’assurer que l’armoire existe et qu’elle est lisible avant de revenir; si nécessaire, l’application doit émettre une invite de modification de disque pour confirmer.
Lorsque cette fonction revient à IDE, FDI vérifie que les champs setID et iCabinet de l’armoire fournie correspondent aux valeurs attendues pour cette armoire. Si ce n’est pas le cas, l’IED continuera d’envoyer des messages de notification fdintNEXT_CABINET avec le champ fdie défini sur FDIERROR_WRONG_CABINET, jusqu’à ce que le fichier d’armoire approprié soit spécifié, ou jusqu’à ce que cette fonction retourne -1 et abandonne l’appel FDICopy . Si, après le retour de cette fonction, le fichier d’armoire n’est pas présent, lisible ou a été endommagé, le champ fdie est égal à l’une des valeurs suivantes :
FDIERROR_CABINET_NOT_FOUND
FDIERROR_NOT_A_CABINET
FDIERROR_UNKNOWN_CABINET_VERSION
FDIERROR_CORRUPT_CABINET
FDIERROR_BAD_COMPR_TYPE
FDIERROR_RESERVE_MISMATCH
FDIERROR_WRONG_CABINET
S’il n’y a pas d’erreur, fdie est égal FDIERROR_NONE. L’application doit retourner 0 pour indiquer la réussite, ou -1 pour indiquer l’échec, ce qui abandonnera FDICopy.