Macro FNFDINOTIFY (fdi.h)

La macro FNFDINOTIFY fornisce la dichiarazione per la funzione di notifica di callback definita dall'applicazione per aggiornare l'applicazione sullo stato del decodificatore.

Sintassi

void FNFDINOTIFY(
   fn
);

Parametri

fn

Il tipo di notifica.

Valore Significato
fdintCABINET_INFO
0x00
Informazioni generali sul gabinetto.

Quando questo valore viene impostato, la struttura FDINOTIFICATION viene popolata con le informazioni seguenti:

  • psz1 punta al nome del successivo gabinetto (escluse le informazioni sul percorso)
  • psz2 punta al nome del disco successivo
  • psz3 punta al nome del percorso del gabinetto
  • setID sarà uguale all'ID set del gabinetto corrente
  • iCabinet sarà uguale al numero di gabinetto all'interno del set di gabinetto (0 per il primo gabinetto, 1 per il secondo gabinetto e così via)
L'applicazione deve restituire 0 per indicare l'esito positivo o -1 per indicare l'errore, che interromperà FDICopy. Una notifica di fdintCABINET_INFO verrà fornita una volta per ogni gabinetto aperto da FDICopy; sono inclusi i contenitori di continuazione aperti a causa di file che coprono i limiti del gabinetto.
fdintPARTIAL_FILE
0x01
Il primo file nel gabinetto è una continuazione di un file dal gabinetto precedente.

Quando questo valore viene impostato, la struttura FDINOTIFICATION viene popolata con le informazioni seguenti:

  • psz1 punta al nome del file continuato da un archivio precedente
  • psz2 punta al nome del gabinetto su cui esiste il primo segmento del file
  • psz3 punta al nome del disco in cui esiste il primo segmento del file
La notifica fdintPARTIAL_FILE viene chiamata per i file all'inizio di un archivio che hanno continuato da un archivio precedente. Questa notifica si verifica solo quando FDICopy viene avviato nel secondo o successivo gabinetto in una serie, che ha file continuati da un archivio precedente. L'applicazione deve restituire 0 per esito positivo o -1 per indicare l'errore.
fdintCOPY_FILE
0x02
Informazioni che identificano il file da copiare.

Quando questo valore viene impostato, la struttura FDINOTIFICATION viene popolata con le informazioni seguenti:

  • psz1 punta al nome di un file nel gabinetto; cb sarà uguale alla dimensione non compressa del file
  • data uguale alla data MS-DOS a 16 bit del file
  • tempo uguale al tempo di MS-DOS a 16 bit del file
  • attribs corrisponderà agli attributi MS-DOS a 16 bit del file
L'applicazione deve restituire uno dei tre valori; 0 per ignorare (ad esempio, non copiare) il file; -1 (uno negativo) per interrompere FDICopy; o un handle di file non zero (e non negativo-uno) che indica dove scrivere il file. L'handle di file deve essere compatibile con la funzione PFNCLOSE fornita a FDICrea. La notifica di fdintCOPY_FILE viene chiamata per ogni file che inizia all'interno dell'archivio corrente, fornendo la possibilità all'applicazione di richiedere che il file venga copiato o ignorato.
fdintCLOSE_FILE_INFO
0x03
Chiudere il file, impostare informazioni pertinenti.

Quando questo valore viene impostato, la struttura FDINOTIFICATION viene popolata con le informazioni seguenti:

  • psz1 punta al nome di un file nel gabinetto
  • hf sarà un handle di file (che ha origine da fdintCOPY_FILE)
  • Data di data uguale alla data di MS-DOS a 16 bit del file
  • tempo uguale al tempo di MS-DOS a 16 bit del file
  • gli attributi attribs equivalgono agli attributi MS-DOS a 16 bit del file (meno il bit di _A_EXEC)
  • cb sarà uguale a 0 o 1, che indica se il file deve essere eseguito dopo l'estrazione (1) o meno (0)
È responsabilità dell'applicazione eseguire il file se cb è uguale a 1. La notifica fdintCLOSE_FILE_INFO viene chiamata dopo che tutti i dati sono stati scritti in un file di destinazione. L'applicazione deve chiudere il file (usando l'handle hf fornito) e impostare la data, l'ora e gli attributi del file. L'applicazione deve restituire TRUE per esito positivo e FALSE o -1 per interrompere FDICopy. L'ide presuppone che il file di destinazione sia stato chiuso, anche se questo callback restituisce un errore; FdI non tenterà di usare PFNCLOSE per chiudere il file.
fdintNEXT_CABINET
0x04
Il file continuava a eseguire il gabinetto successivo.

Quando questo valore viene impostato, la struttura FDINOTIFICATION viene popolata con le informazioni seguenti:

  • psz1 punta al nome del successivo gabinetto in cui viene continuato il file corrente
  • psz2 sarà un handle di file (che ha origine da fdintCOPY_FILE)
  • psz3 punta alle informazioni sul percorso del gabinetto
  • fdie sarà uguale a un valore di esito positivo o di errore
Questa notifica viene chiamata solo se fdintCOPY_FILE viene incaricato di copiare un file, che viene continuato da un archivio successivo, al gabinetto corrente. Poiché è possibile che l'applicazione modifichi il nome del gabinetto, è importante che il nome del percorso del gabinetto, indicato da psz3, venga convalidato prima che venga restituito. Inoltre, l'applicazione deve assicurarsi che l'archivio esista e sia leggibile prima di restituire; se necessario, l'applicazione deve emettere una richiesta di modifica del disco per confermare.

Quando questa funzione viene restituita all'istanza di fdI, il setID e iCabinet campi del gabinetto fornito corrispondono ai valori previsti per tale archivio. In caso contrario, l'istanza fdI continuerà a inviare messaggi di notifica fdintNEXT_CABINET con il campo fdie impostato su FDIERROR_WRONG_CABINET, fino a quando non viene specificato il file di cabinet corretto o fino a quando questa funzione restituisce -1 e interrompe la chiamata FDICopy . Se, dopo aver restituito da questa funzione, il file di cabinet non è presente, leggibile o danneggiato, il campo fdie sarà uguale a uno dei valori seguenti:

  • 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
Se non si è verificato alcun errore, fdie sarà uguale a FDIERROR_NONE. L'applicazione deve restituire 0 per indicare l'esito positivo o -1 per indicare l'errore, che interromperà FDICopy.
fdintENUMERATE
0x05
Stato di enumerazione.

Valore restituito

nessuno

Requisiti

   
Piattaforma di destinazione Windows
Intestazione fdi.h

Vedi anche

FDICopy

FDINOTIFICATION