ICorProfilerInfo2::GetClassLayout, metod
Hämtar information om layouten i minnet för de fält som definierats av den angivna klassen. Den här metoden hämtar alltså förskjutningarna för klassens fält.
Syntax
HRESULT GetClassLayout(
[in] ClassID classID,
[in, out] COR_FIELD_OFFSET rFieldOffset[],
[in] ULONG cFieldOffset,
[out] ULONG *pcFieldOffset,
[out] ULONG *pulClassSize);
Parametrar
classID
[in] ID:t för klassen som layouten ska hämtas för.
rFieldOffset
[in, ut] En matris med COR_FIELD_OFFSET strukturer, som var och en innehåller token och förskjutningar av klassens fält.
cFieldOffset
[in] Matrisens rFieldOffset
storlek.
pcFieldOffset
[ut] En pekare till det totala antalet tillgängliga element. Om cFieldOffset
är 0 anger det här värdet antalet element som behövs.
pulClassSize
[ut] En pekare till en plats som innehåller klassens storlek i byte.
Kommentarer
Metoden GetClassLayout
returnerar endast de fält som definieras av själva klassen. Om klassens överordnade klass även har definierat fält måste profileraren anropa GetClassLayout
den överordnade klassen för att hämta dessa fält.
Om du använder GetClassLayout
med strängklasser misslyckas metoden med felkoden E_INVALIDARG. Använd ICorProfilerInfo2::GetStringLayout för att få information om layouten för en sträng. GetClassLayout
misslyckas också när den anropas med en matrisklass.
När GetClassLayout
du har returnerat måste du kontrollera att bufferten rFieldOffset
var tillräckligt stor för att innehålla alla tillgängliga COR_FIELD_OFFSET
strukturer. Det gör du genom att jämföra värdet som pcFieldOffset
pekar på med storleken rFieldOffset
på dividerat med storleken på en COR_FIELD_OFFSET
struktur. Om rFieldOffset
inte är tillräckligt stor allokerar du en större rFieldOffset
buffert, uppdaterar cFieldOffset
med den nya, större storleken och anropar GetClassLayout
igen.
Du kan också först anropa GetClassLayout
med en buffert med noll längd rFieldOffset
för att få rätt buffertstorlek. Du kan sedan ange buffertstorleken till det värde som returneras och pcFieldOffset
anropa GetClassLayout
igen.
Krav
Plattformar: Se Systemkrav.
Huvudet: CorProf.idl, CorProf.h
Bibliotek: CorGuids.lib
.NET Framework versioner: Tillgänglig sedan 2.0