? (Évaluer l'expression)

La commande point d’interrogation? () évalue et affiche la valeur d’une expression.

Un point d’interrogation lui-même ( ?) affiche l’aide de commande. La ? commande expression évalue l’expression donnée.

? Expression

Paramètres

Expression

Indique l’expression à évaluer.

Environnement

Élément Description
Modes Mode utilisateur, mode noyau
Targets Live, vidage de la mémoire
Platforms Tous

Notes

L’entrée et la sortie de la commande dépendent de l’utilisation de la ? syntaxe d’expression MASM ou de la syntaxe d’expression C++. Pour plus d’informations sur ces types de syntaxe d’expression, consultez Évaluation des expressions et syntaxe d’expression numérique.

Si vous utilisez la syntaxe MASM, l’entrée et la sortie dépendent du rayon actuel. Pour modifier le radix, utilisez la commande n (Définir la base de nombres).

La ? commande évalue les symboles dans l’expression dans le contexte du thread et du processus actuel.

Certaines chaînes peuvent contenir des échappements, tels que \n, \", \ret , qui \bsont destinés à être lus littéralement, plutôt que interprétés par l’évaluateur. Si une séquence d’échappement dans une chaîne est interprétée par l’évaluateur, les erreurs d’évaluation peuvent se produire. Par exemple :

0:000> as AliasName c:\dir\name.txt
0:000> al
  Alias            Value
 -------          -------
 AliasName        c:\dir\name.txt
0:001> ? $spat( "c:\dir\name.txt", "*name*" )
Evaluate expression: 0 = 00000000

0:001> ? $spat( "${AliasName}", "*name*" )
Evaluate expression: 0 = 00000000

0:001> ? $spat( "c:\dir\", "*filename*" )
Syntax error at '( "c:\dir\", "*filename*" )

Dans les deux premiers exemples, même si la chaîne correspond au modèle, l’évaluateur retourne une valeur false. Dans le troisième, l’évaluateur ne peut pas effectuer de comparaison, car la chaîne se termine par une barre oblique inverse ( \ ), et ainsi la \" traduction est traduite par l’évaluateur.

Pour que l’évaluateur interprète littéralement une chaîne, vous devez utiliser la @"String" syntaxe. L’exemple de code suivant montre les résultats corrects :

0:000> ? $spat( @"c:\dir\name.txt", "*name*" )
Evaluate expression: 1 = 00000000`00000001

0:000> ? $spat( @"${AliasName}", "*name*" )
Evaluate expression: 1 = 00000000`00000001

0:001> ? $spat( @"c:\dir\", "*filename*" )
Evaluate expression: 0 = 00000000

Dans les exemples précédents, l’opérateur $spat MASM vérifie la première chaîne pour déterminer s’il correspond (sans respect de la casse) au modèle de la deuxième chaîne. Pour plus d’informations sur les opérateurs MASM, consultez la rubrique Numéros et opérateurs MASM.

Voir aussi

?? (Évaluer l’expression C++)

.formats (Afficher les formats numériques)

Nombres et opérateurs MASM

Nombres et opérateurs C++

Expressions MASM vs. Expressions C++

Exemples d'expressions mixtes