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


Метод IAppxFile::GetStream (appxpackaging.h)

Возвращает поток только для чтения, содержащий несжатое содержимое файла.

Синтаксис

HRESULT GetStream(
  [out, retval] IStream **stream
);

Параметры

[out, retval] stream

Тип: IStream**

Поток только для чтения, содержащий несжатое содержимое файла.

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

Тип: HRESULT

Если метод завершается успешно, он возвращает S_OK.

[Неустранимая] Коды ошибок OPC (0x8051xxxx), если заголовок локального файла или дескриптор данных в ZIP-архиве недопустимы. Эта ошибка приводит к тому, что весь потребитель ZIP OPC переходит в недопустимое состояние. После возникновения этой ошибки доступ к другому файлу из объекта IAppxPackageReader не будет.

HRESULT_FROM_WIN32 (ERROR_CRC) (0x80070017), если поток был прочитан ранее и его CRC был недопустим.

Возвращает значение из возвращенных методов IStream Read и CopyTo.

[Неустранимая] HRESULT_FROM_WIN32 (ERROR_CRC) (0x80070017), если весь поток был считан, а его CRC признан недопустимым

APPX_E_CORRUPT_CONTENT (0x80080206), если содержимое файла не может быть распаковано (из-за повреждения ZIP-файла)

HRESULT_FROM_WIN32(ERROR_INVALID_DATA) (0x8007000d), если блок в файле не может быть прочитан полностью или размер блока непредвиден

APPX_E_BLOCK_HASH_INVALID (0x80080207), если содержимое блоков этого файла не соответствует его хэшу на карте блоков

Комментарии

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

Проверка файлов полезных данных является "отложенной". При первом вызове метода GetStream файла проверяется локальный заголовок и дескриптор данных соответствующего элемента ZIP-файла, что может привести к сбою GetStream . Последующие вызовы GetStream в том же файле не повторяют эти проверки. Контрольная сумма CRC элемента ZIP-файла проверяется только в том случае, если поток считывается полностью в последовательном порядке.

Экземпляры IStream , возвращаемые для файлов полезных данных, оптимизированы для последовательного доступа. Хотя поддерживается случайный доступ к потоку, этот случайный доступ может выполняться медленнее и более интенсивно использовать ЦП. Мы рекомендуем по возможности выполнять одно последовательное чтение этих потоков. Чтение одного и того же диапазона несколько раз поддерживается, но не рекомендуется для повышения производительности; рекомендуется кэширование таких диапазонов, если этого требует сценарий использования.

Требования

Требование Значение
Минимальная версия клиента Windows 8 [только классические приложения]
Минимальная версия сервера Windows Server 2012 [только классические приложения]
Целевая платформа Windows
Header appxpackaging.h

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

IAppxFile

IAppxPackageReader