Freigeben über


IStorage::CreateStorage-Methode (objidl.h)

Die CreateStorage-Methode erstellt und öffnet ein neues Speicherobjekt, das in diesem Speicherobjekt geschachtelt ist, mit dem angegebenen Namen im angegebenen Zugriffsmodus.

Syntax

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

Parameter

[in] pwcsName

Ein Zeiger auf eine Unicode-Zeichenfolge mit Breitzeichen mit NULL-Endung, die den Namen des neu erstellten Speicherobjekts enthält. Der Name kann später verwendet werden, um das Speicherobjekt erneut zu öffnen. Der Name darf nicht länger als 31 Zeichen sein, wobei das Zeichenfolgenabschlusszeichen nicht enthalten ist. Die Zeichen 000 bis 01f, welche als erste Zeichen des Namens des Datenstroms/Speichers dienen, sind durch die OLE für die Benutzung reserviert. Dies ist eine Verbunddateieinschränkung, keine strukturierte Speichereinschränkung.

[in] grfMode

Ein -Wert, der den Zugriffsmodus angibt, der beim Öffnen des neu erstellten Speicherobjekts verwendet werden soll. Weitere Informationen und eine Beschreibung möglicher Werte finden Sie unter STGM-Konstanten.

[in] reserved1

Für die zukünftige Verwendung reserviert. Muss 0 (null) sein.

[in] reserved2

Für die zukünftige Verwendung reserviert. Muss 0 (null) sein.

[out] ppstg

Bei erfolgreicher Ausführung ein Zeiger auf den Speicherort des IStorage-Zeigers auf das neu erstellte Speicherobjekt. Dieser Parameter wird auf NULL festgelegt, wenn ein Fehler auftritt.

Rückgabewert

Diese Methode kann einen dieser Werte zurückgeben.

Rückgabecode Beschreibung
S_OK Das Speicherobjekt wurde erfolgreich erstellt.
E_PENDING Nur asynchroner Speicher: Ein Teil oder alle erforderlichen Daten sind derzeit nicht verfügbar.
STG_E_ACCESSDENIED Nicht genügend Berechtigungen zum Erstellen eines Speicherobjekts.
STG_E_FILEALREADYEXISTS Der für das Speicherobjekt angegebene Name ist bereits im Speicherobjekt vorhanden, und der grfMode-Parameter enthält das Flag STGM_FAILIFTHERE.
STG_E_INSUFFICIENTMEMORY Das Speicherobjekt wurde aufgrund eines Mangels an Arbeitsspeicher nicht erstellt.
STG_E_INVALIDFLAG Der für den grfMode-Parameter< angegebene Wert ist kein gültiger STGM-Konstantenwert . Der für den grfMode-Parameter angegebene Wert ist kein gültiger.
STG_E_INVALIDFUNCTION Die angegebene Kombination von Flags im grfMode-Parameter wird nicht unterstützt.
STG_E_INVALIDNAME Kein gültiger Wert für pwcsName.
STG_E_INVALIDPOINTER Der für das Speicherobjekt angegebene Zeiger war ungültig.
STG_E_INVALIDPARAMETER Einer der Parameter war ungültig.
STG_E_REVERTED Das Speicherobjekt wurde durch einen rückgängig machen Vorgang darüber in der Transaktionsstruktur ungültig gemacht.
STG_E_TOOMANYOPENFILES Das Speicherobjekt wurde nicht erstellt, da zu viele geöffnete Dateien vorhanden sind.
STG_S_CONVERTED Der vorhandene Stream mit dem angegebenen Namen wurde durch ein neues Speicherobjekt ersetzt, das einen einzelnen Stream namens CONTENTS enthält. Das neue Speicherobjekt wird hinzugefügt.

Hinweise

Wenn im übergeordneten Speicherobjekt bereits ein Speicher mit dem im parameter pwcsName angegebenen Namen vorhanden ist und der grfMode-Parameter das flag STGM_CREATE enthält, wird der vorhandene Speicher durch den neuen ersetzt. Wenn der grfMode-Parameter das flag STGM_CONVERT enthält, wird das vorhandene Element in ein Streamobjekt namens CONTENTS konvertiert, und das neue Speicherobjekt wird erstellt, das das CONTENTS-Streamobjekt enthält. Die Zerstörung des alten Elements und die Erstellung des neuen Speicherobjekts unterliegen beide dem Transaktionsmodus für das übergeordnete Speicherobjekt. Beachten Sie, dass Sie STGM_CONVERT nicht verwenden können, wenn Sie auch STGM_CREATE verwenden.

Die von COM bereitgestellte Verbunddateiimplementierung der IStorage::CreateStorage-Methode unterstützt das folgende Verhalten nicht:

  • Das STGM_PRIORITY-Flag für Nicht-Stammspeicher.
  • Dasselbe Speicherobjekt wird mehrmals aus demselben übergeordneten Speicher geöffnet. Das flag STGM_SHARE_EXCLUSIVE muss angegeben werden.
  • Das STGM_DELETEONRELEASE-Flag. Wenn dieses Flag angegeben ist, gibt die Funktion STG_E_INVALIDFLAG zurück.
Wenn bereits ein Speicherobjekt mit demselben Namen vorhanden ist und grfMode auf STGM_FAILIFTHERE festgelegt ist, schlägt diese Methode mit dem Rückgabewert STG_E_FILEALREADYEXISTS fehl.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile objidl.h
Bibliothek Uuid.lib
DLL Ole32.dll

Weitere Informationen

IStorage – Implementierung von Zusammengesetzten Dateien

IStorage::OpenStorage