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 |