Compartir a través de


Método IByteBuffer::LockRegion

[El método LockRegion está disponible para su uso en los sistemas operativos especificados en la sección Requisitos. No está disponible para su uso en Windows Server 2003 con Service Pack 1 (SP1) y versiones posteriores, Windows Vista, Windows Server 2008 y versiones posteriores del sistema operativo. La interfaz IStream proporciona una funcionalidad similar.]

El método LockRegion restringe el acceso a un intervalo de bytes especificado en el objeto de búfer.

Sintaxis

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

Parámetros

libOffset [in]

Entero que especifica el desplazamiento de bytes para el principio del intervalo.

cb [in]

Entero que especifica la longitud del intervalo, en bytes, que se va a restringir.

dwLockType [in]

Especifica las restricciones que se solicitan al acceder al intervalo. Puede ser uno de los valores de la tabla siguiente.

Value Significado
LOCK_WRITE
El intervalo de bytes especificado se puede abrir y leer cualquier número de veces, pero la escritura en el intervalo bloqueado está prohibida excepto para el propietario al que se concedió este bloqueo.
LOCK_EXCLUSIVE
La escritura en el intervalo de bytes especificado está prohibida excepto para el propietario al que se concedió este bloqueo.
LOCK_ONLYONCE
Si se concede este bloqueo, no se puede obtener ningún otro bloqueo LOCK_ONLYONCE en el intervalo. Normalmente, este tipo de bloqueo es un alias para algún otro tipo de bloqueo. Por lo tanto, las implementaciones específicas pueden tener un comportamiento adicional asociado a este tipo de bloqueo.

Valor devuelto

El valor devuelto es hrESULT. Un valor de S_OK indica que la llamada se realizó correctamente.

Comentarios

El intervalo de bytes puede extenderse más allá del final actual de la secuencia. El bloqueo más allá del final de una secuencia es útil como método de comunicación entre diferentes instancias de la secuencia sin cambiar los datos que realmente forman parte de la secuencia.

Se pueden admitir tres tipos de bloqueo: bloqueo para excluir otros escritores, bloqueo para excluir otros lectores o escritores, y bloqueo que permite que solo un solicitante obtenga un bloqueo en el intervalo especificado, que suele ser un alias para uno de los otros dos tipos de bloqueo. Una instancia de secuencia determinada podría admitir cualquiera de los dos primeros tipos, o ambos. DwLockType especifica el tipo de bloqueo mediante un valor de la enumeración LOCKTYPE .

Cualquier región bloqueada con LockRegion debe desbloquearse explícitamente llamando a IByteBuffer::UnlockRegion con exactamente los mismos valores para los parámetros libOffset, cb y dwLockType . La región debe desbloquearse antes de que se libere la secuencia. Dos regiones adyacentes no se pueden bloquear por separado y, a continuación, desbloquearse con una sola llamada de desbloqueo.

Ejemplos

En el ejemplo siguiente se muestra cómo restringir el acceso a un intervalo de bytes.

HRESULT  hr;

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

Requisitos

Requisito Value
Cliente mínimo compatible
Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible
Windows Server 2003 [solo aplicaciones de escritorio]
Fin de compatibilidad de cliente
Windows XP
Fin de compatibilidad de servidor
Windows Server 2003
Encabezado
Scardssp.h
Biblioteca de tipos
Scardssp.tlb
Archivo DLL
Scardssp.dll
IID
IID_IByteBuffer se define como E126F8FE-A7AF-11D0-B88A-00C04FD424B9