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 例程來移除回呼。
載入新建立進程的主要可執行映射時,載入映像通知例程會在新進程的內容中執行。 作系統會在重要區域中呼叫驅動程式的載入映像通知例程,其中 PASSIVE_LEVEL 一般核心 APC 一律停用,有時同時停用核心和特殊 APC。
呼叫 load-image notify 例程時,輸入 FullImageName 會指向識別可執行文件的緩衝 Unicode 字符串。 (FullImageName 參數可以在建立程式時無法取得映像的完整名稱時,NULL。ProcessId 句柄會識別映像已對應的進程,但如果新載入的映射為驅動程式,則此句柄為零。 若要檢視 ImageInfo的緩衝資料格式,請參閱 IMAGE_INFO。 如果 ExtendedInfoPresent 旗標是在 IMAGE_INFO 結構中設定,則資訊是映像資訊結構較大、擴充版本的一部分,IMAGE_INFO_EX。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 從 Windows 2000 開始提供。 |
目標平臺 | 普遍 |
標頭 | ntddk.h (包括 Ntddk.h) |
IRQL | PASSIVE_LEVEL |