Método IStream::LockRegion (objidl.h)
O método LockRegion restringe o acesso a um intervalo especificado de bytes no fluxo. O suporte a essa funcionalidade é opcional, pois alguns sistemas de arquivos não a fornecem.
Sintaxe
HRESULT LockRegion(
[in] ULARGE_INTEGER libOffset,
[in] ULARGE_INTEGER cb,
[in] DWORD dwLockType
);
Parâmetros
[in] libOffset
Inteiro que especifica o deslocamento de bytes para o início do intervalo.
[in] cb
Inteiro que especifica o comprimento do intervalo, em bytes, a ser restrito.
[in] dwLockType
Especifica as restrições que estão sendo solicitadas ao acessar o intervalo.
Retornar valor
Esse método pode retornar um desses valores.
Código de retorno | Descrição |
---|---|
S_OK | O intervalo especificado de bytes foi bloqueado. |
E_PENDING | Somente armazenamento assíncrono: parte ou todos os dados do fluxo estão indisponíveis no momento. |
STG_E_INVALIDFUNCTION | Não há suporte para bloqueio ou não há suporte para o tipo específico de bloqueio solicitado. |
STG_E_LOCKVIOLATION | Há suporte para bloqueio solicitado, mas não pode ser concedido devido a um bloqueio existente. |
STG_E_REVERTED | O objeto foi invalidado por uma operação de reverter acima dele na árvore de transações. |
Comentários
O intervalo de bytes do fluxo pode ser estendido. Bloquear um intervalo estendido para o 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 IStream::LockRegion deve ser desbloqueada explicitamente chamando IStream::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.
Anotações para chamadores
Como o tipo de bloqueio com suporte é opcional e pode variar em diferentes implementações do IStream, você deve fornecer código para lidar com o erro de STG_E_INVALIDFUNCTION.O método LockRegion não tem efeito na implementação de arquivo composto, pois a implementação não dá suporte ao bloqueio de intervalo.
Anotações aos implementadores
O suporte para esse método é opcional para implementações de objetos de fluxo, pois ele pode não ter suporte pelo sistema de arquivos subjacente. O tipo de bloqueio com suporte também é opcional. O erro STG_E_INVALIDFUNCTION será retornado se não houver suporte para o tipo de bloqueio solicitado.Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 2000 Professional [aplicativos da área de trabalho | Aplicativos UWP] |
Servidor mínimo com suporte | Windows 2000 Server [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | objidl.h |
Biblioteca | Uuid.lib |
DLL | Ole32.dll |