Поделиться через


OpenStreamOnFileW

Область применения: Outlook 2013 | Outlook 2016

Выделяет и инициализирует объект OLE IStream для доступа к содержимому файла. Эта функция принимает строки ЮНИКОДа в качестве аргументов, в отличие от версии ANSI этой функции OpenStreamOnFile, и, таким образом, допускает произвольные символы в имени файла, включая путь и расширение файла.

Информация Value (Значение)
Экспортировано:
olmapi32.dll
Реализовано в:
Outlook
Вызывающая сторона:
Клиентские приложения и поставщики услуг
HRESULT STDMETHODCALLTYPE OpenStreamOnFileW(
  LPALLOCATEBUFFER lpAllocateBuffer,
  LPFREEBUFFER lpFreeBuffer,
  ULONG ulFlags,
  LPWSTR lpszFileName,
  LPWSTR lpszPrefix,
  LPSTREAM FAR * lppStream
);

Параметры

lpAllocateBuffer

[в] Указатель на функцию MAPIAllocateBuffer , используемую для выделения памяти.

lpFreeBuffer

[в] Указатель на функцию MAPIFreeBuffer , которая будет использоваться для освобождения памяти.

ulFlags

[в] Битовая маска флагов, используемая для управления созданием или открытием файла, доступ к которым осуществляется через объект OLE IStream . Можно задать следующие флаги:

SOF_UNIQUEFILENAME

Для объекта IStream необходимо создать временный файл. Если этот флаг установлен, также следует задать флаги STGM_CREATE и STGM_READWRITE.

STGM_CREATE

Файл должен быть создан, даже если он уже существует. Если параметр lpszFileName не задан, необходимо задать как этот флаг, так и STGM_DELETEONRELEASE. Если STGM_CREATE задано, необходимо также задать флаг STGM_READWRITE.

STGM_DELETEONRELEASE

Файл удаляется при освобождении объекта IStream . Если параметр lpszFileName не задан, необходимо задать как этот флаг, так и STGM_CREATE.

STGM_READ

Файл должен быть создан или открыт с доступом только для чтения.

STGM_READWRITE

Файл должен быть создан или открыт с разрешением на чтение и запись. Если этот флаг не задан, флаг STGM_CREATE также не должен быть установлен.

lpszFileName

[в] Имя файла, включая путь и расширение, файла Юникода с именем, для которого OpenStreamOnFileW инициализирует объект IStream . Если флаг SOF_UNIQUEFILENAME установлен, lpszFileName содержит путь к каталогу, в котором создается временный файл. Если lpszFileName имеет значение NULL, OpenStreamOnFileW получает соответствующий путь из системы, и необходимо задать флаги STGM_CREATE и STGM_DELETEONRELEASE.

lpszPrefix

[в] Префикс для имени файла Юникода, в котором OpenStreamOnFileW инициализирует объект IStream . Если задано значение , префикс должен содержать не более трех символов. Если lpszPrefix имеет значение NULL, используется префикс SOF.

lppStream

[out] Указатель на указатель на объект, предоставляющий интерфейс IStream .

Возвращаемое значение

S_OK

����� ������� � ������ ��������� ��������� ��� ��������.

MAPI_E_NO_ACCESS

Не удалось получить доступ к файлу из-за недостаточных разрешений пользователя или из-за невозможности изменения файлов только для чтения.

MAPI_E_NOT_FOUND

Указанный файл не существует.

Замечания

Функция OpenStreamOnFileW имеет два важных применения помимо обработки файла с именем Юникода, отличающегося настройкой флага SOF_UNIQUEFILENAME. Если этот флаг не задан, OpenStreamOnFileW открывает объект IStream в существующем файле, например для копирования его содержимого в свойство PR_ATTACH_DATA_BIN (PidTagAttachDataBinary) вложения с помощью метода IStream::CopyTo . В этом случае параметр lpszFileName указывает путь и имя файла.

Если задано SOF_UNIQUEFILENAME, OpenStreamOnFileW создает временный файл для хранения данных для объекта IStream . Для этого использования параметр lpszFileName может при необходимости указать путь к каталогу, в котором должен быть создан файл, а параметр lpszPrefix может при необходимости указать префикс для имени файла.

Когда вызывающее клиентское приложение или поставщик услуг завершает работу с объектом IStream , он должен освободить его, вызвав метод OLE IStream::Release .

MAPI использует функции, на которые указывают lpAllocateBuffer и lpFreeBuffer , для выделения памяти и освобождения, в частности для выделения памяти для использования клиентскими приложениями при вызове интерфейсов объектов, таких как IMAPIProps::GetProps и IMAPITable::QueryRows.

Примечания для вызывающих методов

Флаг SOF_UNIQUEFILENAME используется для создания временного файла с именем, уникальным для системы обмена сообщениями. Если этот флаг задан, параметр lpszFileName определяет путь к временному файлу, а параметр lpszPrefix содержит символы префикса имени файла. Созданное имя файла является <префиксом>HHHH. TMP, где HHHH — шестнадцатеричное число. Если lpszFileName имеет значение NULL, файл будет создан во временном каталоге файлов, возвращаемом функцией Windows GetTempPath, или в текущем каталоге, если временный каталог файлов не был назначен.

Если флаг SOF_UNIQUEFILENAME не задан, lpszPrefix игнорируется, а lpszFileName должен содержать полный путь и имя файла, который необходимо открыть или создать. Файл будет открыт или создан на основе других флагов, установленных в ulFlags.

См. также

OpenStreamOnFile