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

La méthode CreateStorage crée et ouvre un nouvel objet de stockage imbriqué dans cet objet de stockage avec le nom spécifié dans le mode d’accès spécifié.

Syntaxe

HRESULT CreateStorage(
  [in]  const OLECHAR *pwcsName,
  [in]  DWORD         grfMode,
  [in]  DWORD         reserved1,
  [in]  DWORD         reserved2,
  [out] IStorage      **ppstg
);

Paramètres

[in] pwcsName

Pointeur vers une chaîne Unicode terminée par un caractère null large qui contient le nom de l’objet de stockage nouvellement créé. Le nom peut être utilisé ultérieurement pour rouvrir l’objet de stockage. 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

Valeur qui spécifie le mode d’accès à utiliser lors de l’ouverture de l’objet de stockage nouvellement créé. Pour plus d’informations et une description 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] ppstg

Pointeur, en cas de réussite, vers l’emplacement du pointeur IStorage vers l’objet de stockage nouvellement créé. Ce paramètre est défini sur NULL si une erreur se produit.

Valeur retournée

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

Code de retour Description
S_OK L’objet de stockage 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 objet de stockage.
STG_E_FILEALREADYEXISTS Le nom spécifié pour l’objet de stockage existe déjà dans l’objet de stockage et le paramètre grfMode inclut l’indicateur STGM_FAILIFTHERE.
STG_E_INSUFFICIENTMEMORY L’objet de stockage 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 constante STGM valide. la valeur spécifiée pour le paramètre grfMode n’est pas valide
STG_E_INVALIDFUNCTION La combinaison spécifiée d’indicateurs dans le paramètre grfMode n’est pas prise en charge.
STG_E_INVALIDNAME Valeur non valide pour pwcsName.
STG_E_INVALIDPOINTER Le pointeur spécifié pour l’objet de stockage 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 L’objet de stockage n’a pas été créé, car il y a trop de fichiers ouverts.
STG_S_CONVERTED Le flux existant portant le nom spécifié a été remplacé par un nouvel objet de stockage contenant un flux unique appelé CONTENTS. Le nouvel objet de stockage sera ajouté.

Remarques

Si un stockage portant le nom spécifié dans le paramètre pwcsName existe déjà dans l’objet de stockage parent et que le paramètre grfMode inclut l’indicateur STGM_CREATE, le stockage existant est remplacé par le nouveau. Si le paramètre grfMode inclut l’indicateur STGM_CONVERT, l’élément existant est converti en un objet de flux nommé CONTENTS et le nouvel objet de stockage est créé contenant l’objet de flux CONTENTS. La destruction de l’ancien élément et la création du nouvel objet de stockage sont toutes deux soumises au mode transaction sur l’objet de stockage parent. N’oubliez pas que vous ne pouvez pas utiliser STGM_CONVERT si vous utilisez également STGM_CREATE.

L’implémentation de fichier composé fourni par COM de la méthode IStorage ::CreateStorage ne prend pas en charge le comportement suivant :

  • Indicateur STGM_PRIORITY pour les stockages non root.
  • Ouverture du même objet de stockage plusieurs fois à partir du même stockage parent. L’indicateur STGM_SHARE_EXCLUSIVE doit être spécifié.
  • Indicateur STGM_DELETEONRELEASE. Si cet indicateur est spécifié, la fonction retourne STG_E_INVALIDFLAG.
Si un objet de stockage portant le même nom 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 ::OpenStorage