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.
Pobiera jednocześnie wiele wpisów portów ukończenia. Czeka na zakończenie oczekujących operacji we/wy skojarzonych z określonym portem zakończenia.
Aby usunąć pakiety ukończenia we/wy pojedynczo, użyj funkcji GetQueuedCompletionStatus .
Składnia
BOOL WINAPI GetQueuedCompletionStatusEx(
_In_ HANDLE CompletionPort,
_Out_ LPOVERLAPPED_ENTRY lpCompletionPortEntries,
_In_ ULONG ulCount,
_Out_ PULONG ulNumEntriesRemoved,
_In_ DWORD dwMilliseconds,
_In_ BOOL fAlertable
);
Parametry
UkończeniePort[in]
Uchwyt do portu ukończenia. Aby utworzyć port uzupełniania, użyj funkcji CreateIoCompletionPort .
lpCompletionPortWpisy[out]
Na danych wejściowych wskazuje wstępnie przydzieloną tablicę struktur OVERLAPPED_ENTRY .
W danych wyjściowych odbiera tablicę struktur OVERLAPPED_ENTRY , które przechowują wpisy. Liczba elementów tablicy jest dostarczana przez ulNumEntriesRemoved.
Liczba bajtów przesłanych podczas każdego we/wy, klucz ukończenia, który wskazuje, na którym pliku wystąpiło każde we/wy, oraz adres nakładającej się struktury używany w każdym oryginalnym we/wy są zwracane w tablicy lpCompletionPortEntries .
ulCount (ulLiczba)[in]
Maksymalna liczba wpisów do usunięcia.
ulNumEntriesUsunięto[out]
Wskaźnik do zmiennej, która odbiera liczbę faktycznie usuniętych wpisów.
dwMilisekundy[in]
Liczba milisekund, przez którą obiekt wywołujący jest skłonny czekać na pojawienie się pakietu ukończenia na porcie uzupełniania. Jeśli pakiet uzupełniania nie pojawi się w określonym czasie, funkcja przekroczy limit czasu i zwróci FALSE.
Jeśli parametr dwMilliseconds ma wartość INFINITE (0xFFFFFFFF), funkcja nigdy nie przekroczy limitu czasu. Jeśli parametr dwMilliseconds ma wartość zero i nie ma operacji we/wy w celu usunięcia z kolejki, funkcja natychmiast przekroczy limit czasu.
Windows XP, Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 i Windows Server 2008 R2: Wartość dwMilliseconds obejmuje czas spędzony w stanach niskiego poboru mocy. Na przykład limit czasu jest odliczany, gdy komputer jest uśpiony.
Windows 8, Windows Server 2012, Windows 8.1, Windows Server 2012 R2, Windows 10 i Windows Server 2016: Wartość dwMilliseconds nie obejmuje czasu spędzonego w stanach niskiego poboru mocy. Na przykład limit czasu nie jest odliczany, gdy komputer jest uśpiony.
fAlertable[in]
Jeśli ten parametr ma wartość FALSE, funkcja nie jest zwracana, dopóki nie upłynie limit czasu lub nie zostanie pobrany wpis.
Jeśli parametr ma wartość TRUE i nie ma żadnych dostępnych wpisów, funkcja wykonuje oczekiwanie z możliwością alertu. Wątek jest zwracany, gdy system kolejkuje procedurę uzupełniania we/wy lub APC do wątku, a wątek wykonuje funkcję.
Procedura uzupełniania jest umieszczana w kolejce, gdy funkcja ReadFileEx lub WriteFileEx , w której została określona, została zakończona, a wątkiem wywołującym jest wątek, który zainicjował operację. Kontroler APC jest umieszczany w kolejce po wywołaniu metody QueueUserAPC.
Wartość zwracana
Zwraca wartość różną od zera TRUE , jeśli się powiedzie, lub zero FALSE w przeciwnym razie.
Aby uzyskać rozszerzone informacje o błędzie, wywołaj metodę GetLastError.
Uwagi
Ta funkcja kojarzy wątek z określonym portem zakończenia. Wątek może być skojarzony z co najwyżej jednym portem uzupełniania.
Ta funkcja jest zwracana TRUE , gdy co najmniej jedna oczekująca operacja we/wy zostanie ukończona, ale możliwe jest, że co najmniej jedna operacja we/wy nie powiodła się. Należy zauważyć, że to do użytkownika tej funkcji należy sprawdzenie listy zwróconych wpisów w parametrze lpCompletionPortEntries w celu określenia, które z nich odpowiadają wszelkim możliwym nieudanym operacjom we/wy, patrząc na stan zawarty w elemencie członkowskim lpOverlapped w każdym OVERLAPPED_ENTRY.
Ta funkcja jest zwracana FALSE , gdy żadna operacja we/wy nie została usunięta z kolejki. Zazwyczaj oznacza to, że wystąpił błąd podczas przetwarzania parametrów tego wywołania lub że dojście CompletionPort zostało zamknięte lub jest w inny sposób nieprawidłowe. Funkcja GetLastError udostępnia rozszerzone informacje o błędach.
Jeśli wywołanie metody GetQueuedCompletionStatusEx zakończy się niepowodzeniem, ponieważ skojarzone z nim dojście jest zamknięte, funkcja zwraca FALSE wartość i GetLastError zwraca ERROR_ABANDONED_WAIT_0wartość .
Aplikacje serwera mogą mieć kilka wątków wywołujących funkcję GetQueuedCompletionStatusEx dla tego samego portu uzupełniania. Po zakończeniu operacji we/wy są one kolejkowane do tego portu w kolejności "pierwsze weszło, pierwsze wyszło". Jeśli wątek aktywnie oczekuje na to wywołanie, co najmniej jedno żądanie w kolejce kończy wywołanie tylko dla tego wątku.
Aby uzyskać więcej informacji na temat teorii portów uzupełniania we/wy, użycia i skojarzonych funkcji, zobacz Porty uzupełniania we/wy.
W systemach Windows 8 i Windows Server 2012 ta funkcja jest obsługiwana przez następujące technologie.
| Technologia | Wsparte |
|---|---|
| Protokół SMB (Server Message Block) 3.0 | Tak |
| Przezroczyste przełączanie awaryjne (TFO) protokołu SMB 3.0 | Tak |
| Protokół SMB 3.0 z udziałami plików skalowalnymi w poziomie (SO) | Tak |
| System plików udostępnionego woluminu klastra (CsvFS) | Tak |
| Odporny system plików (ReFS) | Tak |
Wymagania
| Wymaganie | Wartość |
|---|---|
| Minimalny obsługiwany klient | Windows Vista [aplikacje klasyczne | Aplikacje platformy UWP] |
| Minimalny obsługiwany serwer | Windows Server 2008 [aplikacje klasyczne | Aplikacje platformy UWP] |
| Nagłówek |
IoAPI.h (w tym Windows.h)WinBase.h w systemach Windows Server 2008 R2, Windows 7, Windows Server 2008 i Windows Vista (w tym Windows.h) |
| Biblioteka | Kernel32.lib |
| DLL | Kernel32.dll |
Zobacz także
Tematy przeglądowe
Korzystanie z nagłówków systemu Windows
Funkcje