Freigeben über


FSCTL_OPLOCK_BREAK_ACK_NO_2 IOCTL (winioctl.h)

Reagiert auf die Benachrichtigung, dass eine opportunistische Sperre für eine Datei unterbrochen wird. Verwenden Sie diesen Vorgang, um alle opportunistischen Sperren für die Datei zu entsperren, aber die Datei geöffnet zu lassen.

Rufen Sie zum Ausführen dieses Vorgangs die DeviceIoControl-Funktion mit den folgenden Parametern auf.

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
);

Hinweise

Dieser Vorgang wird nur von Clientanwendungen verwendet, die eine opportunistische Sperre von einem lokalen Server angefordert haben. Clientanwendungen, die opportunistische Sperren von Remoteservern anfordern, dürfen diese nicht direkt anfordern. Der Netzwerkumleitungsor fordert transparent opportunistische Sperren für die Anwendung an.

Die Auswirkungen von überlappenden E/A-Vorgängen auf diesen Vorgang finden Sie im Abschnitt Hinweise des Themas DeviceIoControl .

Wenn Sie eine Benachrichtigung erhalten, dass eine opportunistische Sperre für eine Datei unterbrochen wird, verwenden Sie den FSCTL_OPLOCK_BREAK_ACK_NO_2-Steuerungscode, um dem Server anzugeben, dass Sie alle opportunistischen Sperren aufgeben möchten, aber planen, die Datei geöffnet zu lassen. Wenn der Vorgang den Fehlercode ERROR_IO_PENDING zurückgibt, hat der Server eine Sperre der Ebene 2 für die Datei gewährt.

Eine Alternative zur Verwendung von FSCTL_OPLOCK_BREAK_ACK_NO_2 besteht darin, anzugeben, dass die Anwendung die Datei trotzdem schließen wird. Verwenden Sie den FSCTL_OPBATCH_ACK_CLOSE_PENDING-Steuerelementcode für diese Antwort.

Eine andere Alternative, die verwendet wird, wenn die Sperre unterbrochen wird, ist eine exklusive opportunistische Sperre, um anzugeben, dass die Datei stattdessen eine opportunistische Sperre der Ebene 2 erhalten soll. Verwenden Sie den FSCTL_OPLOCK_BREAK_ACKNOWLEDGE-Steuerelementcode für diese Antwort.

Anwendungen werden benachrichtigt, dass eine opportunistische Sperre unterbrochen wird, indem sie das hEvent-Element der OVERLAPPED-Struktur verwenden, die der Datei zugeordnet ist, für die die opportunistische Sperre unterbrochen ist. Anwendungen können auch Funktionen wie GetOverlappedResult und HasOverlappedIoCompleted verwenden.

In Windows 8 und Windows Server 2012 wird dieser Code von den folgenden Technologien unterstützt.

Technologie Unterstützt
SMB 3.0-Protokoll (Server Message Block) No
SMB 3.0 Transparent Failover (TFO) No
SMB 3.0 mit Dateifreigaben mit horizontaler Skalierung (SO) No
Dateisystem mit freigegebenen Clustervolumes (CsvFS) Ja
Robustes Dateisystem (Resilient File System, ReFS) Ja

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Kopfzeile winioctl.h (einschließlich Windows.h)

Weitere Informationen