Fonction LZOpenFileA (lzexpand.h)

Crée, ouvre, rouvre ou supprime le fichier spécifié.

Syntaxe

INT LZOpenFileA(
  [in]  LPSTR      lpFileName,
  [out] LPOFSTRUCT lpReOpenBuf,
  [in]  WORD       wStyle
);

Paramètres

[in] lpFileName

Nom du fichier.

[out] lpReOpenBuf

Pointeur vers la structure OFSTRUCT qui doit recevoir des informations sur le fichier lors de la première ouverture du fichier. La structure peut être utilisée dans les appels suivants à la fonction LZOpenFile pour afficher le fichier ouvert.

Le membre szPathName de cette structure contient des caractères provenant du jeu de caractères oem d’origine.

[in] wStyle

Action à entreprendre. Ce paramètre peut prendre une ou plusieurs des valeurs suivantes.

Valeur Signification
OF_CANCEL
0x0800
Ignoré. Fourni uniquement pour la compatibilité avec Windows 16 bits. Utilisez le style OF_PROMPT pour afficher une boîte de dialogue contenant un bouton Annuler .
OF_CREATE
0x1000
Dirige LZOpenFile pour créer un fichier. Si le fichier existe déjà, il est tronqué à zéro longueur.
OF_DELETE
0x0200
Supprime le fichier.
OF_EXIST
0x4000
Ouvre le fichier, puis le ferme pour tester l’existence d’un fichier.
OF_PARSE
0x0100
Remplit la structure OFSTRUCT , mais n’effectue aucune autre action.
OF_PROMPT
0x2000
Affiche une boîte de dialogue si le fichier demandé n’existe pas. La boîte de dialogue informe l’utilisateur que le système ne trouve pas le fichier et qu’elle contient les boutons Réessayer et Annuler . En cliquant sur le bouton Annuler , LZOpenFile renvoie un message d’erreur de fichier introuvable.
OF_READ
0x0000
Ouvre le fichier pour un accès en lecture uniquement.
OF_READWRITE
0x0002
Ouvre le fichier pour la lecture et l’écriture.
OF_REOPEN
0x8000
Ouvre le fichier à l’aide d’informations dans la mémoire tampon de réouverture.
OF_SHARE_DENY_NONE
0x0040
Ouvre le fichier sans refuser l’accès en lecture ou en écriture à d’autres processus au fichier. LZOpenFile échoue si le fichier a été ouvert en mode de compatibilité par un autre processus.
OF_SHARE_DENY_READ
0x0030
Ouvre le fichier et refuse à d’autres processus l’accès en lecture au fichier. LZOpenFile échoue si le fichier a été ouvert en mode de compatibilité ou a été ouvert pour l’accès en lecture par tout autre processus.
OF_SHARE_DENY_WRITE
0x0020
Ouvre le fichier et refuse l’accès en écriture à d’autres processus au fichier. LZOpenFile échoue si le fichier a été ouvert en mode de compatibilité ou a été ouvert pour l’accès en écriture par tout autre processus.
OF_SHARE_EXCLUSIVE
0x0010
Ouvre le fichier en mode exclusif, ce qui refuse à d’autres processus l’accès en lecture et en écriture au fichier. LZOpenFile échoue si le fichier a été ouvert dans un autre mode pour l’accès en lecture ou en écriture, même par le processus en cours.
OF_WRITE
0x0001
Ouvre le fichier pour l'accès en écriture uniquement.

Valeur retournée

Si la fonction réussit et que la valeur spécifiée par le paramètre wStyle n’est pas OF_READ, la valeur de retour est un handle identifiant le fichier. Si le fichier est compressé et ouvert avec wStyle défini sur OF_READ, la valeur de retour est un handle de fichier spécial.

Si la fonction échoue, la valeur de retour est un code LZERROR_* . Ces codes ont des valeurs inférieures à zéro. Il n’existe aucune information d’erreur étendue pour cette fonction ; n’appelez pas GetLastError.

RemarqueLZOpenFile n’appelle ni SetLastError ni SetLastErrorEx ; par conséquent, son échec n’affecte pas le code de dernière erreur d’un thread.
 
Voici la liste des codes d’erreur que LZOpenFile peut retourner en cas d’échec.
Code/valeur de retour Description
LZERROR_BADINHANDLE
-1
Le handle identifiant le fichier source n’est pas valide. Impossible de lire le fichier.
LZERROR_GLOBALLOC
-5
Le nombre maximal de fichiers compressés ouverts a été dépassé ou la mémoire locale ne peut pas être allouée.

Remarques

Si le paramètre wStyle est l’indicateur OF_READ (ou OF_READ et l’un des indicateurs OF_SHARE_* ) et que le fichier est compressé, LZOpenFile appelle la fonction LZInit , qui effectue l’initialisation requise pour les opérations de décompression.

Le handle que cette fonction retourne n’est compatible qu’avec les fonctions dans Lz32.dll ; il ne doit pas être utilisé pour d’autres opérations de fichier.

Si LZOpenFile ne parvient pas à ouvrir le fichier spécifié par lpFileName, sur certaines versions de Windows, il tente d’ouvrir un fichier portant presque le même nom de fichier, sauf que le dernier caractère est remplacé par un trait de soulignement («  »). Ainsi, si une tentative d’ouverture de « MyProgram.exe » échoue, LZOpenFile tente d’ouvrir « MyProgram.ex ». Les packages d’installation remplacent souvent le trait de soulignement par la dernière lettre d’une extension de nom de fichier pour indiquer que le fichier est compressé. Par exemple, « MyProgram.exe » compressé peut être nommé « MyProgram.ex_ ». Pour déterminer le nom du fichier ouvert (le cas échéant), examinez le membre szPathName de la structure OFSTRUCT dans le paramètre lpReOpenBuf .

Dans Windows 8 et Windows Server 2012, cette fonction est prise en charge par les technologies suivantes.

Technologie Prise en charge
Protocole Server Message Block (SMB) 3.0 Oui
Basculement transparent SMB 3.0 (TFO) Oui
SMB 3.0 avec partages de fichiers avec montée en puissance parallèle (SO) Oui
Système de fichiers du volume partagé de cluster (CsvFS) Oui
Système de fichiers résilient (ReFS) Oui
 

CsvFs effectue les E/S redirigées pour les fichiers compressés.

Notes

L’en-tête lzexpand.h définit LZOpenFile en tant qu’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 lzexpand.h (inclure Windows.h)
Bibliothèque Lz32.lib
DLL Lz32.dll

Voir aussi

Compression et décompression de fichiers

Fonctions de gestion des fichiers

LZClose

LZInit

LZRead

OFSTRUCT