ICorProfilerInfo2::GetClassLayout — Metoda
Pobiera informacje o układzie w pamięci pól zdefiniowanych przez określoną klasę. Oznacza to, że ta metoda pobiera przesunięcia pól klasy.
Składnia
HRESULT GetClassLayout(
[in] ClassID classID,
[in, out] COR_FIELD_OFFSET rFieldOffset[],
[in] ULONG cFieldOffset,
[out] ULONG *pcFieldOffset,
[out] ULONG *pulClassSize);
Parametry
classID
[w] Identyfikator klasy, dla której zostanie pobrany układ.
rFieldOffset
[in, out] Tablica struktur COR_FIELD_OFFSET , z których każda zawiera tokeny i przesunięcia pól klasy.
cFieldOffset
[w] Rozmiar tablicy rFieldOffset
.
pcFieldOffset
[out] Wskaźnik do całkowitej liczby dostępnych elementów. Jeśli cFieldOffset
wartość to 0, ta wartość wskazuje liczbę potrzebnych elementów.
pulClassSize
[out] Wskaźnik do lokalizacji zawierającej rozmiar w bajtach klasy.
Uwagi
Metoda GetClassLayout
zwraca tylko pola zdefiniowane przez samą klasę. Jeśli klasa nadrzędna klasy ma również zdefiniowane pola, profiler musi wywołać GetClassLayout
klasę nadrzędną, aby uzyskać te pola.
Jeśli używasz GetClassLayout
z klasami ciągów, metoda zakończy się niepowodzeniem z kodem błędu E_INVALIDARG. Użyj elementu ICorProfilerInfo2::GetStringLayout , aby uzyskać informacje o układzie ciągu. GetClassLayout
również zakończy się niepowodzeniem po wywołaniu klasy tablicy.
Po GetClassLayout
powrocie należy sprawdzić, czy rFieldOffset
bufor był wystarczająco duży, aby zawierał wszystkie dostępne COR_FIELD_OFFSET
struktury. W tym celu należy porównać wartość pcFieldOffset
wskazującą na rozmiar dzielony przez rozmiar rFieldOffset
COR_FIELD_OFFSET
struktury. Jeśli rFieldOffset
nie jest wystarczająco duży, przydziel większy rFieldOffset
bufor, zaktualizuj cFieldOffset
go przy użyciu nowego, większego rozmiaru i wywołaj GetClassLayout
ponownie.
Alternatywnie można najpierw wywołać GetClassLayout
bufor o zerowej długości rFieldOffset
, aby uzyskać prawidłowy rozmiar buforu. Następnie można ustawić rozmiar buforu na wartość zwróconą w pcFieldOffset
i wywołać GetClassLayout
ponownie.
Wymagania
Platformy: Zobacz Wymagania systemowe.
Nagłówka: CorProf.idl, CorProf.h
Biblioteki: CorGuids.lib
.NET Framework wersje: dostępne od wersji 2.0