Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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. |