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 |