Compartir a través de


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

El método LockRegion restringe el acceso a un intervalo de bytes especificado en la secuencia. Admitir esta funcionalidad es opcional, ya que algunos sistemas de archivos no lo proporcionan.

Sintaxis

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

Parámetros

[in] libOffset

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

[in] cb

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

[in] dwLockType

Especifica las restricciones que se solicitan al acceder al intervalo.

Valor devuelto

Este método puede devolver uno de estos valores.

Código devuelto Descripción
S_OK Se bloqueó el intervalo de bytes especificado.
E_PENDING Solo almacenamiento asincrónico: la parte o todos los datos de la secuencia no están disponibles actualmente.
STG_E_INVALIDFUNCTION No se admite el bloqueo en absoluto o no se admite el tipo específico de bloqueo solicitado.
STG_E_LOCKVIOLATION Se admite el bloqueo solicitado, pero no se puede conceder debido a un bloqueo existente.
STG_E_REVERTED El objeto se ha invalidado por una operación de reversión por encima de él en el árbol de transacciones.

Comentarios

El intervalo de bytes de la secuencia se puede extender. Bloquear un intervalo extendido para la 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 IStream::LockRegion debe desbloquearse explícitamente llamando a IStream::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.

Notas a los autores de llamadas

Dado que el tipo de bloqueo admitido es opcional y puede variar en diferentes implementaciones de IStream, debe proporcionar código para tratar el error de STG_E_INVALIDFUNCTION.

El método LockRegion no tiene ningún efecto en la implementación del archivo compuesto, ya que la implementación no admite el bloqueo de intervalos.

Notas para los implementadores

La compatibilidad con este método es opcional para las implementaciones de objetos de secuencia, ya que es posible que no sea compatible con el sistema de archivos subyacente. El tipo de bloqueo admitido también es opcional. El STG_E_INVALIDFUNCTION error se devuelve si no se admite el tipo de bloqueo solicitado.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [aplicaciones de escritorio | Aplicaciones para UWP]
Servidor mínimo compatible Windows 2000 Server [aplicaciones de escritorio | Aplicaciones para UWP]
Plataforma de destino Windows
Encabezado objidl.h
Library Uuid.lib
Archivo DLL Ole32.dll

Consulte también

IStream: implementación de archivos compuestos

IStream::UnlockRegion

LOCKTYPE