Condividi tramite


Struttura OVERLAPPED (shobjidl.h)

Contiene informazioni usate nell'input/output asincrono (sovrapposto) (I/O).

Sintassi

typedef struct _OVERLAPPED {
  ULONG_PTR Internal;
  ULONG_PTR InternalHigh;
  union {
    struct {
      DWORD Offset;
      DWORD OffsetHigh;
    };
    PVOID Pointer;
  };
  HANDLE    hEvent;
} OVERLAPPED, *LPOVERLAPPED;

Members

Internal

Tipo: ULONG_PTR

Riservato ad uso del sistema operativo. Questo membro, che specifica uno stato dipendente dal sistema, è valido quando la funzione IStreamAsync::OverlappedResult restituisce senza impostare le informazioni sull'errore esteso su ERROR_IO_PENDING.

InternalHigh

Tipo: ULONG_PTR

Riservato ad uso del sistema operativo. Questo membro, che specifica la lunghezza dei dati trasferiti, è valido quando la funzione IStreamAsync::OverlappedResult restituisce TRUE.

Offset

Tipo: DWORD

Posizione del file in corrispondenza della quale avviare il trasferimento. La posizione del file è un offset dei byte dall'inizio del file. Il processo chiamante deve impostare questo membro prima di chiamare la funzione IStreamAsync::ReadAsync o IStreamAsync::WriteAsync .

OffsetHigh

Tipo: DWORD

Parola di ordine elevato della posizione del file in corrispondenza della quale avviare il trasferimento.

Pointer

Tipo: PVOID

Riservato.

hEvent

Tipo: handle

Handle per un evento impostato sullo stato segnalato al termine dell'operazione. Il processo chiamante deve impostare questo membro su zero o su un handle di evento valido prima di chiamare qualsiasi funzione sovrapposta. Per creare un oggetto evento, usare la funzione CreateEvent . Questa funzione restituisce un handle che può essere usato per sincronizzare le richieste di I/O simultanee per un dispositivo.

Funzioni come IStreamAsync::ReadAsync e IStreamAsync::WriteAsync impostano questo handle sullo stato non firmato prima di iniziare un'operazione di I/O. Al termine dell'operazione, l'handle viene impostato sullo stato segnalato.

Funzioni come IStreamAsync::OverlappedResult e le funzioni di attesa reimpostano gli eventi di reimpostazione automatica sullo stato non assegnato. Pertanto, se viene usato un evento di reimpostazione automatica, l'applicazione può smettere di rispondere se attende il completamento dell'operazione e quindi chiama IStreamAsync::OverlappedResult.

Commenti

Questa struttura deve essere sempre inizializzata su zero prima che venga usata in una chiamata di funzione. In caso contrario, la funzione può avere esito negativo e restituire ERROR_INVALID_PARAMETER.

Usare la funzione IStreamAsync::CancelIo per annullare un'operazione di I/O asincrona.

Un errore comune consiste nel riutilizzare una struttura OVERLAPPED prima del completamento dell'operazione asincrona precedente. Usare una struttura separata per ogni richiesta. Creare un oggetto evento per ogni thread che elabora i dati.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Intestazione shobjidl.h