Condividi tramite


Funzione SetupGetFileCompressionInfoA (setupapi.h)

[Questa funzione è disponibile per l'uso nei sistemi operativi indicati nella sezione Requisiti. È possibile che in versioni successive sia stata modificata o non sia più disponibile. SetupAPI non deve più essere usato per l'installazione di applicazioni. Usare invece Windows Installer per lo sviluppo di programmi di installazione di 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 SetupGetFileCompressionInfoA(
  [in]      PCSTR  SourceFileName,
  [in, out] PSTR   *ActualSourceFileName,
  [in, out] PDWORD SourceFileSize,
  [in, out] PDWORD TargetFileSize,
  [in, out] PUINT  CompressionType
);

Parametri

[in] SourceFileName

Nome file del file su cui sono necessarie 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-form". 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 relativa alle 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 del file. Il codice di errore può essere uno dei valori seguenti.

Per informazioni dettagliate sull'errore, chiamare GetLastError.

Commenti

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, è necessario risolvere il problema usando MyFree.

Di seguito è riportato un esempio di come ottenere la funzione MyFree dalla 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 preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.

Requisiti

Requisito Valore
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione setupapi.h
Libreria Setupapi.lib
DLL Setupapi.dll

Vedi anche

Funzioni

Panoramica

SetupDecompressOrCopyFile