Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Zerwanie oportunistycznej blokady polega na pogorszeniu poziomu blokady, którą ma jeden klient w pliku, tak aby inny klient mógł otworzyć plik z blokadą oportunistyczną lub bez nich. Gdy inny klient żąda operacji otwierania, serwer opóźnia operację otwierania i powiadamia klienta o blokadzie oportunistycznej.
Następnie klient przechowujący blokadę podejmuje odpowiednie działania dla typu blokady, na przykład porzucanie odczytu, zamykanie pliku itd. Tylko gdy klient trzymający blokadę oportunistyczną powiadomi serwer o zakończeniu działania, serwer otwiera plik dla klienta żądającego operacji otwarcia. Jednak gdy blokada poziomu 2 jest uszkodzona, serwer zgłasza klientowi, że został uszkodzony, ale nie czeka na potwierdzenie, ponieważ nie ma buforowanych danych do opróżnienia na serwer.
Przy uznaniu przerwania jakichkolwiek wyłącznych blokad (filtr, poziom 1 lub partia) posiadacz przerwanej blokady nie może zażądać nowej blokady wyłącznej. Może obniżyć wyłączną blokadę do blokady poziomu 2 lub całkowicie ją usunąć. Uchwyt zazwyczaj zwalnia blokadę i zamyka plik, gdy ma zamiar go zamknąć.
Aplikacje są powiadamiane, że blokada oportunistyczna jest uszkodzona przy użyciu hEvent elementu członkowskiego OVERLAPPED struktury skojarzonej z plikiem, na którym blokada jest uszkodzona. Aplikacje mogą również używać funkcji, takich jak GetOverlappedResult i HasOverlappedIoCompleted.