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 |