Partager via


ICorProfilerInfo13 ::CreateHandle, méthode

Crée un handle qui encapsule 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 à encapsuler avec un handle.

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

pHandle
[out] Pointeur fourni par l’appelant qui pointe vers le handle créé pour encapsuler le pointeur spécifié object.

Remarques

Voici les utilisations attendues en fonction de la valeur spécifiée 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 renvoie une valeur Null ObjectID.
  • COR_PRF_HANDLE_TYPE_STRONG: applique qu’un objet survive aux garbage collections même si aucun autre objet ne le fait référence.
  • COR_PRF_HANDLE_TYPE_PINNED: identique à un handle fort, mais garantit également que l’objet reste à la même adresse en mémoire pendant les garbage collections.

Pour vous assurer que la object référence est valide, cette méthode doit être appelée à partir d’une ICorProfilerCallback méthode 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 quand il a été reçu.

N’oubliez pas d’appeler ICorProfilerInfo13 ::D estroyHandle une fois qu’un handle créé n’est plus nécessaire. Il est recommandé d’avoir moins de 4 096 handles alloués en même temps pour éviter d’affecter les performances du garbage collector.

Spécifications

Plates-formes: Consultez les 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