Partager via


STRUCTURE CHEVAUCHÉE (shobjidl.h)

Contient des informations utilisées dans les entrées/sorties asynchrones (qui se chevauchent) (E/S).

Syntaxe

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

Membres

Internal

Type : ULONG_PTR

Réservé à l'usage du système d'exploitation. Ce membre, qui spécifie un status dépendant du système, est valide lorsque la fonction IStreamAsync ::OverlappedResult retourne sans définir les informations d’erreur étendues sur ERROR_IO_PENDING.

InternalHigh

Type : ULONG_PTR

Réservé à l'usage du système d'exploitation. Ce membre, qui spécifie la longueur des données transférées, est valide lorsque la fonction IStreamAsync ::OverlappedResult retourne TRUE.

Offset

Type : DWORD

Position de fichier à laquelle démarrer le transfert. La position de fichier est un offset d'octet à partir du début du fichier. Le processus appelant doit définir ce membre avant d’appeler la fonction IStreamAsync ::ReadAsync ou IStreamAsync ::WriteAsync .

OffsetHigh

Type : DWORD

Mot d’ordre élevé de la position de fichier à laquelle commencer le transfert.

Pointer

Type : PVOID

Réservé.

hEvent

Type : handle

Gérez un événement qui est défini sur l’état signalé une fois l’opération terminée. Le processus appelant doit définir ce membre sur zéro ou sur un handle d’événement valide avant d’appeler des fonctions qui se chevauchent. Pour créer un objet d’événement, utilisez la fonction CreateEvent . Cette fonction retourne un handle qui peut être utilisé pour synchroniser des demandes d’E/S simultanées pour un appareil.

Les fonctions telles que IStreamAsync ::ReadAsync et IStreamAsync ::WriteAsync définissent ce handle sur l’état non signé avant de commencer une opération d’E/S. Une fois l’opération terminée, le handle est défini sur l’état signalé.

Les fonctions telles que IStreamAsync ::OverlappedResult et les fonctions d’attente réinitialisent les événements de réinitialisation automatique à l’état non signé. Par conséquent, si un événement de réinitialisation automatique est utilisé, l’application peut cesser de répondre si elle attend la fin de l’opération, puis appelle IStreamAsync ::OverlappedResult.

Remarques

Cette structure doit toujours être initialisée à zéro avant d’être utilisée dans un appel de fonction. Si ce n’est pas le cas, la fonction peut échouer et retourner ERROR_INVALID_PARAMETER.

Utilisez la fonction IStreamAsync ::CancelIo pour annuler une opération d’E/S asynchrone.

Une erreur courante consiste à réutiliser une structure CHEVAUCHEMENT AVANT la fin de l’opération asynchrone précédente. Utilisez une structure distincte pour chaque requête. Créez un objet d’événement pour chaque thread qui traite les données.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau uniquement]
En-tête shobjidl.h