Partager via


Méthode IStorage ::CreateStream (objidl.h)

La méthode CreateStream crée et ouvre un objet stream avec le nom spécifié contenu dans cet objet de stockage. Tous les éléments d’un objet de stockage, à la fois les flux et les autres objets de stockage, sont conservés dans le même espace de nom.

Syntaxe

HRESULT CreateStream(
  [in]  const OLECHAR *pwcsName,
  [in]  DWORD         grfMode,
  [in]  DWORD         reserved1,
  [in]  DWORD         reserved2,
  [out] IStream       **ppstm
);

Paramètres

[in] pwcsName

Pointeur vers une chaîne Unicode terminée par un caractère null large qui contient le nom du flux nouvellement créé. Le nom peut être utilisé ultérieurement pour ouvrir ou rouvrir le flux. Le nom ne doit pas dépasser 31 caractères, sans compter l’indicateur de fin de chaîne. Les caractères 000 à 01f qui servent de premier caractère au nom de flux/de stockage, sont réservés pour être utilisés par OLE. Il s'agit d'une restriction de fichier composé, pas d'une restriction de stockage de mémoire.

[in] grfMode

Spécifie le mode d’accès à utiliser lors de l’ouverture du flux nouvellement créé. Pour plus d’informations et pour obtenir des descriptions des valeurs possibles, consultez Constantes STGM.

[in] reserved1

Réservé pour une future utilisation ; doit être nul.

[in] reserved2

Réservé pour une future utilisation ; doit être nul.

[out] ppstm

Au retour, pointeur vers l’emplacement du nouveau pointeur d’interface IStream . Cela n’est valide que si l’opération réussit. Lorsqu’une erreur se produit, ce paramètre est défini sur NULL.

Valeur retournée

Cette méthode peut retourner l’une de ces valeurs.

Code de retour Description
S_OK Le nouveau flux a été créé avec succès.
E_PENDING Stockage asynchrone uniquement : une partie ou la totalité des données nécessaires sont actuellement indisponibles.
STG_E_ACCESSDENIED Autorisations insuffisantes pour créer un flux.
STG_E_FILEALREADYEXISTS Le nom spécifié pour le flux existe déjà dans l’objet de stockage et le paramètre grfMode inclut la valeur STGM_FAILIFTHERE.
STG_E_INSUFFICIENTMEMORY Le flux n’a pas été créé en raison d’un manque de mémoire.
STG_E_INVALIDFLAG La valeur spécifiée pour le paramètre grfMode n’est pas une valeur de constantes STGM valide.
STG_E_INVALIDFUNCTION La combinaison spécifiée d’indicateurs dans le paramètre grfMode n’est pas prise en charge ; par exemple, lorsque cette méthode est appelée sans l’indicateur STGM_SHARE_EXCLUSIVE.
STG_E_INVALIDNAME Valeur non valide pour pwcsName.
STG_E_INVALIDPOINTER Le pointeur spécifié pour l’objet de flux n’était pas valide.
STG_E_INVALIDPARAMETER L'un des paramètres n'était pas valide.
STG_E_REVERTED L’objet de stockage a été invalidé par une opération de rétablissement au-dessus de lui dans l’arborescence des transactions.
STG_E_TOOMANYOPENFILES Le flux n’a pas été créé, car il y a trop de fichiers ouverts.

Remarques

Si un flux portant le nom spécifié dans le paramètre pwcsName existe déjà et que le paramètre grfMode inclut l’indicateur STGM_CREATE, le flux existant est remplacé par un flux nouvellement créé. La destruction de l’ancien flux et la création du nouvel objet de flux sont soumises au mode transaction sur l’objet de stockage parent.

L’implémentation de fichier composé fournie par COM de la méthode IStorage ::CreateStream ne prend pas en charge les comportements suivants :

  • L’indicateur STGM_DELETEONRELEASE n’est pas pris en charge.
  • Le mode transactionné (STGM_TRANSACTED) n’est pas pris en charge pour les objets de flux.
  • L’ouverture du même flux plusieurs fois à partir du même stockage n’est pas prise en charge. L’indicateur STGM_SHARE_EXCLUSIVE mode de partage doit être spécifié dans le paramètre grfMode .
Si le flux existe déjà et que grfMode est défini sur STGM_FAILIFTHERE, cette méthode échoue avec la valeur de retour STG_E_FILEALREADYEXISTS.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau | Applications UWP]
Plateforme cible Windows
En-tête objidl.h
Bibliothèque Uuid.lib
DLL Ole32.dll

Voir aussi

IStorage - Implémentation de fichiers composés

IStorage ::OpenStream

IStream