GetQueuedCompletionStatusEx függvény

Egyszerre több befejezési portbejegyzést kér le. Megvárja, amíg a megadott befejezési porthoz társított függőben lévő I/O-műveletek befejeződnek.

Az I/O-befejezési csomagok egyenkénti várólistáról való törléséhez használja a GetQueuedCompletionStatus függvényt.

Szemantika

BOOL WINAPI GetQueuedCompletionStatusEx(
  _In_  HANDLE             CompletionPort,
  _Out_ LPOVERLAPPED_ENTRY lpCompletionPortEntries,
  _In_  ULONG              ulCount,
  _Out_ PULONG             ulNumEntriesRemoved,
  _In_  DWORD              dwMilliseconds,
  _In_  BOOL               fAlertable
);

Paraméterek

CompletionPort[in]

A befejezési port fogantyúja. Befejezési port létrehozásához használja a CreateIoCompletionPort függvényt.

lpCompletionPortEntries[out]

A bemeneten OVERLAPPED_ENTRY struktúrák előre lefoglalt tömbjére mutat.

Kimenetkor a bejegyzéseket tartalmazó OVERLAPPED_ENTRY struktúrák tömbjét fogadja. A tömbelemek számát az ulNumEntriesRemoved adja meg.

Az egyes I/O-k során átvitt bájtok száma, a befejezési kulcs, amely azt jelzi, hogy az egyes I/O-k melyik fájlon történtek, valamint az egyes eredeti I/O-kban használt átfedésben lévő struktúracím mind visszaadódnak az lpCompletionPortEntries tömbben.

ulCount[in]

Az eltávolítandó bejegyzések maximális száma.

ulNumEntriesRemoved[out]

Egy olyan változóra mutató mutató, amely a ténylegesen eltávolított bejegyzések számát fogadja.

dwMilliszekundumok[in]

Az az ezredmásodpercek száma, ameddig a hívó hajlandó megvárni, amíg egy befejezési csomag megjelenik a befejezési porton. Ha a befejezési csomag nem jelenik meg a megadott időn belül, a függvény időtúllépést okoz, és visszaadja a FALSEkövetkezőt: .

Ha a dwMilliseconds értéke VÉGTELEN (0xFFFFFFFF), a függvény soha nem lépi túl az időkorlátot. Ha a dwMilliseconds nulla, és nincs I/O-művelet a sorból való törléshez, a függvény azonnal időtúllépést okoz.

Windows XP, Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 és Windows Server 2008 R2: A dwMilliseconds érték tartalmazza az alacsony energiaigényű állapotban töltött időt. Például az időtúllépés folyamatosan visszaszámlál, miközben a számítógép alvó állapotban van.

Windows 8, Windows Server 2012, Windows 8.1, Windows Server 2012 R2, Windows 10 és Windows Server 2016: A dwMilliseconds érték nem tartalmazza az alacsony energiafelvételű állapotban töltött időt. Például az időtúllépés nem számol vissza, amíg a számítógép alvó állapotban van.

fRiasztás[in]

Ha ez a paraméter , FALSEa függvény nem tér vissza, amíg az időtúllépési időszak le nem telik, vagy le nem kér egy bejegyzést.

Ha a paraméter igen TRUE , és nincsenek elérhető bejegyzések, a függvény riasztási várakozást hajt végre. A szál akkor tér vissza, amikor a rendszer várólistára helyez egy I/O-befejezési rutint vagy APC-t a szálhoz, és a szál végrehajtja a függvényt.

A befejezési rutin akkor kerül várólistára, ha a ReadFileEx vagy a WriteFileEx függvény, amelyben meg lett adva, befejeződött, és a hívó szál a műveletet kezdeményező szál. Az APC várólistára kerül a QueueUserAPC hívásakor.

Visszaadott érték

Nem nullát TRUE ad vissza, ha sikeres, vagy nullát ad vissza, ha egyébként nulla FALSE .

Ha további hibainformációkat szeretne kapni, hívja GetLastError.

Megjegyzések

Ez a függvény egy szálat társít a megadott befejezési porthoz. Egy szál legfeljebb egy befejezési porthoz társítható.

Ez a függvény akkor tér vissza TRUE , ha legalább egy függőben lévő I/O befejeződött, de előfordulhat, hogy egy vagy több I/O-művelet meghiúsult. Vegye figyelembe, hogy a függvény felhasználójának kell ellenőriznie az lpCompletionPortEntries paraméter visszaadott bejegyzéseinek listáját, hogy az egyes OVERLAPPED_ENTRYlpOverlapped tagjában található állapotot megvizsgálva megállapítsa, hogy ezek közül melyek felelnek meg az esetleges sikertelen I/O műveleteknek.

Ez a függvény akkor tér vissza FALSE , ha nem került sorba I/O-művelet. Ez általában azt jelenti, hogy hiba történt a hívás paramétereinek feldolgozása során, vagy hogy a CompletionPort leíró be lett zárva, vagy más módon érvénytelen. A GetLastError függvény kiterjesztett hibainformációkat biztosít.

Ha a GetQueuedCompletionStatusEx hívása meghiúsul, mert a hozzá társított leíró be van zárva, a függvény visszatér, FALSE és a GetLastError visszaadja ERROR_ABANDONED_WAIT_0a következőt: .

A kiszolgálóalkalmazások több szálat is tartalmazhatnak, amelyek a GetQueuedCompletionStatusEx függvényt hívják meg ugyanahhoz a befejezési porthoz. Az I/O-műveletek befejeztével a rendszer várólistára kerül erre a portra az elsőként kimenő sorrendben. Ha egy szál aktívan várakozik erre a hívásra, egy vagy több várólistán lévő kérés csak az adott szál hívását fejezi be.

Az I/O-kiegészítési portok elméletéről, használatáról és a kapcsolódó funkciókról további információt az I/O-kiegészítési portok című témakörben talál.

A Windows 8 és a Windows Server 2012 rendszerben ezt a funkciót a következő technológiák támogatják.

Technológia Támogatott
Server Message Block (SMB) 3.0 protokoll Igen
SMB 3.0 transzparens feladatátvétel (TFO) Igen
SMB 3.0 kibővített fájlmegosztással (SO) Igen
Fürt megosztott kötetfájlrendszere (CsvFS) Igen
Rugalmas fájlrendszer (ReFS) Igen

Követelmények

Követelmény Érték
Minimálisan támogatott ügyfél Windows Vista [asztali alkalmazások | UWP-alkalmazások]
Minimálisan támogatott kiszolgáló Windows Server 2008 [asztali alkalmazások | UWP-alkalmazások]
Fejléc IoAPI.h(belefoglal)Windows.h
WinBase.h Windows Server 2008 R2, Windows 7, Windows Server 2008 és Windows Vista rendszeren (beleértve a Windows.h)
Könyvtár Kernel32.lib
DLL Kernel32.dll

Lásd még

Áttekintő témakörök

Fájlkezelési függvények

I/O befejezési portok

A Windows fejlécek használata

Funkciók

ConnectNamedPipe

CreateIoCompletionPort

DeviceIoControl

LockFileEx

Fájl olvasása

PostQueuedCompletionStatus

TransactNamedPipe

WaitCommEvent

Írfájlt