Partager via


IDebugHostEvaluator3 ::EvaluateExtendedExpression, méthode (dbgmodel.h)

La méthode EvaluateExtendedExpression est similaire à la méthode EvaluateExpression, sauf qu’elle retourne des fonctionnalités supplémentaires non linguistiques qu’un hôte de débogage particulier choisit d’ajouter à son évaluateur d’expression. Pour les outils de débogage pour Windows, par exemple, cela permet des types anonymes, des requêtes LINQ, des qualificateurs de module, des spécificateurs de format et d’autres fonctionnalités autres que C/C++.

Il est important de noter qu’il n’existe aucune garantie qu’une expression qui est évaluée par rapport à un hôte via EvaluateExtendedExpression évalue correctement par rapport à un autre hôte qui débogue la même langue. Les extensions de l’évaluateur d’expression sont la vue d’ensemble d’un hôte donné. Il est fortement recommandé que les clients utilisent la méthode EvaluateExpression au lieu de la méthode EvaluateExtendedExpression pour cette raison exacte. L’utilisation de cette méthode réduit la portabilité de l’appelant.

Syntaxe

HRESULT EvaluateExtendedExpression(
  IDebugHostContext           *context,
  PCWSTR                      expression,
  IModelObject                *bindingContext,
  _COM_Errorptr_ IModelObject **result,
  IKeyStore                   **metadata
);

Paramètres

context

Contexte hôte dans lequel l’évaluation d’expression se produit. S’il existe, par exemple, des lectures de mémoire de la cible en raison de déréférences de pointeur, l’espace d’adressage dans lequel ces lectures de mémoire sont effectuées est donné par cet argument.

expression

Expression à évaluer. Cela peut utiliser des extensions privées d’hôte pour la syntaxe du langage.

bindingContext

Contexte de liaison dans lequel les noms de symboles (variable) seront recherchés. Pour C++, cela équivaut sémantiquement à cette valeur de pointeur.

result

La valeur résultante de l’évaluation de l’expression est retournée ici.

metadata

Toutes les métadonnées associées à l’expression ou au résultat sont retournées ici.

Valeur de retour

Cette méthode retourne HRESULT qui indique la réussite ou l’échec.

Remarques

Exemple de code

ComPtr<IDebugHost> spHost; /* get the host */

ComPtr<IDebugHostEvaluator2> spEval;
if (SUCCEEDED(spHost.As(&spEval)))
{
    ComPtr<IModelObject> spNotepadProcesses;

    // We can use any syntax that's private to the host (not only 
    // language syntax).  This is not necessarily portable from host to host
    if (SUCCEEDED(spEval->EvaluateExtendedExpression(
        USE_CURRENT_HOST_CONTEXT, 
        L"@$cursession->Processes.Where(p => p.Name == \"notepad.exe\")", 
        nullptr, 
        &spNotepadProcesses, 
        nullptr)))
    {
        // spNotepadProcesses will contain a collection of every process 
        // named (exactly) "notepad.exe".  Such can be iterated with IIterableConcept.
    }
}

Exigences

Exigence Valeur
d’en-tête dbgmodel.h

Voir aussi

interface IDebugHostEvaluator3