Fonction SetupGetFileCompressionInfoW (setupapi.h)
[Cette fonction est disponible pour une utilisation 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 l’installation d’applications. Utilisez plutôt Windows Installer pour développer des programmes d’installation d’applications. SetupAPI continue d’être utilisé pour l’installation 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, mais utilisez toujours SetupGetFileCompressionInfoEx.
Syntaxe
WINSETUPAPI DWORD SetupGetFileCompressionInfoW(
[in] PCWSTR SourceFileName,
[in, out] PWSTR *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 tel qu’il est nommé, le fichier est recherché avec jusqu’à deux autres noms « de forme compressée ». 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’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, plutôt que 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 sera la même que 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 n’est valide que 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, plutôt que 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 du 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 un 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.
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 |