Pustaka dan Header

Driver mode kernel menggunakan rutinitas layanan sistem asli dengan memanggil titik masuk Nt dan Zw di pustaka tautan dinamis (DLL) Ntoskrnl.exe. DLL ini berisi implementasi aktual dari rutinitas ini. Untuk mengakses titik masuk ini, driver secara statis terhubung ke pustaka Ntoskrnl.lib, yang tersedia di Windows Driver Kit (WDK). Rutinitas yang diimplementasikan di Ntoskrnl.lib adalah rintangan yang secara dinamis terhubung ke titik masuk di Ntoskrnl.exe pada waktu proses.

Dokumentasi WDK menjelaskan beberapa, tetapi tidak semua, dari titik masuk Zw dalam Ntoskrnl.exe. Untuk deskripsi rutinitas Zw yang dapat dipanggil oleh driver, lihat Rutinitas ZwXxx.

Sebagian besar rutinitas Zw yang didefinisikan dalam file header Wdm.h di WDK, tetapi beberapa didefinisikan dalam file header lainnya, seperti Ntddk.h dan Ntifs.h.

Biasanya, aplikasi mode pengguna tidak memanggil rutinitas Nt dan Zw . Sebagai gantinya, aplikasi mungkin memanggil rutinitas Win32, seperti CreateFile, yang kemudian memanggil rutinitas layanan sistem asli, seperti NtCreateFile atau ZwCreateFile, untuk melakukan operasi yang diminta. Namun, aplikasi mode pengguna mungkin langsung memanggil rutinitas Nt atau Zw untuk melakukan operasi yang tidak didukung oleh rutinitas Win32.

Aplikasi mode pengguna menggunakan rutinitas layanan sistem asli dengan memanggil titik masuk di pustaka tautan dinamis Ntdll.dll. Titik masuk ini mengonversi panggilan ke rutinitas Nt dan Zw menjadi panggilan sistem yang terjebak ke mode kernel. Untuk mengakses titik masuk ini, aplikasi mode pengguna secara statis terhubung ke pustaka Ntdll.lib, yang tersedia di WDK. Rutinitas yang diimplementasikan di Ntdll.lib adalah rintangan yang secara dinamis terhubung ke titik masuk di Ntdll.dll pada waktu proses.

Dokumentasi Windows SDK menjelaskan beberapa, tetapi tidak semua, dari titik entri Nt di Ntdll.lib. Sebagian besar rutinitas Nt yang didefinisikan dalam file header Winternl.h di Windows SDK. Dokumentasi ini membuat sedikit penyebutan titik masuk Zw , dan tidak ada file header di Windows SDK yang berisi definisi rutinitas Zw .

Dengan beberapa pengecualian kecil, setiap titik masuk di Ntdll.dll untuk rutinitas Nt memiliki titik masuk yang cocok untuk rutinitas Zw . Dokumentasi untuk WDK dan Windows SDK merekomendasikan agar pengembang aplikasi menghindari panggilan titik masuk Nt yang tidak terdokumentasi, dan memperingatkan bahwa titik masuk Zw mungkin hilang dari Ntdll.dll di versi Windows yang akan datang. Pengembang aplikasi yang memanggil rutinitas Zw dari mode pengguna harus siap untuk kejadian ini.

Untuk deskripsi rutinitas Nt yang dapat dipanggil oleh aplikasi, lihat Header Winternl, winternl.h, dan Dukungan Klien Low-Level Lain-lain. Beberapa halaman referensi untuk rutinitas Nt dalam dokumentasi Windows SDK melabeli rutinitas sebagai "tidak digunakan lagi" dan menyarankan pembaca untuk menggunakan rutinitas Win32 yang setara alih-alih rutinitas Nt yang tidak digunakan lagi.

Aplikasi mode pengguna tidak dapat memanggil titik masuk di Ntoskrnl.exe, dan driver mode kernel tidak dapat memanggil titik masuk dalam Ntdll.dll.