Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Rutinitas NtClose menutup handel objek.
Sintaksis
__kernel_entry NTSYSCALLAPI NTSTATUS NtClose(
[in] HANDLE Handle
);
Parameter
[in] Handle
Tangani ke objek jenis apa pun.
Mengembalikan nilai
NtClose mengembalikan STATUS_SUCCESS pada keberhasilan, atau kode kesalahan NTSTATUS yang sesuai seperti berikut ini.
Mengembalikan kode | Arti |
---|---|
STATUS_INVALID_HANDLE | Handle bukan handel yang valid. |
STATUS_HANDLE_NOT_CLOSABLE | Utas panggilan tidak memiliki izin untuk menutup handel; artinya, handel objek yang ditentukan dilindungi dari penutupan dari setiap upaya instans NtClose. |
Contoh di mana kode NTSTATUS terakhir terjadi adalah ketika panggilan ZwDuplicateObject telah dipanggil dengan OBJ_PROTECT_CLOSE diteruskan ke argumen parameter atribut handle. Kernel memastikan bahwa handel tidak dapat ditutup dalam kasus tersebut.
Komentar
NtClose adalah rutinitas generik yang beroperasi pada semua jenis objek.
Menutup handel objek terbuka menyebabkan handel 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 merupakan yang dibuka oleh utas sistem atau dengan menentukan bendera OBJ_KERNEL_HANDLE, hanya dapat ditutup ketika mode prosesor sebelumnya KernelMode. Persyaratan ini berlaku baik untuk utas sistem maupun untuk mengirimkan rutinitas untuk RUN yang dikeluarkan dari mode kernel. (Untuk informasi selengkapnya tentang mode prosesor sebelumnya, lihat ExGetPreviousMode.) Misalnya, handel yang NtCreateKey kembali ke rutinitas DriverEntry kemudian tidak dapat ditutup oleh rutinitas pengiriman driver yang sama. DriverEntry rutin 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 alur sewenang-wenang.
Handel nonkernel dapat ditutup hanya jika salah satu dari dua kondisi terpenuhi: Mode prosesor sebelumnya KernelMode, atau utas panggilan memiliki izin yang memadai untuk menutup handel. Contoh yang terakhir terjadi ketika utas panggilan adalah yang membuat handel.
Penelepon
Jika panggilan ke fungsi ini terjadi dalam mode pengguna, Anda harus menggunakan nama "NtClose" alih-alih "ZwClose".
Untuk panggilan dari driver mode kernel, NtXxx dan ZwXxx versi rutin Windows Native System Services dapat berperilaku berbeda dalam cara mereka menangani dan menginterpretasikan parameter input. Untuk informasi selengkapnya tentang hubungan antara NtXxx dan versi ZwXxx rutin, lihat Menggunakan Versi Nt dan Zw dari Rutinitas Layanan Sistem Asli.
Persyaratan
Syarat | Nilai |
---|---|
klien minimum yang didukung | Windows 2000 |
Platform Target |
Universal |
Header |
ntifs.h (termasuk Wdm.h, Ntddk.h, Ntifs.h) |
Pustaka |
NtosKrnl.lib |
DLL |
NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
aturan kepatuhan DDI |
HwStorPortProhibitedDDIs, IrqlZwPassive, PowerIrpDDis, ZwRegistryCreate, ZwRegistryCreate(storport), ZwRegistryOpen, ZwRegistryOpen(storport) |
Lihat juga