IMAPISupport::IStorageFromStream
Область применения: Outlook 2013 | Outlook 2016
Реализует объект хранилища для доступа к потоку.
HRESULT IStorageFromStream(
LPUNKNOWN lpUnkIn,
LPCIID lpInterface,
ULONG ulFlags,
LPSTORAGE FAR * lppStorageOut
);
Параметры
lpUnkIn
[в] Указатель на объект потока.
lpInterface
[в] Указатель на идентификатор интерфейса (IID), представляющий интерфейс, используемый для доступа к потоку, на который указывает lpUnkIn. Допустимы любые из следующих значений: IID_IStream, IID_ILockBytes или NULL, что указывает на то, что для доступа к потоку должен использоваться интерфейс IStream .
ulFlags
[в] Битовая маска флагов, управляющая способом создания объекта хранилища относительно объекта потока. По умолчанию хранилище создается с доступом только для чтения, а поток начинается с нулевой позиции в хранилище. Можно задать следующие флаги:
STGSTRM_CREATE
Для объекта stream должен быть создан новый объект хранилища.
STGSTRM_CURRENT
Объект хранилища должен начинаться с текущей позиции потока.
STGSTRM_MODIFY
Вызывающий объект должен иметь разрешение на чтение и запись для возвращаемого объекта хранилища.
STGSTRM_RESET
Объект хранилища должен начинаться с нулевой позиции.
lppStorageOut
[out] Указатель на указатель на объект хранилища.
Возвращаемое значение
S_OK
Объект хранилища успешно создан.
Замечания
Метод IMAPISupport::IStorageFromStream реализован для всех объектов поддержки поставщика услуг. Поставщики услуг вызывают IStorageFromStream , чтобы создать объект хранилища, используемый для открытия определенных свойств. Поставщикам служб, имеющим собственную реализацию интерфейса IStorage , не нужно вызывать IStorageFromStream.
Объект хранилища, созданный IStorageFromStream , вызывает метод IUnknown::AddRef потока для увеличения числа ссылок, а затем уменьшает число при освобождении хранилища.
Примечания для вызывающих методов
При вызове метода IMAPIProp::OpenProperty одного из объектов для открытия свойства с интерфейсом IStorage выполните следующие задачи:
Откройте объект потока с разрешением на чтение и запись для свойства .
Внутренне пометьте поток свойств как объект хранилища.
Вызовите IStorageFromStream , чтобы создать объект хранилища.
Возвращает указатель на этот объект хранилища.
Если вы реализуете дополнительные интерфейсы, использующие объект хранилища, создайте объект, который обключает объект хранилища и реализует метод IUnknown::QueryInterface более высокого уровня.
Не разрешайте открытие свойства с помощью интерфейса IStream , если оно было создано с помощью IStorage. И наоборот, не разрешайте открытие свойства с помощью интерфейса IStorage , если оно было создано с помощью IStream.
За одним исключением допустимо использовать интерфейс IStreamDocfile для потоковой передачи объекта хранилища из одного контейнера в другой, но идентификатор IID_IStreamDocfile интерфейса должен передаваться в параметре lpInterface метода OpenProperty.