Função RtlUnicodeStringToInteger (wdm.h)
A rotina RtlUnicodeStringToInteger converte uma representação de cadeia de caracteres Unicode de um número no valor inteiro equivalente.
Sintaxe
NTSYSAPI NTSTATUS RtlUnicodeStringToInteger(
[in] PCUNICODE_STRING String,
[in, optional] ULONG Base,
[out] PULONG Value
);
Parâmetros
[in] String
Um ponteiro para uma estrutura UNICODE_STRING que contém a representação numérica a ser convertida no valor inteiro equivalente.
[in, optional] Base
Um valor numérico que indica a base (ou radix) do número que a cadeia de caracteres Unicode representa. Esse valor de parâmetro é opcional e pode ser definido como zero.
Se Base for zero, RtlUnicodeStringToInteger verificará o prefixo da cadeia de caracteres Unicode para determinar a base do número:
Se o prefixo for "0x", RtlUnicodeStringToInteger interpretará o número na cadeia de caracteres como um inteiro hexadecimal.
Se o prefixo for "0o", RtlUnicodeStringToInteger interpretará o número na cadeia de caracteres como um inteiro octal.
Se o prefixo for "0b", RtlUnicodeStringToInteger interpretará o número na cadeia de caracteres como um inteiro binário.
Se a cadeia de caracteres Unicode não contiver nenhum desses prefixos, RtlUnicodeStringToInteger tratará a cadeia de caracteres como um inteiro de base 10.
[out] Value
Um ponteiro para uma variável ULONG na qual RtlUnicodeStringToInteger grava o valor inteiro resultante da conversão da cadeia de caracteres Unicode.
Retornar valor
Se a conversão for bem-sucedida, a rotina RtlUnicodeStringToInteger retornará STATUS_SUCCESS e definirá *Value como o valor inteiro representado pelo número na cadeia de caracteres Unicode. Se a cadeia de caracteres não estiver vazia, mas não começar com uma representação de número válida, a rotina retornará STATUS_SUCCESS e definirá *Value como zero. Se a cadeia de caracteres estiver vazia, a rotina falhará e retornará STATUS_INVALID_PARAMETER.
Comentários
Essa rotina ignora qualquer espaço em branco no início da cadeia de caracteres de entrada para localizar o início do número.
Se o primeiro caractere de espaço não branco na cadeia de caracteres for um hífen (-), o valor inteiro gravado em *Value será negativo; caso contrário, se o primeiro caractere for um "+" ou não houver nenhum caractere de sinal, o valor inteiro gravado em *Value será positivo.
Se a cadeia de caracteres não contiver um número válido ou se o primeiro dígito na cadeia de caracteres for precedido por um caractere de espaço não branco diferente de '+' ou '-', a rotina definirá o valor de saída como zero e retornará STATUS_SUCCESS.
Uma subcadeia de caracteres que contém um ou mais dígitos válidos é encerrada por qualquer caractere que não seja um dígito válido. Por exemplo, se Base = 2, os dígitos válidos serão '0' e '1'. Se Base = 8, os dígitos válidos serão '0' a '7'. Se Base = 10, os dígitos válidos serão '0' a '9'. Se Base = 16, os dígitos válidos serão '0' a '9', 'a' a 'f' e 'A' a 'F'.
A tabela a seguir contém exemplos de valores de saída resultantes de várias combinações de cadeias de caracteres de entrada e valores de parâmetro base .
Cadeia de caracteres de entrada | Base | Valor de saída |
---|---|---|
"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 |
Uma rotina relacionada, RtlIntegerToUnicodeString, converte um valor inteiro na representação de cadeia de caracteres Unicode equivalente.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Universal |
Cabeçalho | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Wudfwdm.h) |
Biblioteca | NtosKrnl.lib (modo kernel); Ntdll.lib (modo de usuário) |
DLL | NtosKrnl.exe (modo kernel); Ntdll.dll (modo de usuário) |
IRQL | PASSIVE_LEVEL |