Condividi tramite


FSCTL_OPLOCK_BREAK_ACKNOWLEDGE IOCTL (winioctl.h)

Risponde alla notifica che un blocco opportunistico esclusivo su un file sta per essere interrotto. Utilizzare questa operazione per indicare che il file deve ricevere un blocco opportunistico di livello 2.

Per eseguire questa operazione, chiamare la funzione DeviceIoControl usando i parametri seguenti.

BOOL DeviceIoControl(
  (HANDLE) hDevice,                 // handle to file
  FSCTL_OPLOCK_BREAK_ACKNOWLEDGE,   // 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 hanno richiesto un blocco opportunistico 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.

Per le implicazioni dell'I/O sovrapposto in questa operazione, vedere la sezione Osservazioni dell'argomento DeviceIoControl .

FSCTL_OPLOCK_BREAK_ACKNOWLEDGE è una risposta alla notifica che un blocco opportunistico di livello 1, batch o filtro sul file di un'applicazione è stato interrotto. Indica al server che l'applicazione deve ricevere un blocco opportunistico di livello 2. Se l'operazione restituisce il codice di errore ERROR_IO_PENDING, il server ha concesso all'applicazione un blocco di livello 2 nel file.

Un'alternativa all'uso di FSCTL_OPLOCK_BREAK_ACKNOWLEDGE consiste nell'indicare che l'applicazione sta per chiudere comunque il file. Usare il codice di controllo FSCTL_OPBATCH_ACK_CLOSE_PENDING per questa risposta.

Un'altra alternativa consiste nel richiedere di mantenere aperto il file, ma perdere tutto il blocco, tramite il codice di controllo FSCTL_OPLOCK_BREAK_ACK_NO_2 .

Le applicazioni ricevono una notifica che indica che un blocco opportunistico viene interrotto utilizzando il membro hEvent della struttura OVERLAPPED associata al file in cui viene interrotto il blocco opportunistico. Le applicazioni possono anche usare funzioni come GetOverlappedResult e HasOverlappedIoCompleted.

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)
Resilient File System (ReFS)

Requisiti

Requisito Valore
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Intestazione winioctl.h (include Windows.h)

Vedi anche