共用方式為


程式庫和標頭

核心模式驅動程式會呼叫Ntoskrnl.exe動態連結程式庫 (DLL) 中的 NtZw 進入點,以使用原生系統服務常式。 此 DLL 包含這些常式的實際實作。 若要存取這些進入點,驅動程式會以靜態方式連結到 Ntoskrnl.lib 程式庫,可在 Windows 驅動程式套件 (WDK) 取得。 在 Ntoskrnl.lib 中實作的常式是存根,可動態連結至執行時間Ntoskrnl.exe中的進入點。

WDK 檔描述 Ntoskrnl.exe中 Zw 進入點的一些但並非全部。 如需驅動程式可呼叫之 Zw 常式的描述,請參閱 ZwXxx 常式

大部分記載的 Zw 常式都是在 WDK 的 Wdm.h 標頭檔中定義,但有些則定義于其他標頭檔中,例如 Ntddk.h 和 Ntifs.h。

使用者模式應用程式通常不會呼叫 NtZw 常式。 相反地,應用程式可能會呼叫 Win32 常式,例如CreateFile,然後呼叫原生系統服務常式,例如NtCreateFile 或 ZwCreateFile,以執行要求的作業。 不過,使用者模式應用程式可能會直接呼叫 NtZw 常式來執行 Win32 常式不支援的作業。

使用者模式應用程式會呼叫Ntdll.dll動態連結程式庫中的進入點,以使用原生系統服務常式。 這些進入點會將對 NtZw 常式的呼叫轉換成被捕捉到核心模式的系統呼叫。 若要存取這些進入點,使用者模式應用程式會以靜態方式連結至可在 WDK 中使用的 Ntdll.lib 程式庫。 在 Ntdll.lib 中實作的常式是存根,可動態連結至執行時間Ntdll.dll中的進入點。

Windows SDK 檔描述 Ntdll.lib 中 Nt 進入點 的部分但並非全部。 大部分記載的 Nt 常式都是在 Windows SDK 的 Winternl.h 標頭檔中定義。 本檔稍微提及 Zw 進入點,而 Windows SDK 中沒有標頭檔包含 Zw 常式的定義。

有幾個次要例外狀況, Nt 常式Ntdll.dll中的每個進入點都有 Zw 常式的相符進入點。 WDK 和 Windows SDK 的檔建議應用程式開發人員避免呼叫未記載的 Nt 進入點,並警告 Zw 進入點可能會在未來的 Windows 版本中從Ntdll.dll消失。 從使用者模式呼叫 Zw 常式的應用程式開發人員應該針對此情況做好準備。

如需可由應用程式呼叫的 Nt 常式描述,請參閱 Winternlwinternl.h 標頭和其他 Low-Level用戶端支援。 Windows SDK 檔中 Nt 常式的某些參考頁面會將常式標示為「已淘汰」,並建議讀者使用對等的 Win32 常式,而不是已取代的 Nt 常式。

使用者模式應用程式無法呼叫Ntoskrnl.exe中的進入點,而核心模式驅動程式無法呼叫Ntdll.dll中的進入點。