Partager via


SetupGetFileCompressionInfoA, fonction (setupapi.h)

[Cette fonction peut être utilisée dans les systèmes d’exploitation indiqués dans la section Configuration requise. Il sera peut-être modifié ou indisponible dans les versions ultérieures. SetupAPI ne doit plus être utilisé pour installer des applications. Utilisez plutôt Windows Installer pour développer des programmes d’installation d’applications. SetupAPI continue d’être utilisé pour installer les pilotes de périphérique.]

La fonction SetupGetFileCompressionInfo examine un fichier physique pour déterminer s’il est compressé et obtient son chemin d’accès complet, sa taille et la taille du fichier cible non compressé.

Notez que cette fonction est obsolète et a été remplacée par SetupGetFileCompressionInfoEx. N’utilisez pas SetupGetFileCompressionInfo, mais utilisez toujours SetupGetFileCompressionInfoEx.

Syntaxe

WINSETUPAPI DWORD SetupGetFileCompressionInfoA(
  [in]      PCSTR  SourceFileName,
  [in, out] PSTR   *ActualSourceFileName,
  [in, out] PDWORD SourceFileSize,
  [in, out] PDWORD TargetFileSize,
  [in, out] PUINT  CompressionType
);

Paramètres

[in] SourceFileName

Nom de fichier du fichier sur lequel les informations sont requises. Si le fichier est introuvable sur le média source exactement comme nommé, le fichier est recherché avec jusqu’à deux autres noms « compressés ». Par exemple, si le fichier est F:\x86\cmd.exe et qu’il est introuvable, F :\mpis\cmd.ex_ est recherché et, s’il est introuvable, une recherche est effectuée pour F :\x86\cmd.ex$. Vous devez utiliser une chaîne terminée par null.

[in, out] ActualSourceFileName

Pointeur vers une variable qui reçoit le chemin complet du fichier qu’elle a pu localiser. L’appelant peut libérer le pointeur avec un appel à LocalFree. Le chemin d’accès est valide uniquement si la fonction retourne NO_ERROR. Notez que si la version de SetupAPI.dll est inférieure à 5.0.2195, l’appelant doit utiliser la fonction exportée MyFree à partir de SetupAPI pour libérer la mémoire allouée par cette fonction, au lieu d’utiliser LocalFree. Consultez la section Notes.

[in, out] SourceFileSize

Pointeur vers une variable dans laquelle cette fonction retourne la taille du fichier dans sa forme actuelle, qui est la taille actuelle du fichier nommé par ActualSourceFileName. La taille est déterminée en examinant le fichier source ; il n’est pas récupéré à partir d’un fichier INF. La taille du fichier source est valide uniquement si la fonction retourne NO_ERROR.

[in, out] TargetFileSize

Pointeur vers une variable dans laquelle cette fonction retourne la taille que le fichier occupera lorsqu’il est décompressé ou copié. Si le fichier n’est pas compressé, cette valeur est identique à SourceFileSize. La taille est déterminée en examinant le fichier ; il n’est pas récupéré à partir d’un fichier INF. La taille du fichier cible est valide uniquement si la fonction retourne NO_ERROR.

[in, out] CompressionType

Pointeur vers une variable dans laquelle cette fonction retourne une valeur indiquant le type de compression utilisé sur ActualSourceFileName. Le type de compression est valide uniquement si la fonction retourne NO_ERROR. La valeur peut être l’un des indicateurs suivants.

FILE_COMPRESSION_NONE

Le fichier source n’est pas compressé avec un algorithme de compression reconnu.

FILE_COMPRESSION_WINLZA

Le fichier source est compressé avec la compression LZ.

FILE_COMPRESSION_MSZIP

Le fichier source est compressé avec la compression MSZIP.

Valeur retournée

La fonction retourne un code d’erreur système qui indique le résultat de la recherche de fichiers. Le code d’erreur peut être l’une des valeurs suivantes.

Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

Remarques

N’utilisez pas SetupGetFileCompressionInfo, mais utilisez toujours SetupGetFileCompressionInfoEx.

Étant donné que SetupGetFileCompressionInfo détermine la compression en référençant le fichier physique, votre application d’installation doit s’assurer que le fichier est présent avant d’appeler SetupGetFileCompressionInfo.

Notez que si la version de SetupAPI.dll est inférieure à 5.0.2195, l’appelant doit utiliser la fonction exportée MyFree à partir de SetupAPI pour libérer la mémoire allouée par cette fonction, au lieu d’utiliser LocalFree. Si l’appel à LocalFree provoque une violation d’accès, vous devez résoudre le problème à l’aide de MyFree.

Voici un exemple d’obtention de la fonction MyFree à partir de l'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); 

Notes

L’en-tête setupapi.h définit SetupGetFileCompressionInfo comme alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. La combinaison de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête setupapi.h
Bibliothèque Setupapi.lib
DLL Setupapi.dll

Voir aussi

Fonctions

Vue d'ensemble

SetupDecompressOrCopyFile