Partager via


Fonction RtlUnicodeStringToInteger (wdm.h)

La routine RtlUnicodeStringToInteger convertit une représentation sous forme de chaîne Unicode d’un nombre en valeur entière équivalente.

Syntaxe

NTSYSAPI NTSTATUS RtlUnicodeStringToInteger(
  [in]           PCUNICODE_STRING String,
  [in, optional] ULONG            Base,
  [out]          PULONG           Value
);

Paramètres

[in] String

Pointeur vers une structure UNICODE_STRING qui contient la représentation numérique à convertir en valeur entière équivalente.

[in, optional] Base

Valeur numérique qui indique la base (ou radix) du nombre que représente la chaîne Unicode. Cette valeur de paramètre est facultative et peut être définie sur zéro.

Si Base est égal à zéro, RtlUnicodeStringToInteger vérifie le préfixe de la chaîne Unicode pour déterminer la base du nombre :

  • Si le préfixe est « 0x », RtlUnicodeStringToInteger interprète le nombre de la chaîne comme un entier hexadécimal.

  • Si le préfixe est « 0o », RtlUnicodeStringToInteger interprète le nombre dans la chaîne comme un entier octal.

  • Si le préfixe est « 0b », RtlUnicodeStringToInteger interprète le nombre dans la chaîne comme un entier binaire.

Si la chaîne Unicode ne contient aucun de ces préfixes, RtlUnicodeStringToInteger traite la chaîne comme un entier de base 10.

[out] Value

Pointeur vers une variable ULONG dans laquelle RtlUnicodeStringToInteger écrit la valeur entière qui résulte de la conversion de la chaîne Unicode.

Valeur retournée

Si la conversion réussit, la routine RtlUnicodeStringToInteger retourne STATUS_SUCCESS et définit *Value sur la valeur entière représentée par le nombre dans la chaîne Unicode. Si la chaîne n’est pas vide, mais ne commence pas par une représentation numérique valide, la routine retourne STATUS_SUCCESS et définit *Value sur zéro. Si la chaîne est vide, la routine échoue et retourne STATUS_INVALID_PARAMETER.

Remarques

Cette routine ignore les espaces blancs au début de la chaîne d’entrée pour rechercher le début du nombre.

Si le premier caractère d’espace non blanc de la chaîne est un trait d’union (-), la valeur entière écrite dans *Value est négative ; sinon, si le premier caractère est un « + » ou s’il n’y a pas de caractère de signe, la valeur entière écrite dans *Value est positive.

Si la chaîne ne contient pas de nombre valide ou si le premier chiffre de la chaîne est précédé d’un caractère d’espace non blanc autre que « + » ou « - », la routine définit la valeur de sortie sur zéro et retourne STATUS_SUCCESS.

Une sous-chaîne qui contient un ou plusieurs chiffres valides est terminée par tout caractère qui n’est pas un chiffre valide. Par exemple, si Base = 2, les chiffres valides sont « 0 » et « 1 ». Si Base = 8, les chiffres valides sont « 0 » à « 7 ». Si Base = 10, les chiffres valides sont « 0 » à « 9 ». Si Base = 16, les chiffres valides sont « 0 » à « 9 », « a » à « f » et « A » à « F ».

Le tableau suivant contient des exemples de valeurs de sortie qui résultent de différentes combinaisons de chaînes d’entrée et de valeurs de paramètres de base .

Chaîne d’entrée Base Valeur de sortie
"123" 10 123
"-345" 10 -345
« xyz » 10 0
« +678abc » 10 678
« +678abc » 16 6785724
"007" 10 7
"789" 8 7
« FGH » 16 15
" " 10 0

Une routine associée, RtlIntegerToUnicodeString, convertit une valeur entière en représentation de chaîne Unicode équivalente.

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête wdm.h (inclure Wdm.h, Ntddk.h, Ntifs.h, Wudfwdm.h)
Bibliothèque NtosKrnl.lib (mode noyau) ; Ntdll.lib (mode utilisateur)
DLL NtosKrnl.exe (mode noyau) ; Ntdll.dll (mode utilisateur)
IRQL PASSIVE_LEVEL

Voir aussi

RtlIntegerToUnicodeString

UNICODE_STRING