Partager via


LockFile, fonction (fileapi.h)

Verrouille le fichier spécifié pour un accès exclusif par le processus appelant.

Pour spécifier des options supplémentaires, par exemple la création d’un verrou partagé ou pour une opération de blocage sur échec, utilisez la fonction LockFileEx .

Syntaxe

BOOL LockFile(
  [in] HANDLE hFile,
  [in] DWORD  dwFileOffsetLow,
  [in] DWORD  dwFileOffsetHigh,
  [in] DWORD  nNumberOfBytesToLockLow,
  [in] DWORD  nNumberOfBytesToLockHigh
);

Paramètres

[in] hFile

Descripteur du fichier. Le handle de fichier doit avoir été créé avec le droit d’accès GENERIC_READ ou GENERIC_WRITE . Pour plus d’informations, consultez Sécurité des fichiers et droits d’accès.

[in] dwFileOffsetLow

32 bits d’ordre inférieur du décalage d’octet de début dans le fichier où le verrou doit commencer.

[in] dwFileOffsetHigh

32 bits d’ordre élevé du décalage d’octet de début dans le fichier où le verrou doit commencer.

[in] nNumberOfBytesToLockLow

32 bits d’ordre inférieur de la longueur de la plage d’octets à verrouiller.

[in] nNumberOfBytesToLockHigh

32 bits d’ordre élevé de la longueur de la plage d’octets à verrouiller.

Valeur retournée

Si la fonction réussit, la valeur de retour est différente de zéro (TRUE).

Si la fonction échoue, la valeur de retour est zéro (FALSE). Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

Notes

Si l’appel à LockFile se termine de manière synchrone, une entrée d’achèvement peut ne pas être mise en file d’attente lorsqu’un port d’achèvement est associé au handle de fichier.

La fonction UnlockFile déverrouille une région de fichiers verrouillée par LockFile.

Le verrouillage d’une région d’un fichier donne aux threads du processus de verrouillage un accès exclusif à la région spécifiée à l’aide de ce handle de fichier. Si le handle de fichier est hérité par un processus créé par le processus de verrouillage, le processus enfant n’a pas accès à la région verrouillée. Si le processus de verrouillage ouvre le fichier une deuxième fois, il ne peut pas accéder à la région spécifiée via ce deuxième handle tant qu’il n’a pas déverrouillé la région.

Le verrouillage d’une région d’un fichier n’empêche pas la lecture ou l’écriture à partir d’une vue de fichier mappée.

Vous pouvez verrouiller les octets qui se trouvent au-delà de la fin du fichier actif. Cela est utile pour coordonner l’ajout d’enregistrements à la fin d’un fichier.

Les verrous exclusifs ne peuvent pas chevaucher une région verrouillée existante d’un fichier. Pour plus d’informations, consultez LockFileEx.

Si LockFile ne peut pas verrouiller une région d’un fichier, il retourne zéro immédiatement. Il ne bloque pas. Pour émettre une demande de verrouillage de fichier qui sera bloquée jusqu’à ce que le verrou soit acquis, utilisez LockFileEx sans l’indicateur LOCKFILE_FAIL_IMMEDIATELY .

Si un processus se termine avec une partie d’un fichier verrouillé ou ferme un fichier dont les verrous sont en suspens, les verrous sont déverrouillés par le système d’exploitation. Toutefois, le temps nécessaire au système d’exploitation pour déverrouiller ces verrous dépend des ressources système disponibles. Par conséquent, il est recommandé que votre processus déverrouille explicitement tous les fichiers qu’il a verrouillés lorsqu’il se termine. Si ce n’est pas le cas, l’accès à ces fichiers peut être refusé si le système d’exploitation ne les a pas encore déverrouillés.

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
 

Exemples

Pour obtenir un exemple, consultez Ajout d’un fichier à un autre fichier.

Spécifications

   
Client minimal pris en charge Windows XP [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête fileapi.h (inclure Windows.h)
Bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

Verrouillage et déverrouillage de plages d’octets dans des fichiers

CreateFile

Fonctions de gestion des fichiers

LockFileEx

UnlockFile