Partager via


Méthode ICorProfilerInfo13::CreateHandle

Crée un descripteur qui enveloppe un objet spécifié.

Syntaxe

    HRESULT CreateHandle(
                [in] ObjectID            object,
                [in] COR_PRF_HANDLE_TYPE type,
                [out] ObjectHandleID*    pHandle);

Paramètres

object
[in] Référence d’objet à inclure dans un wrapper avec un descripteur.

type
[in] Type de descripteur à créer.

pHandle
[out] Pointeur fourni par l’appelant qui pointe vers le descripteur créé pour envelopper le .object

Notes

Voici les utilisations attendues en fonction de la valeur spécifiée de COR_PRF_HANDLE_TYPE :

  • COR_PRF_HANDLE_TYPE_WEAK : surveille si un objet reste en mémoire au fil du temps. Si l’objet encapsulé a été collecté, ICorProfilerInfo13::GetObjectIDFromHandle retourne une valeur ObjectID nulle.
  • COR_PRF_HANDLE_TYPE_STRONG : force un objet à survive aux garbage collections même si aucun autre objet ne le référence.
  • COR_PRF_HANDLE_TYPE_PINNED : identique à un descripteur fort, mais garantit également que l’objet reste à la même adresse en mémoire pendant les garbage collections.

Pour vous assurer que la référence object est valide, cette méthode doit être appelée à partir d’une méthode ICorProfilerCallback telle que ICorProfilerCallback::ObjectAllocated. Vous ne pouvez pas appeler CreateHandle à partir d’un écouteur asynchrone EventPipe. L’objet reçu via une charge utile d’événement a peut-être été supprimé ou déplacé en mémoire si un garbage collection s’est produit entre le moment où l’événement a été émis et le moment où il a été reçu.

N’oubliez pas d’appeler ICorProfilerInfo13::D estroyHandle une fois que le descripteur créé n’est plus nécessaire. Il est recommandé d’avoir moins de 4 096 descripteurs alloués en même temps pour éviter d’affecter les performances du récupérateur de mémoire.

Spécifications

Plateformes : Consultez Systèmes d’exploitation pris en charge par .NET.

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

Versions de .NET : Disponible depuis .NET 7.0

Voir aussi