LPOVERLAPPED_COMPLETION_ROUTINE funzione di callback (minwinbase.h)

Funzione callback definita dall'applicazione usata con le funzioni ReadFileEx e WriteFileEx . Viene chiamato quando l'operazione di input e output asincrona (I/O) viene completata o annullata e il thread chiamante si trova in uno stato avvisabile (usando SleepEx, MsgWaitForMultipleObjectsEx, WaitForSingleObjectEx o WaitForMultipleObjectsEx con il parametro fAlertable impostato su TRUE).

Il tipo LPOVERLAPPED_COMPLETION_ROUTINE definisce un puntatore a questa funzione di callback. FileIOCompletionRoutine è un segnaposto per il nome della funzione definita dall'applicazione.

Sintassi

LPOVERLAPPED_COMPLETION_ROUTINE LpoverlappedCompletionRoutine;

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

Parametri

[in] dwErrorCode

Stato di completamento di I/O. Questo parametro può essere uno dei codici di errore di sistema.

[in] dwNumberOfBytesTransfered

Il numero di byte trasferiti. Se si verifica un errore, questo parametro è zero.

[in, out] lpOverlapped

Puntatore alla struttura OVERLAPPED specificata dalla funzione I/O asincrona.

Il sistema non usa la struttura OVERLAPPED dopo che viene chiamata la routine di completamento, quindi la routine di completamento può deallocare la memoria utilizzata dalla struttura sovrapposta.

Valore restituito

nessuno

Osservazioni

Il valore restituito per un'operazione asincrona è 0 (ERROR_SUCCESS) se l'operazione è stata completata correttamente o se l'operazione è stata completata con un avviso. Per determinare se è stata completata correttamente un'operazione di I/O, verificare che dwErrorCode sia 0, chiamare GetOverlappedResult, quindi chiamare GetLastError. Ad esempio, se il buffer non è abbastanza grande per ricevere tutti i dati da una chiamata a ReadFileEx, dwErrorCode è impostato su 0, GetOverlappedResult non riesce e GetLastError restituisce ERROR_MORE_DATA.

La restituzione da questa funzione consente di chiamare un'altra routine di completamento di I/O in sospeso. Tutte le routine di completamento in attesa vengono chiamate prima che l'attesa del thread avvisabile venga completata con un codice restituito di WAIT_IO_COMPLETION. Il sistema può chiamare le routine di completamento in attesa in qualsiasi ordine. Possono essere chiamati o meno nell'ordine in cui vengono completate le funzioni di I/O.

Ogni volta che il sistema chiama una routine di completamento, usa uno stack dell'applicazione. Se la routine di completamento esegue ulteriori attese di I/O asincrone e di avviso, lo stack potrebbe aumentare.

Per altre informazioni, vedere Chiamate di procedura asincrone.

Esempio

Ad esempio, vedere Named Pipe Server Using Completion Routines ( Routine di completamento).

Requisiti

   
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione minwinbase.h (includere Windows.h)

Vedi anche

BindIoCompletionCallback

Funzioni di gestione file

SOVRAPPOSTA

ReadFileEx

SleepEx

I/O sincroni e asincroni

WaitForMultipleObjectsEx

WaitForSingleObjectEx

WriteFileEx