Ke - kernel的縮寫,代表的是內核模式的API接口。
Nt - Windows NT的縮寫,代表的是Windows 系統服務功能API接口。 大部分以Nt開頭的函數,都映射到了用戶態(User Mode)API接口。比如妳編寫的用戶模式程序,用到了CreateFile這個函數,由於它需要訪問系統內部的數據結構,必須要進入內核模式,這時的程序就要轉入內核模式,相對應的內核模式功能服務接口,正是ntdll.dll中的NtCreateFile,它最終完成來自用戶態程序的函數功能請求。
Zw - 沒有具體的縮寫含義,只是為了避免和其它前綴的重復。它的功能和與之相對應的Nt函數是壹致的(可以說是Nt功能的鏡像)。 不同點在於: 相應的Nt函數,是對系統服務的直接;而Zw需要經過壹系列系統準備動作,比如:系統服務碼入寄存器保存,系統KiSystemService加載,然後才執行具體的服務功能調用。 看著負擔加重了,但好處是,在執行時,系統參數的系列校驗不必再進行了(拜所謂的previous access mode之賜),所以反而輕快了;而Nt系列函數雖然調用時簡潔,但每壹次執行都要參數校驗,因此反而累贅了。這也正是內核態程序(比如驅動程序)多用Zw系統的原因(因為需要和previous mode打交道)。