LPOVERLAPPED_COMPLETION_ROUTINE Rückruffunktion (minwinbase.h)

Eine anwendungsdefinierte Rückruffunktion, die mit den Funktionen ReadFileEx und WriteFileEx verwendet wird. Sie wird aufgerufen, wenn der asynchrone Eingabe- und Ausgabevorgang (E/A) abgeschlossen oder abgebrochen wird und sich der aufrufende Thread in einem warnbaren Zustand befindet (mithilfe der Funktion SleepEx, MsgWaitForMultipleObjectsEx, WaitForSingleObjectEx oder WaitForMultipleObjectsEx , wobei der fAlertable-Parameter auf TRUE festgelegt ist).

Der LPOVERLAPPED_COMPLETION_ROUTINE Typ definiert einen Zeiger auf diese Rückruffunktion. FileIOCompletionRoutine ist ein Platzhalter für den anwendungsdefinierte Funktionsnamen.

Syntax

LPOVERLAPPED_COMPLETION_ROUTINE LpoverlappedCompletionRoutine;

void LpoverlappedCompletionRoutine(
  [in]      DWORD dwErrorCode,
  [in]      DWORD dwNumberOfBytesTransfered,
  [in, out] LPOVERLAPPED lpOverlapped
)
{...}

Parameter

[in] dwErrorCode

Die E/A-Vervollständigung status. Dieser Parameter kann einer der Systemfehlercodes sein.

[in] dwNumberOfBytesTransfered

Die Anzahl der übertragenen Bytes. Wenn ein Fehler auftritt, ist dieser Parameter null.

[in, out] lpOverlapped

Ein Zeiger auf die OVERLAPPED-Struktur , die von der asynchronen E/A-Funktion angegeben wird.

Das System verwendet die OVERLAPPED-Struktur nicht, nachdem die Abschlussroutine aufgerufen wurde, sodass die Vervollständigungsroutine die Zuordnung des von der überlappenden Struktur verwendeten Arbeitsspeichers aufheben kann.

Rückgabewert

Keine

Bemerkungen

Der Rückgabewert für einen asynchronen Vorgang ist 0 (ERROR_SUCCESS), wenn der Vorgang erfolgreich abgeschlossen wurde oder wenn der Vorgang mit einer Warnung abgeschlossen wurde. Um festzustellen, ob ein E/A-Vorgang erfolgreich abgeschlossen wurde, überprüfen Sie, ob dwErrorCode 0 ist, rufen Sie GetOverlappedResult auf, und rufen Sie dann GetLastError auf. Wenn der Puffer beispielsweise nicht groß genug war, um alle Daten von einem Aufruf von ReadFileEx zu empfangen, wird dwErrorCode auf 0 festgelegt, GetOverlappedResult schlägt fehl, und GetLastError gibt ERROR_MORE_DATA zurück.

Wenn Sie von dieser Funktion zurückgeben, kann eine weitere E/A-Vervollständigungsroutine aufgerufen werden. Alle Wartevorgangsroutinen werden aufgerufen, bevor die Wartedauer des warnbaren Threads mit dem Rückgabecode WAIT_IO_COMPLETION abgeschlossen wird. Das System kann die wartenden Vervollständigungsroutinen in beliebiger Reihenfolge aufrufen. Sie können in der Reihenfolge aufgerufen werden, in der die E/A-Funktionen abgeschlossen sind.

Jedes Mal, wenn das System eine Vervollständigungsroutine aufruft, verwendet es einen Teil des Anwendungsstapels. Wenn die Vervollständigungsroutine zusätzliche asynchrone E/A- und warnbare Wartevorgänge ausführt, kann der Stapel vergrößert werden.

Weitere Informationen finden Sie unter Asynchrone Prozeduraufrufe.

Beispiele

Beispielcode finden Sie unter Named Pipe Server Using Completion Routines.

Anforderungen

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

Weitere Informationen

BindIoCompletionCallback

Dateiverwaltungsfunktionen

OVERLAPPED

ReadFileEx

SleepEx

Synchrone und asynchrone E/A-Vorgänge

WaitForMultipleObjectsEx

WaitForSingleObjectEx

WriteFileEx