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


Метод IAppxFactory3::CreatePackageReader2 (appxpackaging.h)

Важно!

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

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

Синтаксис

HRESULT CreatePackageReader2(
  [in]          IStream            *inputStream,
  [in,optional] LPCWSTR            expectedDigest,
  [out]         IAppxPackageReader **packageReader
);

Параметры

[in] inputStream

Входной поток, доставляющий пакет для чтения. Поток должен поддерживать ISequentialStream::Read, IStream::Seek и IStream::Stat. Если эти методы завершаются ошибкой, коды ошибок могут быть переданы и возвращены этим методом.

[in,optional] expectedDigest

LPCWSTR, содержащий ожидаемый дайджест, хэш-представление файла пакета.

[out] packageReader

Созданное средство чтения пакетов.

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

Если метод завершается успешно, он возвращает S_OK. В противном случае возвращается код ошибки, который включает в себя, помимо прочего, те, которые приведены в следующей таблице.

Код возврата Описание
APPX_E_INTERLEAVING_NOT_ALLOWED ZIP-файл, доставляемый inputStream , является пакетом OPC с чередованием.
APPX_E_RELATIONSHIPS_NOT_ALLOWED Пакет OPC, предоставляемый inputStream , содержит связи между пакетом и частью OPC.
APPX_E_MISSING_REQUIRED_FILE Пакет OPC, доставляемый inputStream , не имеет манифеста, карты блоков или файла сигнатуры при наличии каталога CI.
APPX_E_INVALID_MANIFEST Недопустимый манифест пакета.
APPX_E_INVALID_BLOCKMAP Карта блоков пакетов недопустимая, список файлов в центральном каталоге ZIP не соответствует списку файлов на карте блоков или размер файлов, перечисленных в центральном каталоге ZIP, не соответствует размерам файлов и блоков, перечисленным в схеме блоков.
APPX_E_DIGEST_MISMATCH Дайджест объекта не соответствует дайджесту, предоставленному в expectedDigest.

Комментарии

Метод CreatePackageReader2 немедленно извлекает элементы занимаемой части пакета приложения через поток и проверяет их содержимое. Этот метод выполняется успешно, только если пакет OPC и все элементы занимаемой области (включая центральный каталог ZIP, манифест, [Content_Types].xml и карту блоков) являются допустимыми.

Получите строку дайджеста для параметра expecteDigest , вызвав IAppxDigestProvider::GetDigest.

Примеры

Примеры см. в разделах Краткое руководство. Извлечение содержимого пакета приложения и Краткое руководство. Чтение сведений о манифесте пакета приложения.

Требования

Требование Значение
Заголовок appxpackaging.h