PLOAD_IMAGE_NOTIFY_ROUTINE funzione di callback (ntddk.h)

Chiamato dal sistema operativo per notificare al driver quando un'immagine del driver o un'immagine utente (ad esempio, una DLL o EXE) viene mappata alla memoria virtuale. Il sistema operativo richiama questa routine dopo il mapping di un'immagine alla memoria, ma prima che venga chiamato il punto di ingresso.

Avviso

Le azioni che è possibile eseguire in questa routine sono limitate per le chiamate sicure. Vedere Procedure consigliate.

Sintassi

PLOAD_IMAGE_NOTIFY_ROUTINE PloadImageNotifyRoutine;

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

Parametri

[in, optional] FullImageName

Puntatore a una stringa Unicode memorizzata nel buffer che identifica il file di immagine eseguibile. Il parametro FullImageName può essere NULL nei casi in cui il sistema operativo non è in grado di ottenere il nome completo dell'immagine in fase di creazione del processo.

[in] ProcessId

ID processo del processo in cui è stata mappata l'immagine, ma questo handle è zero se l'immagine appena caricata è un driver.

[in] ImageInfo

Puntatore a una struttura IMAGE_INFO che contiene informazioni sull'immagine. Vedere la sezione Osservazioni.

Valore restituito

nessuno

Osservazioni

I driver di profilatura di sistema di livello più alto possono chiamare PsSetLoadImageNotifyRoutine per configurare la routine di notifica dell'immagine di caricamento.

Il sistema operativo non chiama routine di notifica dell'immagine di caricamento quando le sezioni create con l'attributo SEC_IMAGE_NO_EXECUTE vengono mappate alla memoria virtuale.

In Windows 7, Windows Server 2008 R2 e versioni precedenti di Windows, il sistema operativo contiene un blocco di sistema interno durante le chiamate alle routine di notifica dell'immagine di caricamento per le immagini caricate nello spazio degli indirizzi del processo utente (spazio utente). Per evitare deadlock, le routine di notifica dell'immagine di caricamento non devono chiamare routine di sistema che mappano, allocare, eseguire query, libera o eseguire altre operazioni sulla memoria virtuale nello spazio utente.

Un driver deve rimuovere tutti i callback registrati prima di scaricarlo. È possibile rimuovere il callback chiamando la routine PsRemoveLoadImageNotifyRoutine .

Quando viene caricata l'immagine eseguibile principale per un processo appena creato, la routine di notifica dell'immagine di caricamento viene eseguita nel contesto del nuovo processo. Il sistema operativo chiama la routine di notifica dell'immagine di caricamento del driver in PASSIVE_LEVEL all'interno di un'area critica con api kernel normali sempre disabilitate e talvolta con kernel e API speciali disabilitate.

Quando viene chiamata la routine di notifica dell'immagine di caricamento, l'input FullImageName punta a una stringa Unicode memorizzata nel buffer che identifica il file di immagine eseguibile. Il parametro FullImageName può essere NULL nei casi in cui il sistema operativo non è in grado di ottenere il nome completo dell'immagine in fase di creazione del processo. L'handle ProcessId identifica il processo in cui è stata mappata l'immagine, ma questo handle è zero se l'immagine appena caricata è un driver. Per visualizzare il formato dei dati memorizzati nel buffer in ImageInfo, vedere IMAGE_INFO. Se il flag ExtendedInfoPresent è impostato nella struttura IMAGE_INFO , le informazioni fanno parte di una versione più grande e estesa della struttura delle informazioni sull'immagine, IMAGE_INFO_EX.

Requisiti

Requisito Valore
Client minimo supportato Disponibile a partire da Windows 2000.
Piattaforma di destinazione Universale
Intestazione ntddk.h (include Ntddk.h)
IRQL PASSIVE_LEVEL

Vedi anche

IMAGE_INFO

IMAGE_INFO_EX

PsSetLoadImageNotifyRoutine