Partager via


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

Voir aussi