OpenStreamOnFileW

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 akzeptiert UNICODE-Zeichenfolgen als Argumente, im Gegensatz zur ANSI-Version dieser Funktion OpenStreamOnFile, und lässt daher beliebige Zeichen im Dateinamen zu, einschließlich pfad und Dateierweiterung.

Info Wert
Exportiert von:
olmapi32.dll
Implementiert von:
Outlook
Aufgerufen von:
Clientanwendungen und Dienstanbieter
HRESULT STDMETHODCALLTYPE OpenStreamOnFileW(
  LPALLOCATEBUFFER lpAllocateBuffer,
  LPFREEBUFFER lpFreeBuffer,
  ULONG ulFlags,
  LPWSTR lpszFileName,
  LPWSTR lpszPrefix,
  LPSTREAM FAR * lppStream
);

Parameter

lpAllocateBuffer

[in] Zeiger auf die MAPIAllocateBuffer-Funktion , die zum Zuweisen 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 verwendet werden, um die Erstellung oder das Öffnen der Datei zu steuern, auf die über das OLE IStream-Objekt zugegriffen werden soll. Die folgenden Flags können festgelegt werden:

SOF_UNIQUEFILENAME

Für das IStream-Objekt soll 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 lpszFileName-Parameter 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 soll gelöscht werden, wenn das IStream-Objekt freigegeben wird. Wenn der lpszFileName-Parameter 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 benannten Unicode-Datei, für die OpenStreamOnFileW 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, ruft OpenStreamOnFileW einen geeigneten Pfad vom System ab, und sowohl die flags STGM_CREATE als auch STGM_DELETEONRELEASE müssen festgelegt werden.

lpszPrefix

[in] Das Präfix für den Unicode-Dateinamen, unter dem OpenStreamOnFileW 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 aufgrund von schreibgeschützten Dateien nicht zugegriffen werden.

MAPI_E_NOT_FOUND

Die angegebene Datei ist nicht vorhanden.

Hinweise

Die OpenStreamOnFileW-Funktion bietet zwei wichtige Verwendungsmöglichkeiten zusätzlich zur Behandlung einer Datei mit einem Unicode-Namen, die sich durch die Einstellung des SOF_UNIQUEFILENAME-Flags unterscheiden. Wenn dieses Flag nicht festgelegt ist, öffnet OpenStreamOnFileW ein IStream-Objekt in einer vorhandenen Datei, um z. B. dessen Inhalt mithilfe der IStream::CopyTo-Methode in die eigenschaft PR_ATTACH_DATA_BIN (PidTagAttachDataBinary) einer Anlage zu kopieren. In diesem Fall gibt der Parameter lpszFileName den Pfad und dateinamen der Datei an.

Wenn SOF_UNIQUEFILENAME festgelegt ist, erstellt OpenStreamOnFileW eine temporäre Datei, die Daten für ein IStream-Objekt enthält. Für diese Verwendung kann der lpszFileName-Parameter optional den Pfad zu dem Verzeichnis angeben, 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 aufrufende Dienstanbieter mit dem IStream-Objekt fertig ist, sollte es durch Aufrufen der OLE IStream::Release-Methode freigegeben werden.

MAPI verwendet die Funktionen, auf die lpAllocateBuffer und lpFreeBuffer verweisen, für die meisten Speicherbelegung und -freigabe, insbesondere, um Arbeitsspeicher für die Verwendung durch Clientanwendungen beim Aufrufen von Objektschnittstellen wie IMAPIProp::GetProps und IMAPITable::QueryRows zuzuweisen.

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

Siehe auch

OpenStreamOnFile