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