Интерфейс 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 |