SetupGetFileCompressionInfoA, fonction (setupapi.h)
[Cette fonction est disponible pour une utilisation dans les systèmes d’exploitation indiqués dans la section Configuration requise. Il 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 des 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, 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 n’est pas trouvé sur le média source exactement comme nommé, le fichier est recherché avec jusqu’à deux autres noms « compressé-form ». 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 d’accès complet du fichier qu’il 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 de SetupAPI pour libérer la mémoire allouée par cette fonction, au lieu d’utiliser LocalFree. Consultez la section Remarques.
[in, out] SourceFileSize
Pointeur vers une variable dans laquelle cette fonction retourne la taille du fichier sous 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 n’est pas 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 de retour
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’erreur étendues, appelez GetLastError.
Remarques
N’utilisez pas SetupGetFileCompressionInfo, utilisez toujours SetupGetFileCompressionInfoEx.
Étant donné que SetupGetFileCompressionInfo détermine la compression en référençant le fichier physique, votre application de configuration 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 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 en utilisant 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);
Note
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. Le mélange 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.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows XP [applications de bureau uniquement] |
serveur minimum pris en charge | Windows Server 2003 [applications de bureau uniquement] |
plateforme cible | Windows |
d’en-tête | setupapi.h |
bibliothèque | Setupapi.lib |
DLL | Setupapi.dll |