Partager via


IMAPISupport::IStorageFromStream

S’applique à : Outlook 2013 | Outlook 2016

Implémente un objet de stockage pour accéder à un flux.

HRESULT IStorageFromStream(
  LPUNKNOWN lpUnkIn,
  LPCIID lpInterface,
  ULONG ulFlags,
  LPSTORAGE FAR * lppStorageOut
);

Paramètres

lpUnkIn

[in] Pointeur vers un objet de flux.

lpInterface

[in] Pointeur vers l’identificateur d’interface (IID) qui représente l’interface à utiliser pour accéder au flux vers lequel pointe lpUnkIn. L’une des valeurs suivantes est valide : IID_IStream, IID_ILockBytes ou null, ce qui indique que l’interface IStream doit être utilisée pour accéder au flux.

ulFlags

[in] Masque de bits d’indicateurs qui contrôle la façon dont l’objet de stockage doit être créé par rapport à l’objet de flux. Par défaut, le stockage est créé avec un accès en lecture seule et le flux démarre à la position zéro dans le stockage. Les indicateurs suivants peuvent être définis :

STGSTRM_CREATE

Un nouvel objet de stockage doit être créé pour l’objet de flux.

STGSTRM_CURRENT

L’objet de stockage doit démarrer à la position actuelle du flux.

STGSTRM_MODIFY

L’appelant doit disposer de l’autorisation de lecture/écriture sur l’objet de stockage retourné.

STGSTRM_RESET

L’objet de stockage doit commencer à la position zéro.

lppStorageOut

[out] Pointeur vers un pointeur vers l’objet de stockage.

Valeur renvoyée

S_OK

L’objet de stockage a été créé avec succès.

Remarques

La méthode IMAPISupport ::IStorageFromStream est implémentée pour tous les objets de prise en charge du fournisseur de services. Les fournisseurs de services appellent IStorageFromStream pour créer un objet de stockage à utiliser pour ouvrir des propriétés particulières. Les fournisseurs de services qui ont leur propre implémentation de l’interface IStorage n’ont pas besoin d’appeler IStorageFromStream.

L’objet de stockage créé par IStorageFromStream appelle la méthode IUnknown ::AddRef du flux pour incrémenter son nombre de références, puis décrémente le nombre lorsque le stockage est libéré.

Remarques pour les appelants

Lorsque la méthode IMAPIProp ::OpenProperty de l’un de vos objets est appelée pour ouvrir une propriété avec l’interface IStorage , effectuez les tâches suivantes :

  1. Ouvrez un objet de flux avec l’autorisation de lecture/écriture pour la propriété .

  2. Marquez en interne le flux de propriété en tant qu’objet de stockage.

  3. Appelez IStorageFromStream pour générer un objet de stockage.

  4. Retourne un pointeur vers cet objet de stockage.

Si vous implémentez des interfaces supplémentaires qui utilisent l’objet de stockage, créez un objet qui encapsule l’objet de stockage et implémentez une méthode IUnknown ::QueryInterface de niveau supérieur.

N’autorisez pas l’ouverture d’une propriété avec l’interface IStream si elle a été créée avec IStorage. À l’inverse, n’autorisez pas l’ouverture d’une propriété avec l’interface IStorage si elle a été créée avec IStream.

À une exception près, il est acceptable d’utiliser l’interface IStreamDocfile pour diffuser en continu un objet de stockage d’un conteneur vers un autre, mais l’identificateur d’interface IID_IStreamDocfile doit être passé dans le paramètre lpInterface de la méthode OpenProperty.

Voir aussi

IMAPIProp::OpenProperty

IMAPISupport : IUnknown