Freigeben über


ICorProfilerInfo2::GetClassLayout-Methode

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, wird bei der Methode ein Fehler mit dem Fehlercode E_INVALIDARG ausgelöst. Verwenden Sie ICorProfilerInfo2::GetStringLayout, um Informationen zum Layout einer Zeichenfolge abzurufen. GetClassLayout schlägt auch fehl, wenn der Aufruf mit einer Arrayklasse erfolgt.

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. Anschließend können Sie die Puffergröße auf den Wert festlegen, der von pcFieldOffset zurückgegeben wurde, und GetClassLayout erneut aufrufen.

Weitere Informationen über diese beiden Ansätze finden Sie unter Konventionen für Profilerstellungs-API-Methoden.

Anforderungen

Plattformen: siehe Systemanforderungen für .NET Framework.

Header: CorProf.idl, CorProf.h

Bibliothek: CorGuids.lib

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

Siehe auch

Referenz

ICorProfilerInfo-Schnittstelle

ICorProfilerInfo2-Schnittstelle

Weitere Ressourcen

Profilerstellungsschnittstellen

Profilerstellung (Referenz zur nicht verwalteten API)