Freigeben über


ICorProfilerInfo2::GetClassLayout-Methode

Aktualisiert: November 2007

Ruft im Arbeitsspeicher Informationen zum Layout der Felder ab, die von der angegebenen Klasse definiert sind. Das heißt, diese Methode ruft die Offsets der Felder der Klasse ab.

HRESULT GetClassLayout(
    [in]  ClassID classID,
    [in, out] COR_FIELD_OFFSET rFieldOffset[],
    [in]  ULONG cFieldOffset,
    [out] ULONG *pcFieldOffset,
    [out] ULONG *pulClassSize);

Parameter

  • classID
    [in] Die ID der Klasse, für die das Layout abgerufen werden soll.

  • rFieldOffset
    [in, out] Ein Array von COR_FIELD_OFFSET-Strukturen, von denen jede die Tokens und Offsets der Klassenfelder enthält.

  • cFieldOffset
    [in] Die Größe des rFieldOffset-Arrays.

  • pcFieldOffset
    [out] ein Zeiger auf die Gesamtzahl verfügbarer Elemente. Wenn cFieldOffset 0 (null) ist, gibt dieser Wert die Anzahl der benötigten Elemente an.

  • pulClassSize
    [out] Ein Zeiger auf einen Speicherort, der die Größe der Klasse in Bytes enthält.

Hinweise

Die GetClassLayout-Methode gibt nur die von der Klasse selbst definierten Felder zurück. Wenn die zugehörige übergeordnete Klasse Felder definiert hat, muss der Profiler in der übergeordneten Klasse GetClassLayout aufrufen, um diese Felder abzurufen.

Wenn Sie GetClassLayout mit Zeichenfolgenklassen verwenden, schlägt diese Methode zwar nicht fehl, die zurückgegebenen Daten sind jedoch nicht korrekt. Verwenden Sie ICorProfilerInfo2::GetStringLayout, um Informationen zum Layout einer Zeichenfolge abzurufen. GetClassLayout schlägt bei einem Aufruf mit einer Arrayklasse fehl.

Nachdem GetClassLayout beendet wurde, müssen Sie sicherstellen, dass der rFieldOffset-Puffer groß genug war, um alle verfügbaren COR_FIELD_OFFSET-Strukturen aufzunehmen. Vergleichen Sie hierzu den Wert, auf den pcFieldOffset verweist, mit der Größe von rFieldOffset, dividiert durch die Größe einer COR_FIELD_OFFSET-Struktur. Wenn rFieldOffset nicht groß genug ist, weisen Sie einen größeren rFieldOffset-Puffer zu, aktualisieren cFieldOffset mit der neuen Größe und rufen GetClassLayout erneut auf.

Sie können auch zunächst den GetClassLayout mit einem rFieldOffset-Puffer der Größe 0 (null) aufrufen, um die richtige Puffergröße zu ermitteln. Sie können die Puffergröße dann auf den Wert festlegen, der von pcFieldOffset zurückgegeben wurde, und erneut GetClassLayout aufrufen.

Weitere Informationen über diese beiden Ansätze finden Sie unter Vom Aufrufer reservierte Puffer in der Profilerstellungs-API.

Anforderungen

Plattformen: siehe Systemanforderungen für .NET Framework.

Header: CorProf.idl

Bibliothek: CorGuids.lib

.NET Framework-Versionen: 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Siehe auch

Referenz

ICorProfilerInfo

ICorProfilerInfo2

Weitere Ressourcen

Profilerstellungsschnittstellen

Profilerstellung (Referenz zur nicht verwalteten API)