Freigeben über


ICorProfilerInfo2::GetClassLayout-Methode

Ruft aus dem Arbeitsspeicher Informationen über das Layout der Felder ab, die durch die angegebene Klasse definiert sind . Das heißt, diese Methode ruft die Offsets der Felder der Klasse ab.

Syntax

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 das Layout abgerufen werden soll.

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

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

pcFieldOffset
[out] Ein Zeiger auf die Gesamtzahl der verfügbaren Elemente. Wenn cFieldOffset gleich 0 ist, gibt dieser Wert gibt die Anzahl von benötigten Elementen an.

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

Bemerkungen

Die GetClassLayout-Methode gibt nur die von der Klasse selbst definierten Felder zurück. Wenn die übergeordnete Klasse der Klasse ebenfalls Felder definiert hat, muss der Profiler die GetClassLayout-Methode für die übergeordnete Klasse aufrufen, um diese Felder abzurufen.

Wenn Sie GetClassLayout mit Zeichenfolgenklassen verwenden, schlägt die Methode mit dem Fehlercode E_INVALIDARG fehl. Verwenden Sie ICorProfilerInfo2::GetStringLayout, um Informationen zum Layout einer Zeichenfolge abzurufen. Die GetClassLayout-Methode schlägt auch fehl, wenn sie mit einer Arrayklasse aufgerufen wird.

Nachdem GetClassLayout abgeschlossen ist, 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 Sie cFieldOffset mit der neuen Größe, und rufen Sie GetClassLayout erneut auf.

Alternativ können Sie zuerst GetClassLayout mit einem rFieldOffset-Puffer der Länge 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 GetClassLayout erneut aufrufen.

Anforderungen

Plattformen: Informationen finden Sie unter Systemanforderungen.

Header: CorProf.idl, CorProf.h

Bibliothek: CorGuids.lib

.NET Framework-Versionen: Seit 2.0 verfügbar.

Siehe auch