IMetaDataEmit::GetSaveSize 메서드

현재 범위에서 어셈블리 및 해당 메타데이터의 예상 이진 크기를 가져옵니다.

구문

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

매개 변수

fSave
[in] 정확한 크기를 가져올지 또는 대략적인 크기를 가져올지 여부를 지정하는 CorSaveSize 열거형의 값입니다. cssAccurate, cssQuick, cssDiscardTransientCA의 세 가지 값만 유효합니다.

  • cssAccurate는 정확한 저장 크기를 반환하지만 계산하는 데 시간이 더 걸립니다.

  • cssQuick은 안전을 위해 패딩된 크기를 반환하지만 계산하는 데 시간이 덜 걸립니다.

  • cssDiscardTransientCA는 GetSaveSize에 삭제 가능한 사용자 지정 특성을 버릴 수 있음을 알려줍니다.

pdwSaveSize
[out] 파일을 저장하는 데 필요한 크기에 대한 포인터입니다.

설명

GetSaveSize는 어셈블리 및 모든 메타데이터를 현재 범위에 저장하는 데 필요한 공간을 바이트 단위로 계산합니다. (IMetaDataEmit::SaveToStream 메서드를 호출하면 이 바이트 수를 내보냄).

호출자가 IMetaDataEmit::SetHandler 또는 IMetaDataEmit::Merge를 통해 IMapToken 인터페이스를 구현하는 경우 GetSaveSize는 메타데이터를 통해 두 번의 패스를 수행하여 이를 최적화하고 압축합니다. 그렇지 않으면, 최적화가 수행되지 않습니다.

최적화가 수행되면 첫 번째 패스는 메타데이터 구조를 정렬하여 가져오기 시간 검색의 성능을 조정하기만 하면 됩니다. 이 단계에서는 일반적으로 나중에 참조하기 위해 도구에서 보존하는 토큰이 무효화되는 부작용과 함께 레코드를 이동하게 됩니다. 그러나 메타데이터는 두 번째 패스가 끝날 때까지 이러한 토큰 변경 내용을 호출자에게 알리지 않습니다. 두 번째 패스에서는 현재 메타데이터 범위에서 선언된 형식 또는 멤버에 대한 참조인 경우 mdTypeRefmdMemberRef 토큰 최적화(초기 바인딩)와 같이 메타데이터의 전체 크기를 줄이기 위한 다양한 최적화가 수행됩니다. 이 패스에서는 다른 토큰 매핑 라운드가 수행됩니다. 이 패스 후, 메타데이터 엔진은 해당 IMapToken 인터페이스를 통해 호출자에게 변경된 토큰 값을 알립니다.

요구 사항

플랫폼:시스템 요구 사항을 참조하세요.

헤더: Cor.h

라이브러리: MsCorEE.dll에서 리소스로 사용됨

.NET Framework 버전: 1.1부터 사용 가능

참고 항목