Condividi tramite


Funzione SetupGetFileCompressionInfoW (setupapi.h)

[Questa funzione è disponibile per l'uso nei sistemi operativi indicati nella sezione Requisiti. Potrebbe essere modificato o non disponibile nelle versioni successive. SetupAPI non deve più essere usata per l'installazione di applicazioni. Usare invece Windows Installer per lo sviluppo di programmi di installazione delle applicazioni. SetupAPI continua a essere usato per l'installazione dei driver di dispositivo.

La funzione SetupGetFileCompressionInfo esamina un file fisico per determinare se è compresso e ottiene il percorso completo, le dimensioni e le dimensioni del file di destinazione non compresso.

Si noti che questa funzione è obsoleta ed è stata sostituita da SetupGetFileCompressionInfoEx. Non usare SetupGetFileCompressionInfo, usare sempre SetupGetFileCompressionInfoEx.

Sintassi

WINSETUPAPI DWORD SetupGetFileCompressionInfoW(
  [in]      PCWSTR SourceFileName,
  [in, out] PWSTR  *ActualSourceFileName,
  [in, out] PDWORD SourceFileSize,
  [in, out] PDWORD TargetFileSize,
  [in, out] PUINT  CompressionType
);

Parametri

[in] SourceFileName

Nome file del file su cui sono necessarie le informazioni. Se il file non viene trovato nel supporto di origine esattamente come denominato, il file viene cercato con un massimo di due nomi alternativi "compressi".If the file is not found on the source media exactly as named, the file is searched for up to two alternate "compressed-form" names. Ad esempio, se il file è F:\x86\cmd.exe e non viene trovato, F:\mpis\cmd.ex_ viene cercato e, se non viene trovato, viene eseguita una ricerca per F:\x86\cmd.ex$. È consigliabile usare una stringa con terminazione Null.

[in, out] ActualSourceFileName

Puntatore a una variabile che riceve il percorso completo del file che è stato in grado di individuare. Il chiamante può liberare il puntatore con una chiamata a LocalFree. Il percorso è valido solo se la funzione restituisce NO_ERROR. Si noti che se la versione di SetupAPI.dll è minore di 5.0.2195, il chiamante deve usare la funzione esportata MyFree da SetupAPI per liberare la memoria allocata da questa funzione, anziché usare LocalFree. Vedere la sezione Osservazioni.

[in, out] SourceFileSize

Puntatore a una variabile in cui questa funzione restituisce le dimensioni del file nel formato corrente, ovvero le dimensioni correnti del file denominato da ActualSourceFileName. Le dimensioni sono determinate esaminando il file di origine; non viene recuperato da un file INF. Le dimensioni del file di origine sono valide solo se la funzione restituisce NO_ERROR.

[in, out] TargetFileSize

Puntatore a una variabile in cui questa funzione restituisce le dimensioni che il file occupa quando non viene compresso o copiato. Se il file non è compresso, questo valore sarà uguale a SourceFileSize. Le dimensioni sono determinate esaminando il file; non viene recuperato da un file INF. Le dimensioni del file di destinazione sono valide solo se la funzione restituisce NO_ERROR.

[in, out] CompressionType

Puntatore a una variabile in cui questa funzione restituisce un valore che indica il tipo di compressione usato in ActualSourceFileName. Il tipo di compressione è valido solo se la funzione restituisce NO_ERROR. Il valore può essere uno dei flag seguenti.

FILE_COMPRESSION_NONE

Il file di origine non viene compresso con un algoritmo di compressione riconosciuto.

FILE_COMPRESSION_WINLZA

Il file di origine viene compresso con la compressione LZ.

FILE_COMPRESSION_MSZIP

Il file di origine viene compresso con la compressione MSZIP.

Valore restituito

La funzione restituisce un codice di errore di sistema che indica il risultato della ricerca di file. Il codice di errore può essere uno dei valori seguenti.

Per ottenere informazioni estese sull'errore, chiamare GetLastError.

Osservazioni

Non usare SetupGetFileCompressionInfo, usare sempre SetupGetFileCompressionInfoEx.

Poiché SetupGetFileCompressionInfo determina la compressione facendo riferimento al file fisico, l'applicazione di installazione deve assicurarsi che il file sia presente prima di chiamare SetupGetFileCompressionInfo.

Si noti che se la versione di SetupAPI.dll è minore di 5.0.2195, il chiamante deve usare la funzione esportata MyFree da SetupAPI per liberare la memoria allocata da questa funzione, anziché usare LocalFree. Se la chiamata a LocalFree causa una violazione di accesso, è consigliabile risolvere il problema usando MyFree.

Di seguito è riportato un esempio di come ottenere la funzione MyFree dal SetupAPI.dll:

typedef VOID (WINAPI* MYFREEFUNC)(LPVOID lpBuff);
   MYFREEFUNC MyFree;

   HMODULE hDll=NULL;
   hDll = GetModuleHandle("SETUPAPI.DLL");
   MyFree = (MYFREEFUNC)GetProcAddress(hDll, "MyFree");
   ...
   other code here to prepare file queue
   ...
   PTSTR lpActualSourceFileName;
   SetupGetFileCompressionInfo(...,&lpActualSourceFileName,...,...,...);
   ...
   MyFree(lpActualSourceFileName); 

Nota

L'intestazione setupapi.h definisce SetupGetFileCompressionInfo come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.

Fabbisogno

Requisito Valore
client minimo supportato Windows XP [solo app desktop]
server minimo supportato Windows Server 2003 [solo app desktop]
piattaforma di destinazione Finestre
intestazione setupapi.h
libreria Setupapi.lib
dll Setupapi.dll

Vedere anche

Funzioni

panoramica

SetupDecompressOrCopyFile