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 |