PLOAD_IMAGE_NOTIFY_ROUTINE função de retorno de chamada (ntddk.h)

Chamado pelo sistema operacional para notificar o driver quando uma imagem de driver ou uma imagem de usuário (por exemplo, uma DLL ou EXE) é mapeada para memória virtual. O sistema operacional invoca essa rotina depois que uma imagem é mapeada para a memória, mas antes que seu ponto de entrada seja chamado.

Aviso

As ações que você pode executar nessa rotina são restritas para chamadas seguras. Confira Práticas recomendadas.

Sintaxe

PLOAD_IMAGE_NOTIFY_ROUTINE PloadImageNotifyRoutine;

void PloadImageNotifyRoutine(
  [in, optional] PUNICODE_STRING FullImageName,
  [in]           HANDLE ProcessId,
  [in]           PIMAGE_INFO ImageInfo
)
{...}

Parâmetros

[in, optional] FullImageName

Um ponteiro para uma cadeia de caracteres Unicode em buffer que identifica o arquivo de imagem executável. (O parâmetro FullImageName pode ser NULL nos casos em que o sistema operacional não consegue obter o nome completo da imagem no momento da criação do processo.)

[in] ProcessId

A ID do processo no qual a imagem foi mapeada, mas esse identificador será zero se a imagem recém-carregada for um driver.

[in] ImageInfo

Um ponteiro para uma estrutura IMAGE_INFO que contém informações de imagem. Consulte Observações.

Valor retornado

Nenhum

Comentários

Os drivers de criação de perfil do sistema de nível mais alto podem chamar PsSetLoadImageNotifyRoutine para configurar sua rotina de notificação de imagem de carga.

O sistema operacional não chama rotinas de notificação de imagem de carga quando seções criadas com o atributo SEC_IMAGE_NO_EXECUTE são mapeadas para memória virtual.

No Windows 7, Windows Server 2008 R2 e versões anteriores do Windows, o sistema operacional mantém um bloqueio interno do sistema durante chamadas para rotinas de notificação de imagem de carga para imagens carregadas no espaço de endereço do processo do usuário (espaço do usuário). Para evitar deadlocks, as rotinas de notificação de imagem de carga não devem chamar rotinas do sistema que mapeiam, alocam, consultam, liberam ou executam outras operações na memória virtual do espaço do usuário.

Um driver deve remover todos os retornos de chamada registrados antes de descarregar. Você pode remover o retorno de chamada chamando a rotina PsRemoveLoadImageNotifyRoutine .

Quando a imagem executável main para um processo recém-criado é carregada, a rotina de notificação de imagem de carga é executada no contexto do novo processo. O sistema operacional chama a rotina de notificação de imagem de carga do driver em PASSIVE_LEVEL dentro de uma região crítica com APCs de kernel normais sempre desabilitadas e, às vezes, com apCs especiais e kernel desabilitadas.

Quando a rotina de notificação de imagem de carga é chamada, a entrada FullImageName aponta para uma cadeia de caracteres Unicode em buffer que identifica o arquivo de imagem executável. (O parâmetro FullImageName pode ser NULL nos casos em que o sistema operacional não consegue obter o nome completo da imagem no momento da criação do processo.) O identificador ProcessId identifica o processo no qual a imagem foi mapeada, mas esse identificador será zero se a imagem recém-carregada for um driver. Para ver o formato dos dados armazenados em buffer em ImageInfo, consulte IMAGE_INFO. Se o sinalizador ExtendedInfoPresent estiver definido na estrutura IMAGE_INFO , as informações serão parte de uma versão maior e estendida da estrutura de informações da imagem , IMAGE_INFO_EX.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível a partir do Windows 2000.
Plataforma de Destino Universal
Cabeçalho ntddk.h (inclua Ntddk.h)
IRQL PASSIVE_LEVEL

Confira também

IMAGE_INFO

IMAGE_INFO_EX

PsSetLoadImageNotifyRoutine