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


Интерфейс IStream (objidl.h)

Интерфейс IStream позволяет считывать и записывать данные в объекты потоковой передачи. Stream объекты содержат данные в объекте структурированного хранилища, где хранилища предоставляют структуру. Простые данные можно записывать непосредственно в поток, но чаще всего потоки являются элементами, вложенными в объект хранилища. Они похожи на стандартные файлы.

Интерфейс IStream определяет методы, аналогичные функциям ФАЙЛОВ MS-DOS FAT. Например, каждый объект потока имеет собственные права доступа и указатель поиска. Main разница между DOS-файлом и объектом потока заключается в том, что в последнем случае потоки открываются с помощью указателя интерфейса IStream, а не дескриптора файла.

Методы в этом интерфейсе представляют данные объекта в виде непрерывной последовательности байтов, которые можно считывать или записывать. Существуют также методы фиксации и отмены изменений в потоках, открытых в режиме транзакций, и методы для ограничения доступа к диапазону байтов в потоке.

Потоки могут оставаться открытыми в течение длительного времени без использования ресурсов файловой системы. Метод IUnknown::Release аналогичен функции закрытия для файла. После освобождения объект потока становится недействительным и не может использоваться.

Клиенты асинхронных моникеров могут выбрать модель извлечения данных или отправки данных для асинхронной операции IMoniker::BindToStorage и получения асинхронных уведомлений. Дополнительные сведения см. в разделе Моникеры URL-адресов . В следующей таблице сравнивается поведение асинхронных вызовов ISequentialStream::Read и IStream::Seek , возвращаемых в IBindStatusCallback::OnDataAvailable в этих двух моделях загрузки:

Вызов метода IStream Поведение в модели извлечения данных Поведение в модели отправки данных
Чтение вызывается для чтения частичных данных (т. е. не всех доступных данных). Возвращает S_OK. Клиент должен продолжить чтение всех доступных данных перед возвратом из IBindStatusCallback::OnDataAvailable , иначе операция привязки будет заблокирована. (т. е. чтение до возврата S_FALSE или E_PENDING) Возвращает S_OK. Даже если клиент возвращается из IBindStatusCallback::OnDataAvailable на этом этапе, операция привязки продолжается, и IBindStatusCallback::OnDataAvailable будет вызываться повторно до завершения привязки.
Метод Read вызывается для чтения всех доступных данных. Возвращает E_PENDING, если операция привязки не завершена, и при появлении дополнительных данных будет вызван IBindStatusCallback::OnDataAvailable . То же, что и модель извлечения данных.
Метод Read вызывается для чтения всех доступных данных, и операция привязки завершена (конец файла). Возвращает S_FALSE. Последующий вызов метода IBindStatusCallback::OnDataAvailable с флагом grfBSC , равным BSCF_LASTDATANOTIFICATION. То же, что и модель извлечения данных.
Поиск называется Поиск не работает в модели извлечения данных Поиск не работает в модели отправки данных.
 

Общие сведения по этой теме см. в разделах Асинхронные моникеры и Модель извлечения данных и модель отправки данных . Кроме того, дополнительные сведения о правилах COM для управления памятью см. в разделе Управление выделением памяти .

Наследование

Интерфейс IStream наследуется от интерфейса ISequentialStream . IStream также содержит следующие типы элементов:

Методы

Интерфейс IStream содержит следующие методы.

 
IStream::Clone

Метод Clone создает новый объект потока с собственным указателем поиска, который ссылается на те же байты, что и исходный поток.
IStream::Commit

Метод Commit гарантирует, что все изменения, внесенные в объект потока, открытый в режиме транзакций, отражаются в родительском хранилище.
IStream::CopyTo

Копирует указанное число байтов из текущего указателя поиска в потоке до текущего указателя поиска в другом потоке.
IStream::LockRegion

Метод LockRegion ограничивает доступ к указанному диапазону байтов в потоке.
IStream::Revert

Метод Revert отменяет все изменения, внесенные в поток транзакций с момента последнего вызова IStream::Commit. На потоки, открытые в прямом режиме, и потоки, использующие реализацию составного COM-файла IStream::Revert, этот метод не оказывает никакого влияния.
IStream::Seek

Изменяет указатель поиска на новое расположение. Новое расположение определяется относительно начала потока, конца потока или текущего указателя поиска.
IStream::SetSize

Изменяет размер объекта-потока.
IStream::Stat

Метод Stat извлекает структуру STATSTG для этого потока.
IStream::UnlockRegion

Метод UnlockRegion удаляет ограничение доступа к диапазону байтов, ранее ограниченному с помощью IStream::LockRegion.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Профессиональная [классические приложения | Приложения UWP]
Минимальная версия сервера Windows 2000 Server [классические приложения | Приложения UWP]
Целевая платформа Windows
Header objidl.h

См. также раздел

ISequentialStream

IStream — реализация составного файла