FSCTL_REQUEST_BATCH_OPLOCK IOCTL (winioctl.h)
Richiede un blocco opportunistico batch su un file.
Per eseguire questa operazione, chiamare la funzione DeviceIoControl usando gli argomenti seguenti.
BOOL b = DeviceIoControl(
(HANDLE) hDevice, // handle to file
FSCTL_REQUEST_BATCH_OPLOCK, // dwIoControlCode
NULL, // lpInBuffer
0, // nInBufferSize
NULL, // lpOutBuffer
0, // nOutBufferSize
(LPDWORD) lpBytesReturned, // number of bytes returned
(LPOVERLAPPED) lpOverlapped ); // OVERLAPPED structure
Commenti
Questa operazione viene usata solo dalle applicazioni client che richiedono un blocco opportunistico (oplock) da un server locale. Le applicazioni client che richiedono blocchi opportunistici da server remoti non devono richiederle direttamente, ovvero il redirector di rete richiede in modo trasparente blocchi opportunistici per l'applicazione. Un tentativo di usare questa operazione per richiedere blocchi opportunistici dai server remoti comporterà la negazione della richiesta.
Se si desidera un nuovo tipo di oplock, l'handle deve essere chiuso e un nuovo handle riaperto tramite CreateFile e DeviceIoControl deve essere chiamato sul nuovo handle con il codice di controllo FSCTL_REQUEST_OPLOCK desiderato_XXX . Per richiedere un oplock su un handle in cui è possibile modificare il tipo di oplock (l'handle non deve essere chiuso e riaperto), usare il codice di controllo FSCTL_REQUEST_OPLOCK .
Usare FSCTL_REQUEST_BATCH_OPLOCK per richiedere un blocco opportunistico batch su un file. Un file system client può memorizzare nella cache i dati di lettura, scrivere dati e gestire i dati in locale, purché il blocco di livello 1 venga mantenuto.
Il proprietario del blocco operativo batch deve confermare un'interruzione di oplock (vedere Interruzione dei blocchi opportunistici) prima che qualsiasi operazione incompatibile con un oplock batch possa scorrere su un altro handle. Dopo l'interruzione del blocco, il redirector di rete riceve una notifica per non considerare validi i dati memorizzati nella cache dal file.
Per altre informazioni, vedere Tipi di blocchi opportunistici.
Per un confronto dei vari codici di controllo oplock, vedere FSCTL_REQUEST_OPLOCK.
Un codice di controllo FSCTL_REQUEST_BATCH_OPLOCK ha esito negativo se il file viene aperto in modalità non sovrapposta (sincrona).
Per le implicazioni dell'I/O sovrapposto in questa operazione, vedere la sezione Osservazioni dell'argomento DeviceIoControl .
In Windows 8 e Windows Server 2012 questo codice è supportato dalle tecnologie seguenti.
Tecnologia | Supportato |
---|---|
Protocollo SMB (Server Message Block) 3.0 | No |
Failover trasparente SMB 3.0 (TFO) | No |
SMB 3.0 con condivisioni file di scalabilità orizzontale (SO) | No |
File system del volume condiviso cluster (CsvFS) | Sì |
Resilient File System (ReFS) | Sì |
Requisiti
Client minimo supportato | Windows XP [solo app desktop] |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Intestazione | winioctl.h (include Windows.h) |