Freigeben über


OpenStreamOnFile

Gilt für: Outlook 2013 | Outlook 2016

Ordnet ein OLE-IStream-Objekt zu und initialisiert es, um auf den Inhalt einer Datei zuzugreifen. Diese Funktion verwendet eine ANSI-Zeichenfolge als Dateinamen, einschließlich des Pfads und der Dateierweiterung. Daher wird die Verwendung der Unicode-Version dieser Funktion OpenStreamOnFileWempfohlen.

Item Wert
Headerdatei
Mapiutil.h
Implementiert von:
MAPI
Aufgerufen von:
Clientanwendungen und Dienstanbieter
HRESULT STDMETHODCALLTYPE OpenStreamOnFile(
  LPALLOCATEBUFFER lpAllocateBuffer,
  LPFREEBUFFER lpFreeBuffer,
  ULONG ulFlags,
  LPSTR lpszFileName,
  LPSTR lpszPrefix,
  LPSTREAM FAR * lppStream
);

Parameter

lpAllocateBuffer

[in] Zeiger auf die MAPIAllocateBuffer-Funktion, die zum Zuordnen von Arbeitsspeicher verwendet werden soll.

lpFreeBuffer

[in] Zeiger auf die MAPIFreeBuffer-Funktion, die zum Freigeben von Arbeitsspeicher verwendet werden soll.

ulFlags

[in] Bitmaske von Flags, die zum Steuern der Erstellung oder des Öffnens der Datei verwendet werden, auf die über das OLE IStream-Objekt zugegriffen werden soll. Die folgenden Flags können festgelegt werden:

SOF_UNIQUEFILENAME

Für das IStream--Objekt muss eine temporäre Datei erstellt werden. Wenn dieses Flag festgelegt ist, sollten auch die Flags STGM_CREATE und STGM_READWRITE festgelegt werden.

STGM_CREATE

Die Datei soll auch dann erstellt werden, wenn sie bereits vorhanden ist. Wenn der Parameter lpszFileName nicht festgelegt ist, müssen sowohl dieses Flag als auch STGM_DELETEONRELEASE festgelegt werden. Wenn STGM_CREATE festgelegt ist, muss auch das Flag STGM_READWRITE festgelegt werden.

STGM_DELETEONRELEASE

Die Datei muss gelöscht werden, wenn das IStream-Objekt freigegeben wird. Wenn der Parameter lpszFileName nicht festgelegt ist, müssen sowohl dieses Flag als auch STGM_CREATE festgelegt werden.

STGM_READ

Die Datei soll mit schreibgeschütztem Zugriff erstellt oder geöffnet werden.

STGM_READWRITE

Die Datei soll mit Lese-/Schreibberechtigung erstellt oder geöffnet werden. Wenn dieses Flag nicht festgelegt ist, darf auch das STGM_CREATE-Flag nicht festgelegt werden.

lpszFileName

[in] Der Dateiname, einschließlich Pfad und Erweiterung, der Datei, für die OpenStreamOnFile das IStream-Objekt initialisiert. Wenn das SOF_UNIQUEFILENAME-Flag festgelegt ist, enthält lpszFileName den Pfad zu dem Verzeichnis, in dem eine temporäre Datei erstellt werden soll. Wenn lpszFileName NULL ist, erhält OpenStreamOnFile einen geeigneten Pfad vom System, und sowohl die Flags STGM_CREATE als auch STGM_DELETEONRELEASE müssen festgelegt werden.

lpszPrefix

[in] Das Präfix für den Dateinamen, mit dem OpenStreamOnFile das IStream-Objekt initialisiert. Wenn festgelegt, darf das Präfix nicht mehr als drei Zeichen enthalten. Wenn lpszPrefix NULL ist, wird das Präfix „SOF“ verwendet.

lppStream

[out] Zeiger auf einen Zeiger auf ein Objekt, das die IStream-Schnittstelle verfügbar macht.

Rückgabewert

S_OK

Der Aufruf erfolgreich ausgeführt und der erwartete Wert oder Werte zurückgegeben hat.

MAPI_E_NO_ACCESS

Auf die Datei konnte aufgrund unzureichender Benutzerberechtigungen oder weil schreibgeschützte Dateien nicht geändert werden können, nicht zugegriffen werden.

MAPI_E_NOT_FOUND

Die angegebene Datei ist nicht vorhanden.

Hinweise

Die OpenStreamOnFile-Funktion hat zwei wichtige Verwendungsmöglichkeiten, die sich durch die Einstellung des SOF_UNIQUEFILENAME-Flags unterscheiden. Wenn dieses Flag nicht festgelegt ist, öffnet OpenStreamOnFile ein IStream-Objekt für eine vorhandene Datei, z. B. zum Kopieren des Inhalts in die PR_ATTACH_DATA_BIN (PidTagAttachDataBinary)-Eigenschaft einer Anlage mithilfe der IStream:: CopyTo-Methode. In diesem Fall gibt der Parameter lpszFileName den Pfad und Dateinamen der Datei an.

Wenn SOF_UNIQUEFILENAME festgelegt ist, erstellt OpenStreamOnFile eine temporäre Datei zum Speichern von Daten für ein IStream-Objekt. Für diese Verwendung kann der Parameter lpszFileName optional den Pfad zum Verzeichnis festlegen, in dem die Datei erstellt werden soll, und der lpszPrefix-Parameter kann optional ein Präfix für den Dateinamen angeben.

Wenn die aufrufende Clientanwendung oder der Dienstanbieter mit dem IStream--Objekt fertig ist, sollte es durch Aufrufen der OLE-IStream::Release-Methode freigegeben werden.

MAPI verwendet die Funktionen, auf die von lpAllocateBuffer und lpFreeBuffer verwiesen wird, für die meisten Speicherbelegungen und -freigaben, insbesondere zum Zuordnen von Arbeitsspeicher für die Verwendung durch Clientanwendungen beim Aufrufen von Objektschnittstellen wie IMAPIProp::GetProps und IMAPITable:: QueryRows.

Hinweise für Aufrufer

Das Flag SOF_UNIQUEFILENAME wird verwendet, um eine temporäre Datei mit einem für das Messagingsystem eindeutigen Namen zu erstellen. Wenn dieses Flag festgelegt ist, gibt der lpszFileName-Parameter den Pfad für die temporäre Datei an, und der lpszPrefix-Parameter enthält die Präfixzeichen des Dateinamens. Der erstellte Dateiname ist das <Präfix>HHHH. TMP, wobei HHHHH eine Hexadezimalzahl ist. Wenn lpszFileName NULL ist, wird die Datei im temporären Dateiverzeichnis erstellt, das von der Windows-Funktion GetTempPath zurückgegeben wird, oder im aktuellen Verzeichnis, wenn kein temporäres Dateiverzeichnis festgelegt wurde.

Wenn das Flag SOF_UNIQUEFILENAME nicht festgelegt ist, wird lpszPrefix ignoriert, und lpszFileName sollte den vollqualifizierten Pfad und Dateinamen der zu öffnenden oder zu erstellenden Datei enthalten. Die Datei wird basierend auf den anderen Flags geöffnet oder erstellt, die in ulFlags festgelegt sind.

MFCMAPI-Referenz

Einen MFCMAP-Beispielcode finden Sie in der folgenden Tabelle.

Datei Funktion Kommentar
File.cpp
WriteAttachStreamToFile
MFCMAPI verwendet die OpenStreamOnFile-Methode, um einen Stream für eine Datei zu öffnen, damit eine Anlage in diese geschrieben werden kann.

Siehe auch

MFCMAPI (engl.) als ein Codebeispiel