Partager via


IWSDOutboundAttachment ::Write, méthode (wsdattachment.h)

Envoie des données de pièce jointe à l’hôte distant à l’aide d’un conteneur MIME.

Syntaxe

HRESULT Write(
  [in]  const BYTE *pBuffer,
  [in]  DWORD      dwBytesToWrite,
  [out] LPDWORD    pdwNumberOfBytesWritten
);

Paramètres

[in] pBuffer

Pointeur vers une mémoire tampon contenant les données de sortie. Le programme d’application est chargé d’allouer et de libérer cette mémoire tampon de données.

[in] dwBytesToWrite

Nombre d’octets à envoyer à l’hôte distant à partir de pBuffer.

[out] pdwNumberOfBytesWritten

Pointeur vers un DWORD contenant le nombre d’octets de données réellement envoyées à l’hôte distant.

Valeur retournée

Les valeurs de retour possibles incluent, sans s’y limiter, les éléments suivants :

Code de retour Description
S_OK
La méthode s’est terminée avec succès.
E_POINTER
pdwNumberofBytesWritten a la valeur NULL.
E_INVALIDARG
pBuffer a la valeur NULL.
HRESULT_FROM_WIN32(ERROR_INVALID_OPERATION)
L’interface de pièce jointe sortante n’a pas été initialisée. Appelez WSDCreateOutboundAttachment pour initialiser l’interface.
STG_S_BLOCK
Les mémoires tampons internes n’étaient pas disponibles. Les données n’ont pas été acceptées et mises en file d’attente pour transmission.

Remarques

La méthode Write permet à un programme d’application d’envoyer des données arbitraires à un hôte distant en tant que pièce jointe de message encapsulée mime. Le premier appel à Write ouvre le flux de pièces jointes sortantes et lance la transmission des en-têtes HTTP, des données d’enveloppe et des données d’application encodées mime. Les appels suivants à Write envoient des blocs supplémentaires de données d’application encodées en MIME jusqu’à ce que l’application effectue un appel à Fermer, ce qui ferme le flux de pièces jointes et termine la transmission des données et des en-têtes de l’enveloppe de message.

L’opération d’écriture peut se bloquer dans plusieurs conditions. Lors de l’opération initiale, Write se bloque jusqu’à ce que les en-têtes HTTP et le contenu XML aient été transmis. Lors de l’envoi de plusieurs pièces jointes dans un seul message, le premier appel à Écrire sur n’importe quelle pièce jointe peut se bloquer jusqu’à ce que tous les flux de pièces jointes précédents aient été complètement transmis. L’écriture peut se bloquer pendant jusqu’à 30 secondes (par délai d’expiration de transmission HTTP) si l’hôte distant ne répond pas.

Si une erreur se produit lors de l’établissement d’une connexion ou de la transmission d’en-têtes, Write renvoie immédiatement le code d’erreur. Si une erreur de transfert de données se produit, l’erreur peut être retardée à un appel ultérieur d’écriture ou de fermeture.

La méthode Write peut retourner avec succès après l’échec d’une tentative d’écriture qui a renvoyé STG_S_BLOCK. Une réussite ultérieure indique que les mémoires tampons internes ont été libérées pour être utilisées après l’échec initial de la tentative. Lorsque STG_S_BLOCK est reçu par une application, l’application peut renvoyer les mêmes données à l’aide de la méthode Write ou arrêter le transfert de données à l’aide de la méthode Abort .

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]
Plateforme cible Windows
En-tête wsdattachment.h (inclure Wsdapi.h)
DLL Wsdapi.dll

Voir aussi

IWSDInboundAttachment

IWSDOutboundAttachment

IWSDOutboundAttachment ::Abort

IWSDOutboundAttachment ::Close