Share via


ICLRProfiling::AttachProfiler, méthode

Attache le profileur spécifié au processus spécifié.

Syntaxe

HRESULT AttachProfiler(  
  [in] DWORD dwProfileeProcessID,  
  [in] DWORD dwMillisecondsMax,                     // optional  
  [in] const CLSID * pClsidProfiler,  
  [in] LPCWSTR wszProfilerPath,                     // optional  
  [in] size_is(cbClientData)] void * pvClientData,  // optional  
  [in] UINT cbClientData);                          // optional  

Paramètres

dwProfileeProcessID
[in] ID du processus auquel le profileur doit être attaché. Sur un ordinateur 64 bits, le nombre de bits du processus profilé doit correspondre au nombre de bits du processus déclencheur qui appelle AttachProfiler. Si le compte d'utilisateur sous lequel AttachProfiler est appelé dispose de privilèges d'administrateur, le processus cible peut être n'importe quel processus sur le système. Sinon, le processus cible doit appartenir au même compte d'utilisateur.

dwMillisecondsMax
[in] Durée d'attente, en millisecondes, pour qu'AttachProfiler se termine. Le processus déclencheur doit passer un délai d'attente suffisant pour permettre au profileur spécifique de terminer son initialisation.

pClsidProfiler
[in] Pointeur vers le CLSID du profileur à charger. Le processus déclencheur peut réutiliser cette mémoire suite au retour d'AttachProfiler.

wszProfilerPath
[in] Chemin d’accès complet au fichier DLL du profileur à charger. Cette chaîne ne doit pas comporter plus de 260 caractères, y compris le terminateur null. Si wszProfilerPath est null ou une chaîne vide, le Common Language Runtime (CLR) essaie de trouver l'emplacement du fichier DLL du profileur en recherchant le CLSID dans le Registre vers lequel pClsidProfiler pointe.

pvClientData
[in] Pointeur vers les données à passer au profileur par la méthode ICorProfilerCallback3::InitializeForAttach. Le processus déclencheur peut réutiliser cette mémoire suite au retour d'AttachProfiler. Si pvClientData a la valeur null, cbClientData doit être égal à 0 (zéro).

cbClientData
[in] Taille, en octets, des données vers lesquelles pvClientData pointe.

Valeur de retour

Cette méthode retourne les HRESULT suivants.

HRESULT Description
S_OK Le profileur spécifié est correctement attaché au processus cible.
CORPROF_E_PROFILER_ALREADY_ACTIVE Un profileur est déjà actif ou en cours d'attachement au processus cible.
CORPROF_E_PROFILER_NOT_ATTACHABLE Le profileur spécifié ne prend pas en charge l'attachement. Le processus déclencheur peut essayer d'attacher un profileur différent.
CORPROF_E_PROFILEE_INCOMPATIBLE_WITH_TRIGGER Impossible de demander un attachement de profileur, car la version du processus cible est incompatible avec le processus actuel qui appelle AttachProfiler.
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED) L'utilisateur du processus déclencheur n'a pas accès au processus cible.
HRESULT_FROM_WIN32(ERROR_PRIVILEGE_NOT_HELD) L'utilisateur du processus déclencheur ne dispose pas des privilèges nécessaires pour attacher un profileur au processus cible donné. Le journal des événements de l'application peut contenir des d'informations supplémentaires.
CORPROF_E_IPC_FAILED Un échec s'est produit lors de la communication avec le processus cible. Cela se produit généralement quand le processus cible s'arrête.
HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) Le processus cible n'existe pas ou n'exécute pas un CLR prenant en charge l'attachement. Cela peut indiquer que le CLR a été déchargé depuis l'appel à la méthode d'énumération du runtime.
HRESULT_FROM_WIN32(ERROR_TIMEOUT) Le délai d'attente a expiré avant le chargement du profileur. Vous pouvez réessayer l'opération d'attachement. L'expiration d'un délai d'attente se produit quand un finaliseur du processus cible s'exécute plus longtemps que la valeur du délai d'attente.
E_INVALIDARG Un ou plusieurs paramètres ont des valeurs non valides.
E_FAIL Un autre échec non spécifié s'est produit.
Autres codes d'erreur Si la méthode ICorProfilerCallback3::InitializeForAttach du profileur retourne un HRESULT qui indique un échec, AttachProfiler retourne ce même HRESULT. Dans ce cas, E_NOTIMPL est converti en CORPROF_E_PROFILER_NOT_ATTACHABLE.

Notes

Gestion de la mémoire

Conformément aux conventions COM, l'appelant d'AttachProfiler (par exemple, le code déclencheur créé par le développeur du profileur) est chargé de l'allocation et de la libération de la mémoire pour les données vers lesquelles le paramètre pvClientData pointe. Quand le CLR exécute l'appel AttachProfiler, il fait une copie de la mémoire vers laquelle pvClientData pointe et la transmet au processus cible. Quand le CLR à l'intérieur du processus cible reçoit sa propre copie du bloc pvClientData, il passe le bloc au générateur de profils via la méthode InitializeForAttach, puis libère sa copie du bloc pvClientData du processus cible.

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 4

Voir aussi