Bagikan melalui


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

ZwCreateDirectoryObject

ZwCreateFile

ZwCreateKey

ZwOpenKey

ZwOpenSection