Partilhar via


Macro ReadStructFromUser (usermode_accessors.h)

A macro ReadStructFromUser lê com segurança uma estrutura da memória do modo de usuário.

Syntax

void ReadStructFromUser(
  Destination,
  Source
);

Parameters

Destination

[out] Um ponteiro para a estrutura que recebe os dados lidos da memória do modo de usuário.

Source

[in] Um ponteiro para o local de memória do modo de usuário do qual ler a estrutura.

Return value

None

Remarks

Essa macro fornece uma maneira segura de ler uma estrutura da memória do modo de usuário. Ele garante que o endereço fornecido seja um endereço no modo de usuário antes de lê-lo.

A macro valida que a origeme o destino apontam para tipos compatíveis e determina automaticamente o tamanho da estrutura para a operação de cópia.

Essa macro não impõe alinhamento.

Ele gerará uma exceção estruturada se o acesso à memória falhar, como quando o endereço de origem não for um endereço no modo de usuário ou estiver inacessível.

Essa macro nunca será otimizada pelo compilador, nem o compilador criará acessos adicionais a esse local de memória antes que a macro seja chamada ou depois que a macro retornar (a menos que o código-fonte execute explicitamente esses acessos). O acesso à memória é executado com memory_order_relaxed semântica.

Essa macro 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 macro 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 See Remarks
Header usermode_accessors.h
Library umaccess.lib
IRQL Menor ou igual a APC_LEVEL

See also

ReadStructFromMode

ReadStructFromUserHelper

WriteStructToUser