Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
The StringLengthFromMode function calculates the length of a null-terminated string, based on the specified processor mode.
Syntax
SIZE_T StringLengthFromMode(
const CHAR *String,
KPROCESSOR_MODE Mode
);
Parameters
String
[in] Um ponteiro para uma cadeia de caracteres terminada em nulo.
Mode
[in] O modo de processador que determina como o acesso à memória é executado. Mode can be one of the following values.
| Value | Meaning |
|---|---|
| KernelMode | String points to kernel-mode memory. A função executa um cálculo de comprimento de cadeia de caracteres direta. Consulte Comentários para obter mais detalhes. |
| UserMode | String points to user-mode memory. The function raises an exception if String doesn't point to user-mode memory; otherwise it performs a safe string length calculation at the specified address. Consulte Comentários para obter mais detalhes. |
Return value
A função retorna o comprimento da cadeia de caracteres em caracteres, não incluindo o caractere nulo de terminação.
Remarks
Essa função fornece acesso seguro para calcular o comprimento de uma cadeia de caracteres terminada em nulo na memória. O comportamento depende do modo de processador especificado:
- When Mode is UserMode, the function ensures that the string address is a valid user-mode address and performs the operation safely for user-mode memory access.
- When Mode is KernelMode, the function operates directly on kernel-mode addresses.
When the mode is UserMode, the function includes validation to prevent kernel crashes when accessing potentially invalid user-mode pointers. When the mode is KernelMode, it operates on known-safe kernel addresses for optimal performance.
A função gerará uma exceção estruturada se a operação falhar, como quando o endereço da cadeia de caracteres não estiver acessível ou for inválido para o modo especificado.
Essa função funciona em todas as versões do Windows, não apenas nas mais recentes. You need to consume the latest WDK to get the function declaration from the usermode_accessors.h header. You also need the library (umaccess.lib) from the latest WDK. No entanto, o driver resultante será executado bem em versões mais antigas do Windows.
Requirements
| Requirement | Value |
|---|---|
| Cliente mínimo suportado | See Remarks |
| Header | usermode_accessors.h |
| Library | umaccess.lib |
| IRQL | Menor ou igual a APC_LEVEL |