ILockBytes::LockRegion
9/8/2008
Este método restringe acessar para um intervalo especificado de bytes na matriz.
Syntax
HRESULT LockRegion(
ULARGE_INTEGER libOffset,
ULARGE_INTEGER cb,
DWORD dwLockType
);
Parameters
- libOffset
[no] Deslocamento de byte para o início do intervalo.
- cb
[no] Comprimento, em bytes, do intervalo seja restrito.
- dwLockType
[no] Tipo de restrições que está sendo solicitada em acessando o intervalo. Este parâmetro usa um dos valores do LOCKTYPE enumeração.
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. |
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_ACCESSDENIED |
Acesso negado porque o chamador tem permissão suficiente ou outro chamador tiver aberto o arquivo e bloqueado. |
STG_E_LOCKVIOLATION |
Acesso negado porque outro chamador tem o arquivo aberto e bloqueado. |
STG_E_INVALIDHANDLE |
Um subjacente arquivo foi fechado prematuramente, ou o disco flexível correto foi substituído por um inválido Um. |
Remarks
ILockBytes::LockRegion Restringe acessar para o intervalo especificado de bytes. Depois que uma região é bloqueada, tentativas por outras pessoas obtenham acessar para o intervalo restrito devem falhar com o erro STG_E_ACCESSDENIED.
O intervalo byte pode estender após a atual final da matriz de byte.
O bloqueio além do final de uma matriz é útil como um método de comunicação entre diferentes instâncias do objeto matriz de bytes sem alterar dados que seja realmente parte de matriz de byte.
Para uma implementação de exemplo, o ILockBytes interface para arquivos compostos poderiam depender bloqueando após a atual final da matriz como um meio de controle de acesso, usando regiões bloqueadas específicos para indicar permissões concedidas no momento.
O dwLockType parâmetro especifica um dos três tipos de bloqueando, usando valores a partir de LOCKTYPE enumeração.
Os tipos bloqueio são da seguinte maneira:
- Bloqueio para excluir outros autores
- Bloqueio para excluir outros autores ou leitores
- Bloquear que permite que somente um solicitante obter um bloqueio no intervalo determinado.
Este tipo terceiro de bloqueando geralmente é um alias para um dos outros tipos bloqueio duas e permite que um implementador para adicionar outro comportamento bem. Uma matriz dado byte talvez suporte os primeiros dois tipos, ou ambos.
Para determinar os tipos bloqueio com suporte por um determinado ILockBytes implementação, examine o grfLocksSupported membro das STATSTG estrutura retornada por uma chamar para o ILockBytes::STAT método.
Qualquer região bloqueado com ILockBytes::LockRegion Mais tarde deve ser explicitamente desbloqueada por chamado de ILockBytes::UnlockRegionmethodwith 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 ILockBytes, você deve fornecer codificar para lidar com o erro STG_E_INVALIDFUNCTION.
Notas para Implementers
Suporte para esse método depende como o objeto armazenamento compilado no parte superior das ILockBytes implementação é usada.
Se você souber que somente um armazenamento objeto em qualquer tempo determinado pode ser aberto no dispositivo de armazenamento que underlies a matriz byte, e seu ILockBytes implementação não é necessário bloqueando suporte.
No entanto, se múltiplo aberturas simultâneas de um objeto armazenamento são possíveis e, em seguida, bloqueando região é necessário para coordená-los.
A LockRegion implementação pode escolher para suporte todos, alguns ou nenhum dos tipos de bloqueio. Para sem suporte tipos bloqueio, a implementação deve retornar STG_E_INVALIDFUNCTION.
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 |