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 |
|
Libreria dei tipi |
|
DLL |
|
IID |
IID_IByteBuffer è definito come E126F8FE-A7AF-11D0-B88A-00C04FD424B9 |