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


IMetaDataEmit::GetSaveSize Method

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

Syntax

HRESULT GetSaveSize (
    [in]  CorSaveSize fSave,
    [out] DWORD       *pdwSaveSize
);

Parameters

fSave [in] Значение перечисления CorSaveSize , указывающее, требуется ли получить точный или приблизительный размер. Допустимы только три значения: cssAccurate, cssQuick и cssDiscardTransientCAs:

  • cssAccurate возвращает точный размер сохранения, но требует больше времени для вычисления.

  • cssQuick возвращает размер, заполненный для безопасности, но занимает меньше времени для вычисления.

  • cssDiscardTransientCAs сообщает GetSaveSize , что он может выбросить удаленные настраиваемые атрибуты.

pdwSaveSize [out] Указатель на размер, необходимый для сохранения файла.

Remarks

GetSaveSize вычисляет необходимое пространство в байтах, чтобы сохранить сборку и все ее метаданные в текущей области. (Вызов метода IMetaDataEmit::SaveToStream выдает это число байтов.)

Если вызывающий объект реализует интерфейс IMapToken (через IMetaDataEmit::SetHandler или IMetaDataEmit::Merge), GetSaveSize выполните два передачи метаданных для оптимизации и сжатия. В противном случае оптимизация не выполняется.

При выполнении оптимизации первый проход просто сортирует структуры метаданных для настройки производительности поиска во время импорта. Этот шаг обычно приводит к перемещению записей с побочным эффектом, который маркеры, сохраненные средством для будущей ссылки, являются недействительными. Метаданные не сообщают вызывающему объекту этих маркеров до момента второго прохода, однако. Во втором проходе выполняются различные оптимизации, которые предназначены для уменьшения общего размера метаданных, таких как оптимизация (ранняя привязка) mdTypeRef и mdMemberRef маркеры, когда ссылка относится к типу или члену, объявленному в текущей области метаданных. В этом проходе происходит еще один раунд сопоставления маркеров. После этого обработчик метаданных уведомляет вызывающий объект через его IMapToken интерфейс о любых измененных значениях маркеров.

Requirements

Платформ: См. сведения о поддерживаемых операционных системах .NET.

Header: Cor.h

Library: CorGuids.lib

See also