Condividi tramite


Metodo IByteBuffer::LockRegion

[Il metodo LockRegion è disponibile per l'uso nei sistemi operativi specificati nella sezione Requisiti. Non è disponibile per l'uso in Windows Server 2003 con Service Pack 1 (SP1) e versioni successive, Windows Vista, Windows Server 2008 e versioni successive del sistema operativo. L'interfaccia IStream offre funzionalità simili.

Il metodo LockRegion limita l'accesso a un intervallo specificato di byte nell'oggetto buffer.

Sintassi

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

Parametri

libOffset [in]

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

cb [in]

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

dwLockType [in]

Specifica le restrizioni richieste per l'accesso all'intervallo. Può trattarsi di uno dei valori della tabella seguente.

Valore Significato
LOCK_WRITE
L'intervallo di byte specificato può essere aperto e letto un numero qualsiasi di volte, ma la scrittura nell'intervallo bloccato è vietata ad eccezione del proprietario a cui è stato concesso questo blocco.
LOCK_EXCLUSIVE
La scrittura nell'intervallo di byte specificato non è consentita, ad eccezione del proprietario a cui è stato concesso questo blocco.
LOCK_ONLYONCE
Se questo blocco viene concesso, non è possibile ottenere altri blocchi LOCK_ONLYONCE nell'intervallo. In genere questo tipo di blocco è un alias per un altro tipo di blocco. Di conseguenza, implementazioni specifiche possono avere un comportamento aggiuntivo associato a questo tipo di blocco.

Valore restituito

Il valore restituito è HRESULT. Un valore di S_OK indica che la chiamata ha avuto esito positivo.

Commenti

L'intervallo di byte può estendersi oltre la fine corrente del flusso. Il blocco oltre la fine di un 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 LockRegion deve essere successivamente sbloccata in modo esplicito chiamando IByteBuffer::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.

Esempio

Nell'esempio seguente viene illustrato come limitare l'accesso a un intervallo di byte.

HRESULT  hr;

// Lock a region.
hr = pIByteBuff->LockRegion(0, 10, LOCK_EXCLUSIVE);
if (FAILED(hr))
  printf("Failed IByteBuffer::LockRegion\n");

Requisiti

Requisito Valore
Client minimo supportato
Windows XP [solo app desktop]
Server minimo supportato
Windows Server 2003 [solo app desktop]
Fine del supporto client
Windows XP
Fine del supporto server
Windows Server 2003
Intestazione
Scardssp.h
Libreria dei tipi
Scardssp.tlb
DLL
Scardssp.dll
IID
IID_IByteBuffer è definito come E126F8FE-A7AF-11D0-B88A-00C04FD424B9