Partager via


ICorProfilerInfo2::GetClassLayout Method

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 décalages des champs de la classe.

Syntax

HRESULT GetClassLayout(
    [in]  ClassID classID,
    [in, out] COR_FIELD_OFFSET rFieldOffset[],
    [in]  ULONG cFieldOffset,
    [out] ULONG *pcFieldOffset,
    [out] ULONG *pulClassSize);

Parameters

classID [in] ID de la classe pour laquelle la disposition sera récupérée.

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 rFieldOffset tableau.

pcFieldOffset [out] Pointeur vers le nombre total d’éléments disponibles. Si cFieldOffset la valeur est 0, cette valeur indique le nombre d’éléments nécessaires.

pulClassSize [out] Pointeur vers un emplacement qui contient la taille, en octets, de la classe.

Remarks

La GetClassLayout méthode 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 la classe parente pour obtenir ces champs.

Si vous utilisez GetClassLayout des classes de chaîne, 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. GetClassLayout échoue également lorsqu’elle est appelée avec une classe de tableau.

Une fois GetClassLayout retourné, vous devez vérifier que la rFieldOffset mémoire tampon était suffisamment grande pour contenir toutes les structures disponibles COR_FIELD_OFFSET . Pour ce faire, comparez la valeur qui pcFieldOffset pointe vers la taille de rFieldOffset la structure divisée par la taille d’une COR_FIELD_OFFSET structure. S’il rFieldOffset n’est pas assez grand, allouez une mémoire tampon plus grande rFieldOffset , mettez à jour cFieldOffset avec la nouvelle, plus grande taille et appelez GetClassLayout à nouveau.

Vous pouvez également d’abord appeler GetClassLayout avec une mémoire tampon de longueur rFieldOffset nulle pour obtenir la taille correcte de la mémoire tampon. Vous pouvez ensuite définir la taille de la mémoire tampon sur la valeur retournée pcFieldOffset et appeler GetClassLayout à nouveau.

Requirements

Plateformes : Consultez Configuration requise.

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

Library: CorGuids.lib

versions du .NET Framework : disponible depuis la version 2.0

See also