LPOVERLAPPED_COMPLETION_ROUTINE funzione di callback (minwinbase.h)

Funzione di 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 di avviso (tramite la funzione 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 di I/O asincrona.

Il sistema non utilizza la struttura OVERLAPPED dopo la chiamata della 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 un'operazione di I/O è stata completata correttamente, verificare che dwErrorCode sia 0, chiamare GetOverlappedResult, quindi chiamare GetLastError. Ad esempio, se il buffer non è sufficientemente grande da ricevere tutti i dati da una chiamata a ReadFileEx, dwErrorCode è impostato su 0, GetOverlappedResult ha esito negativo e GetLastError restituisce ERROR_MORE_DATA.

La restituzione da questa funzione consente di chiamare un'altra routine di completamento I/O in sospeso. Tutte le routine di completamento in attesa vengono chiamate prima che l'attesa del thread di avviso 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 parte dello stack dell'applicazione. Se la routine di completamento esegue ulteriori operazioni di I/O asincrone e attese di avviso, lo stack potrebbe aumentare.

Per altre informazioni, vedere Chiamate di routine asincrone.

Esempio

Per un esempio di codice, vedere Named Pipe Server Using Completion Routines .For example code, see Named Pipe Server Using Completion Routines.

Requisiti

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

Vedi anche

BindIoCompletionCallback

Funzioni di gestione file

SOVRAPPOSTA

ReadFileEx

SleepEx

I/O sincrono e asincrono

WaitForMultipleObjectsEx

WaitForSingleObjectEx

WriteFileEx