共用方式為


PLOAD_IMAGE_NOTIFY_ROUTINE回呼函式 (ntddk.h)

由操作系統呼叫,以在驅動程式映像或使用者映像 (例如 DLL 或 EXE) 對應到虛擬記憶體時通知驅動程式。 操作系統會在映像對應至記憶體之後,但在呼叫進入點之前叫用此例程。

警告

您可以在此例程中執行的動作會受限於安全呼叫。 請參閱 最佳做法

語法

PLOAD_IMAGE_NOTIFY_ROUTINE PloadImageNotifyRoutine;

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

參數

[in, optional] FullImageName

識別可執行圖像檔之緩衝 Unicode 字串的指標。 (在作業系統無法在程式建立期間取得映像的完整名稱時, FullImageName 參數可以是 NULL 。)

[in] ProcessId

映射已對應的進程進程標識碼,但如果新載入的映像是驅動程式,則此句柄為零。

[in] ImageInfo

包含影像資訊的 IMAGE_INFO 結構的指標。 請參閱<備註>。

傳回值

備註

最高層級的系統分析驅動程式可以呼叫 PsSetLoadImageNotifyRoutine 來設定其載入映像通知例程。

當使用 SEC_IMAGE_NO_EXECUTE 屬性建立的區段對應至虛擬記憶體時,操作系統不會呼叫load-image notify 例程。

在 Windows 7、Windows Server 2008 R2 和舊版 Windows 中,操作系統會在呼叫載入映射時保留內部系統鎖定,以取得在使用者進程位址空間中載入的映像, (用戶空間) 。 若要避免死結,載入映像通知例程不得呼叫系統例程來對應、配置、查詢、釋放或對使用者空間虛擬記憶體執行其他作業。

驅動程式必須在卸除之前移除它註冊的任何回呼。 您可以呼叫 PsRemoveLoadImageNotifyRoutine 例程來移除回呼。

載入新建立進程的主要可執行映射時,load-image notify 例程會在新進程的內容中執行。 操作系統會在重要區域中呼叫驅動程式的載入映像通知例程,PASSIVE_LEVEL一 般核心 APC 一律停用,有時同時停用核心和特殊 APC。

呼叫 load-image notify 例程時,輸入 FullImageName 會指向可識別可執行文件的緩衝 Unicode 字串。 (FullImageName 參數可以是 NULL ,在操作系統無法在進程建立期間取得映射的完整名稱。) ProcessId 句柄會識別映射已對應的進程,但如果新載入的映像是驅動程式,則此句柄為零。 若要查看 ImageInfo 的緩衝數據格式,請參閱 IMAGE_INFO。 如果在IMAGE_INFO結構中設定 ExtendedInfoPresent 旗標,則資訊是映像資訊結構較大、擴充版本的一部分,IMAGE_INFO_EX

規格需求

需求
最低支援的用戶端 從 Windows 2000 開始提供。
目標平台 Universal
標頭 ntddk.h (包含 Ntddk.h)
IRQL PASSIVE_LEVEL

另請參閱

IMAGE_INFO

IMAGE_INFO_EX

PsSetLoadImageNotifyRoutine