Partager via


IByteBuffer::LockRegion, méthode

[La méthode LockRegion peut être utilisée dans les systèmes d’exploitation spécifiés dans la section Configuration requise. Il n’est pas disponible pour une utilisation dans Windows Server 2003 avec Service Pack 1 (SP1) et versions ultérieures, Windows Vista, Windows Server 2008 et les versions ultérieures du système d’exploitation. L’interface IStream fournit des fonctionnalités similaires.]

La méthode LockRegion limite l’accès à une plage spécifiée d’octets dans l’objet buffer.

Syntaxe

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

Paramètres

libOffset [in]

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

cb [in]

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

dwLockType [in]

Spécifie les restrictions demandées pour accéder à la plage. Il peut s’agir de l’une des valeurs du tableau suivant.

Valeur Signification
LOCK_WRITE
La plage d’octets spécifiée peut être ouverte et lue un nombre quelconque de fois, mais l’écriture dans la plage verrouillée est interdite à l’exception du propriétaire auquel ce verrou a été accordé.
LOCK_EXCLUSIVE
L’écriture dans la plage d’octets spécifiée est interdite, sauf pour le propriétaire auquel ce verrou a été accordé.
LOCK_ONLYONCE
Si ce verrou est accordé, aucun autre verrou LOCK_ONLYONCE ne peut être obtenu sur la plage. En règle générale, ce type de verrou est un alias pour un autre type de verrou. Ainsi, des implémentations spécifiques peuvent avoir un comportement supplémentaire associé à ce type de verrou.

Valeur retournée

La valeur de retour est un HRESULT. La valeur S_OK indique que l’appel a réussi.

Notes

La plage d’octets peut dépasser la fin actuelle du flux. Le verrouillage au-delà de la fin d’un 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 enregistreurs 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 LockRegion doit par la suite être déverrouillée explicitement en appelant IByteBuffer::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.

Exemples

L’exemple suivant montre la restriction de l’accès à une plage d’octets.

HRESULT  hr;

// Lock a region.
hr = pIByteBuff->LockRegion(0, 10, LOCK_EXCLUSIVE);
if (FAILED(hr))
  printf("Failed IByteBuffer::LockRegion\n");

Spécifications

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]
Fin de la prise en charge des clients
Windows XP
Fin de la prise en charge des serveurs
Windows Server 2003
En-tête
Scardssp.h
Bibliothèque de types
Scardssp.tlb
DLL
Scardssp.dll
IID
IID_IByteBuffer est défini comme E126F8FE-A7AF-11D0-B88A-00C04FD424B9