Partager via


ICorProfilerInfo2::GetClassLayout, méthode

Obtient des informations sur la disposition, en 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.

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 la disposition sera récupérée.

  • rFieldOffset
    [in, out] Tableau de structures COR_FIELD_OFFSET, qui contiennent chacune les jetons et les offsets des champs de la classe.

  • cFieldOffset
    [in] Taille du tableau rFieldOffset.

  • pcFieldOffset
    [out] Pointeur vers le nombre total d'éléments disponibles. Si cFieldOffset a la valeur 0, cette valeur indique alors 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 alors appeler GetClassLayout sur la classe parente pour obtenir ces champs.

Si vous utilisez GetClassLayout avec les 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 lorsqu'elle est appelée avec une classe Array.

Une fois la valeur de GetClassLayout retournée, vous devez vérifier que la taille de la mémoire tampon rFieldOffset était suffisante pour contenir toutes les structures COR_FIELD_OFFSET disponibles. Pour ce faire, divisez la valeur pointée par pcFieldOffset vers la taille de rFieldOffset par la taille d'une structure COR_FIELD_OFFSET. Si la taille de rFieldOffset est insuffisante, allouez une mémoire tampon rFieldOffset plus grande, mettez à jour cFieldOffset avec la nouvelle taille plus grande et appelez de nouveau GetClassLayout.

Vous pouvez également commencer par appeler GetClassLayout avec une mémoire tampon rFieldOffset dont la taille est nulle pour obtenir la taille correcte de la mémoire tampon. Vous pouvez ensuite affecter à la taille de la mémoire tampon la valeur retournée dans pcFieldOffset et appeler de nouveau GetClassLayout.

Pour plus d'informations sur ces deux méthodes, consultez Conventions de méthode de l'API de profilage.

Configuration requise

Plateformes : consultez Configuration requise du .NET Framework.

En-tête : CorProf.idl, CorProf.h

Bibliothèque : CorGuids.lib

Versions du .NET Framework : 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Voir aussi

Référence

ICorProfilerInfo, interface

ICorProfilerInfo2, interface

Autres ressources

Interfaces de profilage

Profilage (Référence des API non managées)