Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A função CopyToMode copia com segurança os dados da memória do kernel para a memória do kernel ou do modo de usuário com base no modo de processador especificado.
Syntax
VOID CopyToMode(
VOID *Destination,
const VOID *Source,
SIZE_T Length,
KPROCESSOR_MODE Mode
);
Parameters
Destination
[out] Um ponteiro para o local da memória em que os dados serão copiados.
Source
[in] Um ponteiro para o local de memória do kernel do qual copiar os dados.
Length
[in] O número de bytes a serem copiados.
Mode
[in] O modo de processador que determina como o acesso à memória é executado. O modo pode ser um dos seguintes valores.
| Value | Meaning |
|---|---|
| KernelMode | O destino aponta para a memória do modo kernel. A função executa uma cópia de memória direta com semântica memory_order_relaxed. |
| UserMode | O destino aponta para a memória do modo de usuário. A função gerará uma exceção se o Destino não apontar para a memória do modo de usuário; caso contrário, ele executa uma cópia para o endereço especificado com memory_order_relaxed semântica. |
Valor de retorno
None
Remarks
Essa função fornece uma maneira segura de copiar dados da memória do kernel para a memória do kernel ou do modo de usuário, com o mecanismo de cópia determinado pelo modo de processador especificado. Isso permite operações de memória flexíveis que podem se adaptar a diferentes contextos de execução.
Quando o modo é KernelMode:
A função executa uma cópia volátil usando memory_order_relaxed semântica.
A função não é reconhecida como um compilador intrínseco, portanto, o compilador nunca otimizará a chamada (totalmente ou substituirá a chamada por uma sequência equivalente de instruções).
Quando a chamada é retornada, os dados foram copiados de Origem para Destino. Os acessos de memória dessa função à origem e ao destino só serão executados dentro da função (por exemplo, o compilador não pode mover acessos de memória para fora dessa função).
A função poderá executar acessos de memória não assinados se a plataforma permitir.
A função pode acessar locais de memória mais de uma vez como parte de sua operação de cópia.
A função não dá suporte a operações de cópia quando a origem e o destino se sobrepõem.
Se você estiver copiando uma estrutura de tamanho fixo, deverá usar WriteStructToMode para evitar o risco de passar o tamanho errado.
Essa função nunca será otimizada pelo compilador, nem o compilador criará acessos adicionais a esse local de memória antes que a função seja chamada ou depois que a função retornar (a menos que o código-fonte execute explicitamente esses acessos).
Essa função funciona em todas as versões do Windows, não apenas nas mais recentes. Você precisa consumir o WDK mais recente para obter a declaração de função do cabeçalho usermode_accessors.h . Você também precisa da biblioteca (umaccess.lib) do WDK mais recente. No entanto, o driver resultante será executado bem em versões mais antigas do Windows.
Requirements
| Requirement | Value |
|---|---|
| Cliente mínimo suportado | Ver Comentários |
| Header | usermode_accessors.h |
| Library | umaccess.lib |
| IRQL | Menor ou igual a APC_LEVEL |