Partager via


Méthode IStream ::LockRegion (objidl.h)

La méthode LockRegion restreint l’accès à une plage spécifiée d’octets dans le flux. La prise en charge de cette fonctionnalité est facultative, car certains systèmes de fichiers ne la fournissent pas.

Syntaxe

HRESULT LockRegion(
  [in] ULARGE_INTEGER libOffset,
  [in] ULARGE_INTEGER cb,
  [in] DWORD          dwLockType
);

Paramètres

[in] libOffset

Entier qui spécifie le décalage d’octet pour le début de la plage.

[in] cb

Entier qui spécifie la longueur de la plage, en octets, à restreindre.

[in] dwLockType

Spécifie les restrictions demandées sur l’accès à la plage.

Valeur retournée

Cette méthode peut retourner l’une de ces valeurs.

Code de retour Description
S_OK La plage d’octets spécifiée a été verrouillée.
E_PENDING Stockage asynchrone uniquement : une partie ou la totalité des données du flux n’est actuellement pas disponible.
STG_E_INVALIDFUNCTION Le verrouillage n’est pas du tout pris en charge ou le type spécifique de verrou demandé n’est pas pris en charge.
STG_E_LOCKVIOLATION Le verrou demandé est pris en charge, mais ne peut pas être accordé en raison d’un verrou existant.
STG_E_REVERTED L’objet a été invalidé par une opération de restauration au-dessus de lui dans l’arborescence des transactions.

Remarques

La plage d’octets du flux peut être étendue. Le verrouillage d’une plage étendue pour le flux est utile en tant que méthode de communication entre différentes instances du flux sans modifier les données qui font réellement partie du flux.

Trois types de verrouillage peuvent être pris en charge : le verrouillage pour exclure d’autres enregistreurs, le verrouillage pour exclure d’autres lecteurs ou rédacteurs et le verrouillage qui permet à un seul demandeur d’obtenir un verrou sur la plage donnée, qui est généralement un alias pour l’un des deux autres types de verrous. Un flux donné instance peut prendre en charge l’un des deux premiers types, ou les deux. Le type de verrou est spécifié par dwLockType, à l’aide d’une valeur de l’énumération LOCKTYPE .

Toute région verrouillée avec IStream ::LockRegion doit être déverrouillée explicitement ultérieurement en appelant IStream ::UnlockRegion avec exactement les mêmes valeurs pour les paramètres libOffset, cb et dwLockType . La région doit être déverrouillée avant que le flux ne soit libéré. Deux régions adjacentes ne peuvent pas être verrouillées séparément, puis déverrouillées avec un seul appel de déverrouillage.

Notes aux appelants

Étant donné que le type de verrouillage pris en charge est facultatif et peut varier selon les implémentations d’IStream, vous devez fournir du code pour traiter l’erreur STG_E_INVALIDFUNCTION.

La méthode LockRegion n’a aucun effet dans l’implémentation de fichier composé, car l’implémentation ne prend pas en charge le verrouillage de plage.

Notes aux implémenteurs

La prise en charge de cette méthode est facultative pour les implémentations d’objets de flux, car elle peut ne pas être prise en charge par le système de fichiers sous-jacent. Le type de verrouillage pris en charge est également facultatif. L’erreur STG_E_INVALIDFUNCTION est retournée si le type de verrouillage demandé n’est pas pris en charge.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau | Applications UWP]
Plateforme cible Windows
En-tête objidl.h
Bibliothèque Uuid.lib
DLL Ole32.dll

Voir aussi

IStream - Implémentation de fichiers composés

IStream ::UnlockRegion

TYPE DE VERROUILLAGE