Compartilhar via


Método IByteBuffer::LockRegion

[O método LockRegion está disponível para uso nos sistemas operacionais especificados na seção Requisitos. Ele não está disponível para uso no Windows Server 2003 com Service Pack 1 (SP1) e posterior, Windows Vista, Windows Server 2008 e versões subsequentes do sistema operacional. A interface IStream fornece funcionalidade semelhante.]

O método LockRegion restringe o acesso a um intervalo especificado de bytes no objeto buffer.

Sintaxe

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

Parâmetros

libOffset [in]

Inteiro que especifica o deslocamento de bytes para o início do intervalo.

cb [in]

Inteiro que especifica o comprimento do intervalo, em bytes, a ser restrito.

dwLockType [in]

Especifica as restrições que estão sendo solicitadas ao acessar o intervalo. Esse pode ser um dos valores na tabela a seguir.

Valor Significado
LOCK_WRITE
O intervalo especificado de bytes pode ser aberto e lido várias vezes, mas a gravação no intervalo bloqueado é proibida, exceto pelo proprietário que recebeu esse bloqueio.
LOCK_EXCLUSIVE
A gravação no intervalo especificado de bytes é proibida, exceto pelo proprietário que recebeu esse bloqueio.
LOCK_ONLYONCE
Se esse bloqueio for concedido, nenhum outro bloqueio LOCK_ONLYONCE poderá ser obtido no intervalo. Normalmente, esse tipo de bloqueio é um alias para algum outro tipo de bloqueio. Portanto, implementações específicas podem ter um comportamento adicional associado a esse tipo de bloqueio.

Valor retornado

O valor retornado é um HRESULT. Um valor de S_OK indica que a chamada foi bem-sucedida.

Comentários

O intervalo de bytes pode se estender além do final atual do fluxo. O bloqueio além do final de um fluxo é útil como um método de comunicação entre diferentes instâncias do fluxo sem alterar dados que, na verdade, fazem parte do fluxo.

Há suporte para três tipos de bloqueio: bloqueio para excluir outros gravadores, bloqueio para excluir outros leitores ou gravadores e bloqueio que permite que apenas um solicitante obtenha um bloqueio no intervalo determinado, que geralmente é um alias para um dos outros dois tipos de bloqueio. Uma determinada instância de fluxo pode dar suporte a um dos dois primeiros tipos ou ambos. O tipo de bloqueio é especificado por dwLockType, usando um valor da enumeração LOCKTYPE .

Qualquer região bloqueada com LockRegion deve ser desbloqueada explicitamente chamando IByteBuffer::UnlockRegion com exatamente os mesmos valores para os parâmetros libOffset, cb e dwLockType . A região deve ser desbloqueada antes que o fluxo seja liberado. Duas regiões adjacentes não podem ser bloqueadas separadamente e desbloqueadas com uma única chamada de desbloqueio.

Exemplos

O exemplo a seguir mostra a restrição do acesso a um 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 Valor
Cliente mínimo com suporte
Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte
Windows Server 2003 [somente aplicativos da área de trabalho]
Fim do suporte ao cliente
Windows XP
Fim do suporte ao servidor
Windows Server 2003
Cabeçalho
Scardssp.h
Biblioteca de tipos
Scardssp.tlb
DLL
Scardssp.dll
IID
IID_IByteBuffer é definido como E126F8FE-A7AF-11D0-B88A-00C04FD424B9