IStream::LockRegion
9/8/2008
Este método restringe acessar para um intervalo especificado de bytes na transmitir. Suporte a essa funcionalidade é opcional, pois alguns sistemas arquivo não fornecem-lo.
Syntax
HRESULT LockRegion(
LARGE_INTEGER libOffset,
LARGE_INTEGER cb,
DWORD dwLockType
);
Parameters
- libOffset
[no] Número inteiro que especifica o deslocamento de byte para o início do intervalo.
- cb
[no] Número inteiro que especifica o comprimento do intervalo, em bytes, seja restrito.
- dwLockType
[no] Especifica as restrições que está sendo solicitadas em acessando o intervalo.
Return Value
A seguinte tabela mostra os valores de retorno para este método.
Valor | Descrição |
---|---|
S_OK |
O intervalo especificado de bytes foi bloqueado. |
E_PENDING |
Somente armazenamento assíncrono: Parte ou todos os dados de transmitir é atualmente não disponível. |
STG_E_INVALIDFUNCTION |
O bloqueio não com suporte em todos ou de tipo específico de bloqueio solicitado não é com suporte. |
STG_E_LOCKVIOLATION |
Solicitada bloqueio é com suporte, mas não podem ser concedidas because of um bloqueio existente. |
STG_E_REVERTED |
O objeto tenha sido invalidado por uma operação de reversão acima na árvore de transação. |
Remarks
O intervalo byte pode estender após a atual final da transmitir.
O bloqueio além do final de um transmitir é útil como um método de comunicação entre diferentes instâncias da transmitir sem alteração que seja realmente parte da transmitir dados.
Três tipos de bloqueando podem ser com suporte: bloqueando para excluir outros autores, bloqueando para excluir outros autores ou leitores e bloqueando que permite que somente um solicitante para obter um bloqueio no intervalo determinado, que geralmente é um alias para um dos outros tipos bloqueio dois.
Uma instância transmitir determinado talvez suporte os primeiros dois tipos, ou ambos.
O tipo bloqueio é especificado pelo dwLockType, usando um valor a partir de LOCKTYPE enumeração.
Qualquer região bloqueado com IStream::LockRegion Mais tarde deve ser explicitamente desbloqueada por chamado de IStream::UnlockRegion método com exatamente os mesmos valores para o libOffset, cb, e dwLockType parâmetros.
A região deve estar desbloqueada antes de transmitir seja liberado.
Dois adjacente regiões não podem ser bloqueadas separadamente e, em seguida, desbloqueadas com um chamar desbloquear único.
Para determinar se a plataforma oferece suporte a esta interface, consulte Determinando suporte COM APIs.
Notas para chamadores
Porque o tipo de bloqueando com suporte é opcional e pode variar em diferentes implementações de IStream, você deve fornecer codificar para lidar com o erro STG_E_INVALIDFUNCTION.
Este método não tem nenhum efeito na implementação de arquivo composto, pois a implementação não suporte bloqueando intervalo.
Notas para Implementers
Suporte para este método é opcional para implementações de transmitir objetos porque ele não pode ser com suporte pela subjacente sistema de arquivos.
O tipo de bloqueando com suporte também é opcional.
O erro STG_E_INVALIDFUNCTION será retornado se o tipo solicitado de bloqueando não é com suporte.
Requirements
Header | objidl.h, objidl.idl |
Library | ole32.lib, uuid.lib |
Windows Embedded CE | Windows CE 2.0 and later |
Windows Mobile | Windows Mobile Version 5.0 and later |