Share via


FSCTL_OPLOCK_BREAK_ACK_NO_2 IOCTL (winioctl.h)

Risponde alla notifica che un blocco opportunistico su un file sta per essere interrotto. Usare questa operazione per sbloccare tutti i blocchi opportunistici nel file, ma mantenere aperto il file.

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

BOOL DeviceIoControl(
  (HANDLE) hDevice,                 // handle to file
  FSCTL_OPLOCK_BREAK_ACK_NO_2,      // 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 .

Quando si riceve una notifica che un blocco opportunistico su un file sta per essere interrotto, usare il codice di controllo FSCTL_OPLOCK_BREAK_ACK_NO_2 per indicare al server che si desidera rinunciare a eventuali blocchi opportunistici, ma si prevede di mantenere aperto il file. Se l'operazione restituisce il codice di errore ERROR_IO_PENDING, al server è stato concesso un blocco di livello 2 sul file.

Un'alternativa all'uso di FSCTL_OPLOCK_BREAK_ACK_NO_2 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, usata se il blocco interrotto è un blocco opportunistico esclusivo, è indicare che il file deve ricevere invece un blocco opportunistico di livello 2. Usare il codice di controllo FSCTL_OPLOCK_BREAK_ACKNOWLEDGE per questa risposta.

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