Fungsi ZwClose (wdm.h)
Rutinitas ZwClose menutup handel objek.
Sintaks
NTSYSAPI NTSTATUS ZwClose(
[in] HANDLE Handle
);
Parameter
[in] Handle
Tangani ke objek dari jenis apa pun.
Nilai kembali
ZwClose mengembalikan STATUS_SUCCESS pada keberhasilan, atau kode kesalahan NTSTATUS yang sesuai pada kegagalan. Secara khusus, ini mengembalikan STATUS_INVALID_HANDLE jika Handel bukan handel yang valid, atau STATUS_HANDLE_NOT_CLOSABLE jika utas panggilan tidak memiliki izin untuk menutup handel.
Keterangan
ZwClose adalah rutinitas generik yang beroperasi pada semua jenis objek.
Menutup handel objek terbuka menyebabkan handel tersebut menjadi tidak valid. Sistem juga mengurangi jumlah handel untuk objek dan memeriksa apakah objek dapat dihapus. Sistem tidak benar-benar menghapus objek sampai semua handel objek ditutup dan tidak ada penunjuk yang dirujuk yang tersisa.
Driver harus menutup setiap handel yang terbuka segera setelah handel tidak lagi diperlukan. Handel kernel, yang dibuka oleh utas sistem atau dengan menentukan bendera OBJ_KERNEL_HANDLE, hanya dapat ditutup ketika mode prosesor sebelumnya adalah KernelMode. Persyaratan ini berlaku baik untuk utas sistem maupun untuk mengirimkan rutinitas untuk IRP yang dikeluarkan dari mode kernel. (Untuk informasi selengkapnya tentang mode prosesor sebelumnya, lihat ExGetPreviousMode.) Misalnya, handel yang dikembalikan ZwCreateKey ke rutinitas DriverEntry kemudian tidak dapat ditutup oleh rutinitas pengiriman driver yang sama. Rutinitas DriverEntry berjalan dalam proses sistem, sedangkan rutinitas pengiriman biasanya berjalan baik dalam konteks utas yang mengeluarkan permintaan I/O saat ini, atau, untuk driver tingkat bawah, dalam konteks utas arbitrer.
Handel non-kernel hanya dapat ditutup jika salah satu dari dua kondisi terpenuhi: Mode prosesor sebelumnya adalah KernelMode, atau utas panggilan memiliki izin yang memadai untuk menutup handel. Contoh yang terakhir terjadi ketika utas panggilan adalah yang membuat handel.
Penelepon ZwClose tidak boleh berasumsi bahwa rutinitas ini secara otomatis menunggu semua I/O selesai sebelum kembali.
Jika panggilan ke fungsi ini terjadi dalam mode pengguna, Anda harus menggunakan nama "NtClose" alih-alih "ZwClose".
Untuk panggilan dari driver mode kernel, versi NtXxx dan ZwXxx dari rutinitas Windows Native System Services dapat berperilaku berbeda dalam cara mereka menangani dan menafsirkan parameter input. Untuk informasi selengkapnya tentang hubungan antara versi NtXxx dan ZwXxx dari rutinitas, lihat Menggunakan Versi Nt dan Zw dari Rutinitas Layanan Sistem Asli.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Header | wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h) |
Pustaka | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Aturan kepatuhan DDI | HwStorPortProhibitedDDIs(storport), IrqlZwPassive(wdm), PowerIrpDDis(wdm), ZwRegistryCreate(storport), ZwRegistryCreate(storport), ZwRegistryCreate(wdm), ZwRegistryOpen(storport), ZwRegistryOpen(storport), ZwRegistryOpen(wdm) |
Lihat juga
Menggunakan Versi Nt dan Zw dari Rutinitas Layanan Sistem Asli