Freigeben über


PLOAD_IMAGE_NOTIFY_ROUTINE Rückruffunktion (ntddk.h)

Wird vom Betriebssystem aufgerufen, um den Treiber zu benachrichtigen, wenn ein Treiberimage oder ein Benutzerimage (z. B. eine DLL oder EXE) dem virtuellen Arbeitsspeicher zugeordnet ist. Das Betriebssystem ruft diese Routine auf, nachdem ein Image dem Arbeitsspeicher zugeordnet wurde, aber bevor sein Einstiegspunkt aufgerufen wird.

Warnung

Die Aktionen, die Sie in dieser Routine ausführen können, sind für sichere Anrufe eingeschränkt. Weitere Informationen finden Sie unter Bewährte Methoden.

Syntax

PLOAD_IMAGE_NOTIFY_ROUTINE PloadImageNotifyRoutine;

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

Parameter

[in, optional] FullImageName

Ein Zeiger auf eine gepufferte Unicode-Zeichenfolge, die die ausführbare Bilddatei identifiziert. (Der FullImageName-Parameter kann NULL sein, wenn das Betriebssystem den vollständigen Namen des Images zum Zeitpunkt der Prozesserstellung nicht abrufen kann.)

[in] ProcessId

Die Prozess-ID des Prozesses, in dem das Image zugeordnet wurde, aber dieses Handle ist null, wenn das neu geladene Image ein Treiber ist.

[in] ImageInfo

Ein Zeiger auf eine IMAGE_INFO-Struktur , die Bildinformationen enthält. Siehe Hinweise.

Rückgabewert

Keine

Bemerkungen

Systemprofiltreiber der obersten Ebene können PsSetLoadImageNotifyRoutine aufrufen, um ihre Benachrichtigungsroutine für Ladeimages einzurichten.

Das Betriebssystem ruft keine Benachrichtigungsroutinen zum Laden von Images auf, wenn Abschnitte, die mit dem attribut SEC_IMAGE_NO_EXECUTE erstellt wurden, dem virtuellen Arbeitsspeicher zugeordnet werden.

In Windows 7, Windows Server 2008 R2 und früheren Versionen von Windows verfügt das Betriebssystem während der Aufrufe von Benachrichtigungsroutinen zum Laden von Images, die in den Adressraum des Benutzerprozesses (Benutzerbereich) geladen wurden, eine interne Systemsperre. Um Deadlocks zu vermeiden, dürfen Benachrichtigungsroutinen zum Laden von Bildern keine Systemroutinen aufrufen, die Vorgänge im virtuellen Speicher des Benutzerraums zuordnen, zuordnen, abfragen, freigeben oder andere Vorgänge ausführen.

Ein Treiber muss alle Rückrufe entfernen, die er registriert, bevor er entladen wird. Sie können den Rückruf entfernen, indem Sie die PsRemoveLoadImageNotifyRoutine-Routine aufrufen.

Wenn das Standard ausführbares Image für einen neu erstellten Prozess geladen wird, wird die Benachrichtigungsroutine zum Laden von Images im Kontext des neuen Prozesses ausgeführt. Das Betriebssystem ruft die Benachrichtigungsroutine zum Laden von Images des Treibers in PASSIVE_LEVEL innerhalb einer kritischen Region auf, wobei normale Kernel-APCs immer deaktiviert und manchmal sowohl Kernel als auch spezielle APCs deaktiviert sind.

Wenn die Benachrichtigungsroutine zum Laden von Images aufgerufen wird, verweist die Eingabe FullImageName auf eine gepufferte Unicode-Zeichenfolge, die die ausführbare Bilddatei identifiziert. (Der FullImageName-Parameter kann NULL sein, wenn das Betriebssystem den vollständigen Namen des Images zum Zeitpunkt der Prozesserstellung nicht abrufen kann.) Das ProcessId-Handle identifiziert den Prozess, in dem das Image zugeordnet wurde, aber dieses Handle ist null, wenn das neu geladene Image ein Treiber ist. Das Format der gepufferten Daten finden Sie unter ImageInfo unter IMAGE_INFO. Wenn das ExtendedInfoPresent-Flag in der IMAGE_INFO-Struktur festgelegt ist, sind die Informationen Teil einer größeren, erweiterten Version der Bildinformationsstruktur , IMAGE_INFO_EX.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar ab Windows 2000.
Zielplattform Universell
Header ntddk.h (include Ntddk.h)
IRQL PASSIVE_LEVEL

Weitere Informationen

IMAGE_INFO

IMAGE_INFO_EX

PsSetLoadImageNotifyRoutine