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

Tipo di notifica.

Valore Significato
fdintCABINET_INFO
0x00
Informazioni generali sull'armadio.

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

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

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

  • psz1 punterà al nome del file continuato da un cabinet precedente
  • psz2 punterà al nome del cabinet in cui esiste il primo segmento del file
  • psz3 punterà 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 cabinet che hanno continuato da un gabinetto precedente. Questa notifica si verificherà solo quando FDICopy viene avviato nel secondo o successivo cabrio di una serie, con file continui da un archivio precedente. L'applicazione deve restituire 0 per esito positivo o -1 per indicare un 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 punterà al nome di un file nel cabinet
  • cb sarà uguale alla dimensione non compressa del file
  • data sarà uguale alla data di MS-DOS a 16 bit del file
  • tempo sarà uguale all'ora di MS-DOS a 16 bit del file
  • attribs sarà uguale agli attributi di MS-DOS a 16 bit del file. Inoltre, il flag _A_NAME_IS_UTF viene impostato se il nome del file deve essere interpretato come UTF-8.

Si noti che i membri precedenti provengono direttamente dal file cab. Se il file cab è dannoso, il nome potrebbe contenere caratteri di nome file non validi o dannosi.

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 diverso da zero (e non negativo-uno) che indica dove scrivere il file. L'handle di file deve essere compatibile con la funzione PFNCLOSE fornita per FDICreare. La notifica fdintCOPY_FILE viene chiamata per ogni file che inizia all'interno dell'archivio cabrio corrente, offrendo all'applicazione la possibilità di richiedere che il file venga copiato o ignorato.

fdintCLOSE_FILE_INFO
0x03
Chiudere il file, impostare le informazioni pertinenti.

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

  • psz1 punterà al nome di un file nel cabinet
  • fdintCOPY_FILE
  • data data sarà uguale alla data di MS-DOS a 16 bit del file
  • tempo tempo sarà uguale all'ora di MS-DOS a 16 bit del file
  • attributi di di attribs sarà uguale agli attributi di 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 (utilizzando il handle di) e impostare la data, l'ora e gli attributi del file. L'applicazione deve restituire TRUE per l'esito positivo e false o -1 per interrompere FDICopy. FDI presuppone che il file di destinazione sia stato chiuso, anche se il callback restituisce un errore; FdI non tenterà di usare PFNCLOSE per chiudere il file.
fdintNEXT_CABINET
0x04
Il file ha continuato a passare all'archivio successivo.

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

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

Quando questa funzione torna a FDI, fdi verificherà che il setID e iCabinet campi del cabinet fornito corrispondano ai valori previsti per tale cabinet. In caso contrario, fdI continuerà a inviare fdintNEXT_CABINET messaggi di notifica con il campo fdie impostato su FDIERROR_WRONG_CABINET, fino a quando non viene specificato il file CAB corretto o fino a quando questa funzione non restituisce -1 e interrompe la chiamata FDICopy. Se, dopo la restituzione da questa funzione, il file cab 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 un errore, che interromperà FDICopy.
fdintENUMERATE
0x05
Stato dell'enumerazione.

Valore restituito

Nessuno

Fabbisogno

Requisito Valore
piattaforma di destinazione Finestre
intestazione fdi.h

Vedere anche

FDICopy

FDINOTIFICATION