IStorage::CreateStream, méthode (objidl.h)

La méthode CreateStream crée et ouvre un objet de flux avec le nom spécifié contenu dans cet objet de stockage. Tous les éléments d’un objet de stockage, à la fois des flux et d’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 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 de longueur, sans inclure le 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 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 l’ensemble des données nécessaires n’est actuellement pas disponible.
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 restauration au-dessus de celle-ci dans l’arborescence des transactions.
STG_E_TOOMANYOPENFILES Le flux n’a pas été créé, car il existe trop de fichiers ouverts.

Notes

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 nouveau flux créé. La destruction de l’ancien flux et la création de l’objet de flux sont soumises au mode transaction sur l’objet de stockage parent.

L’implémentation de fichier composé fourni 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 Transacted (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 en mode partage STGM_SHARE_EXCLUSIVE 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

   
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 fichier composé

IStorage::OpenStream

IStream