Condividi tramite


Metodo IStream::LockRegion (objidl.h)

Il metodo LockRegion limita l'accesso a un intervallo di byte specificato nel flusso. Il supporto di questa funzionalità è facoltativo perché alcuni file system non lo forniscono.

Sintassi

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

Parametri

[in] libOffset

Intero che specifica l'offset di byte per l'inizio dell'intervallo.

[in] cb

Intero che specifica la lunghezza dell'intervallo, espressa in byte, da limitare.

[in] dwLockType

Specifica le restrizioni richieste per l'accesso all'intervallo.

Valore restituito

Questo metodo può restituire uno di questi valori.

Codice restituito Descrizione
S_OK L'intervallo di byte specificato è stato bloccato.
E_PENDING Solo archiviazione asincrona: parte o tutti i dati del flusso non sono attualmente disponibili.
STG_E_INVALIDFUNCTION Il blocco non è supportato o il tipo specifico di blocco richiesto non è supportato.
STG_E_LOCKVIOLATION Il blocco richiesto è supportato, ma non può essere concesso a causa di un blocco esistente.
STG_E_REVERTED L'oggetto è stato invalidato da un'operazione di ripristino sopra di essa nell'albero delle transazioni.

Commenti

L'intervallo di byte del flusso può essere esteso. Il blocco di un intervallo esteso per il flusso è utile come metodo di comunicazione tra istanze diverse del flusso senza modificare i dati effettivamente parte del flusso.

È possibile supportare tre tipi di blocco: il blocco per escludere altri writer, il blocco per escludere altri lettori o writer e il blocco che consente a un solo richiedente di ottenere un blocco sull'intervallo specificato, che in genere è un alias per uno degli altri due tipi di blocco. Una determinata istanza del flusso può supportare uno dei primi due tipi o entrambi. Il tipo di blocco viene specificato da dwLockType, utilizzando un valore dell'enumerazione LOCKTYPE .

Qualsiasi area bloccata con IStream::LockRegion deve essere sbloccata in un secondo momento chiamando IStream::UnlockRegion con esattamente gli stessi valori per i parametri libOffset, cb e dwLockType . L'area deve essere sbloccata prima del rilascio del flusso. Due aree adiacenti non possono essere bloccate separatamente e quindi sbloccate con una singola chiamata di sblocco.

Note ai chiamanti

Poiché il tipo di blocco supportato è facoltativo e può variare in implementazioni diverse di IStream, è necessario fornire il codice per gestire l'errore STG_E_INVALIDFUNCTION.

Il metodo LockRegion non ha alcun effetto nell'implementazione del file composto, perché l'implementazione non supporta il blocco dell'intervallo.

Note per gli implementatori

Il supporto per questo metodo è facoltativo per le implementazioni di oggetti flusso perché potrebbe non essere supportato dal file system sottostante. Il tipo di blocco supportato è anche facoltativo. L'errore STG_E_INVALIDFUNCTION viene restituito se il tipo richiesto di blocco non è supportato.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [app desktop | App UWP]
Server minimo supportato Windows 2000 Server [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione objidl.h
Libreria Uuid.lib
DLL Ole32.dll

Vedi anche

IStream - Implementazione di file composti

IStream::UnlockRegion

LOCKTYPE