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 .
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 |