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


Метод IMetaDataEmit::GetSaveSize

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

Синтаксис

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

Параметры

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

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

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

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

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

Комментарии

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

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

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

Требования

Платформы: см. раздел Требования к системе.

Заголовка: Cor.h

Библиотека: Используется в качестве ресурса в MSCorEE.dll

платформа .NET Framework версии: доступно с версии 1.1

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