Udostępnij przez


IMetaDataEmit::GetSaveSize Method

Pobiera szacowany rozmiar binarny zestawu i jego metadanych w bieżącym zakresie.

Syntax

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

Parameters

fSave [in] Wartość wyliczenia CorSaveSize , która określa, czy uzyskać dokładny lub przybliżony rozmiar. Prawidłowe są tylko trzy wartości: cssAccurate, cssQuick i cssDiscardTransientCAs:

  • Funkcja cssAccurate zwraca dokładny rozmiar zapisywania, ale obliczenie trwa dłużej.

  • cssQuick zwraca rozmiar, wyściełany pod kątem bezpieczeństwa, ale zajmuje mniej czasu na obliczenie.

  • cssDiscardTransientCAs informuje GetSaveSize , że może odrzucać odrzucane atrybuty niestandardowe.

pdwSaveSize [out] Wskaźnik do rozmiaru wymaganego do zapisania pliku.

Remarks

GetSaveSize oblicza wymagane miejsce w bajtach, aby zapisać zestaw i wszystkie jego metadane w bieżącym zakresie. (Wywołanie metody IMetaDataEmit::SaveToStream spowoduje emisję tej liczby bajtów).

Jeśli obiekt wywołujący implementuje interfejs IMapToken (za pośrednictwem interfejsu IMetaDataEmit::SetHandler lub IMetaDataEmit::Merge), GetSaveSize wykona dwa przejścia przez metadane, aby je zoptymalizować i skompresować. W przeciwnym razie nie są wykonywane żadne optymalizacje.

W przypadku przeprowadzenia optymalizacji pierwszy pass po prostu sortuje struktury metadanych, aby dostroić wydajność wyszukiwań w czasie importu. Ten krok zwykle powoduje przeniesienie rekordów z efektem ubocznym, który tokeny przechowywane przez narzędzie do przyszłego odwołania są unieważniane. Metadane nie informują obiektu wywołującego o tych zmianach tokenu dopiero po drugim przekazaniu. W drugim przebiegu są wykonywane różne optymalizacje, które mają na celu zmniejszenie ogólnego rozmiaru metadanych, takich jak optymalizacja (wczesne powiązanie) mdTypeRef i mdMemberRef tokenów, gdy odwołanie dotyczy typu lub elementu członkowskiego zadeklarowanego w bieżącym zakresie metadanych. W tym przebiegu następuje kolejna runda mapowania tokenów. Po wykonaniu tej operacji aparat metadanych powiadamia obiekt wywołujący za pośrednictwem interfejsu IMapToken o wszelkich zmienionych wartościach tokenu.

Requirements

Platformy: Zobacz Obsługiwane systemy operacyjne platformy .NET.

Header: Cor.h

Library: CorGuids.lib

See also