Freigeben über


ÜBERLAPPENDE Struktur (shobjidl.h)

Enthält Informationen, die in asynchronen (überlappenden) Eingaben/Ausgaben (E/A) verwendet werden.

Syntax

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

Member

Internal

Typ: ULONG_PTR

Reserviert für die Verwendung durch das Betriebssystem. Dieser Member, der eine systemabhängige status angibt, ist gültig, wenn die IStreamAsync::OverlappedResult-Funktion zurückgegeben wird, ohne die erweiterten Fehlerinformationen auf ERROR_IO_PENDING festzulegen.

InternalHigh

Typ: ULONG_PTR

Reserviert für die Verwendung durch das Betriebssystem. Dieses Element, das die Länge der übertragenen Daten angibt, ist gültig, wenn die IStreamAsync::OverlappedResult-FunktionTRUE zurückgibt.

Offset

Art: DWORD

Dateiposition, an der die Übertragung gestartet werden soll. Die Dateiposition ist ein Byteoffset vom Anfang der Datei. Der aufrufende Prozess muss diesen Member festlegen, bevor er die Funktion IStreamAsync::ReadAsync oder IStreamAsync::WriteAsync aufruft.

OffsetHigh

Art: DWORD

Hochgeordnetes Wort der Dateiposition, an der die Übertragung gestartet werden soll.

Pointer

Typ: PVOID

Reserviert.

hEvent

Typ: Handle

Behandeln Sie ein Ereignis, das nach Abschluss des Vorgangs auf den signalierten Zustand festgelegt ist. Der aufrufende Prozess muss diesen Member entweder auf Null oder ein gültiges Ereignishandle festlegen, bevor er überlappende Funktionen aufruft. Verwenden Sie zum Erstellen eines Ereignisobjekts die CreateEvent-Funktion . Diese Funktion gibt einen Handle zurück, mit dem gleichzeitige E/A-Anforderungen für ein Gerät synchronisiert werden können.

Funktionen wie IStreamAsync::ReadAsync und IStreamAsync::WriteAsync legen diesen Handle auf den nicht signalierten Zustand fest, bevor sie mit einem E/A-Vorgang beginnen. Wenn der Vorgang abgeschlossen ist, wird der Handle auf den Signalzustand festgelegt.

Funktionen wie IStreamAsync::OverlappedResult und die Wartefunktionen setzen Automatische Zurücksetzungsereignisse auf den nicht signalierten Zustand zurück. Wenn daher ein Ereignis zum automatischen Zurücksetzen verwendet wird, kann die Anwendung nicht mehr reagieren, wenn sie wartet, bis der Vorgang abgeschlossen ist, und dann IStreamAsync::OverlappedResult aufruft.

Hinweise

Diese Struktur sollte immer mit null initialisiert werden, bevor sie in einem Funktionsaufruf verwendet wird. Andernfalls kann die Funktion fehlschlagen und ERROR_INVALID_PARAMETER zurückgeben.

Verwenden Sie die Funktion IStreamAsync::CancelIo , um einen asynchronen E/A-Vorgang abzubrechen.

Ein häufiger Fehler besteht darin, eine OVERLAPPED-Struktur wiederzuverwenden, bevor der vorherige asynchrone Vorgang abgeschlossen wurde. Verwenden Sie für jede Anforderung eine separate Struktur. Erstellen Sie ein Ereignisobjekt für jeden Thread, der Daten verarbeitet.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [nur Desktop-Apps]
Kopfzeile shobjidl.h