ICorProfilerInfo2::GetClassLayout, méthode
Obtient des informations sur la disposition, dans la mémoire, des champs définis par la classe spécifiée. Autrement dit, cette méthode obtient les offsets des champs de la classe.
Syntaxe
HRESULT GetClassLayout(
[in] ClassID classID,
[in, out] COR_FIELD_OFFSET rFieldOffset[],
[in] ULONG cFieldOffset,
[out] ULONG *pcFieldOffset,
[out] ULONG *pulClassSize);
Paramètres
classID
[in] ID de la classe pour laquelle les informations sont récupérées.
rFieldOffset
[in, out] Tableau de structures COR_FIELD_OFFSET, chacune contenant les jetons et les décalages des champs de la classe.
cFieldOffset
[in] Taille du tableau rFieldOffset
.
pcFieldOffset
[out] Pointeur vers le nombre total d'éléments disponibles. Si cFieldOffset
est égal à 0, cette valeur indique le nombre d'éléments requis.
pulClassSize
[out] Pointeur vers un emplacement qui contient la taille, en octets, de la classe.
Notes
La méthode GetClassLayout
retourne uniquement les champs définis par la classe elle-même. Si la classe parente de la classe a également défini des champs, le profileur doit appeler GetClassLayout
sur la classe parente pour obtenir ces champs.
Si vous utilisez GetClassLayout
avec des classes string, la méthode échoue avec le code d'erreur E_INVALIDARG. Utilisez ICorProfilerInfo2::GetStringLayout pour obtenir des informations sur la disposition d’une chaîne. La méthode GetClassLayout
échoue également quand elle est appelée avec une classe array.
Suite au retour de GetClassLayout
, vous devez vérifier que la mémoire tampon rFieldOffset
est suffisamment grande pour contenir toutes les structures COR_FIELD_OFFSET
disponibles. Pour ce faire, comparez la valeur vers laquelle pointe pcFieldOffset
au résultat de la division de la taille de rFieldOffset
par la taille d'une structure COR_FIELD_OFFSET
. Si la taille de rFieldOffset
n'est pas suffisante, allouez une mémoire tampon rFieldOffset
plus grande, mettez à jour cFieldOffset
pour refléter la nouvelle taille et rappelez GetClassLayout
.
Vous pouvez également commencer par appeler GetClassLayout
avec un tampon rFieldOffset
de longueur nulle pour obtenir la taille correcte du tampon. Vous pouvez ensuite affecter à la taille de la mémoire tampon la valeur retournée dans pcFieldOffset
et rappeler GetClassLayout
.
Spécifications
Plateformes : Consultez Configuration requise.
En-tête : CorProf.idl, CorProf.h
Bibliothèque : CorGuids.lib
Versions de .NET Framework : Disponible depuis la version 2.0