Fungsi ZwOpenThreadTokenEx (ntifs.h)

Rutinitas ZwOpenThreadTokenEx membuka token akses yang terkait dengan utas.

Sintaks

NTSYSAPI NTSTATUS ZwOpenThreadTokenEx(
  [in]  HANDLE      ThreadHandle,
  [in]  ACCESS_MASK DesiredAccess,
  [in]  BOOLEAN     OpenAsSelf,
  [in]  ULONG       HandleAttributes,
  [out] PHANDLE     TokenHandle
);

Parameter

[in] ThreadHandle

Tangani ke utas yang token aksesnya akan dibuka. Handel harus memiliki akses THREAD_QUERY_INFORMATION. Gunakan makro NtCurrentThread untuk menentukan utas saat ini.

[in] DesiredAccess

ACCESS_MASK struktur yang menentukan jenis akses yang diminta ke token akses. Jenis akses yang diminta ini dibandingkan dengan daftar kontrol akses diskresi (DACL) token untuk menentukan hak akses mana yang diberikan atau ditolak.

[in] OpenAsSelf

Nilai Boolean yang menentukan apakah pemeriksaan akses akan dilakukan terhadap konteks keamanan utas yang memanggil ZwOpenThreadTokenEx atau terhadap konteks keamanan proses untuk utas panggilan.

Jika parameter ini FALSE, pemeriksaan akses dilakukan menggunakan konteks keamanan untuk utas panggilan. Jika utas meniru klien, konteks keamanan ini bisa berupa proses klien. Jika parameter ini TRUE, pemeriksaan akses dilakukan menggunakan konteks keamanan proses untuk utas panggilan.

[in] HandleAttributes

Atribut untuk handel yang dibuat. Hanya OBJ_KERNEL_HANDLE yang saat ini didukung. Jika pemanggil tidak berjalan dalam konteks proses sistem, pemanggil harus menentukan OBJ_KERNEL_HANDLE untuk parameter ini.

[out] TokenHandle

Penunjuk ke variabel yang dialokasikan penelepon yang menerima handel ke token akses yang baru dibuka.

Nilai kembali

ZwOpenThreadTokenEx mengembalikan STATUS_SUCCESS atau status kesalahan yang sesuai. Kemungkinan kode status kesalahan meliputi yang berikut ini:

Menampilkan kode Deskripsi
STATUS_ACCESS_DENIED ThreadHandle tidak memiliki akses THREAD_QUERY_INFORMATION.
STATUS_CANT_OPEN_ANONYMOUS Klien meminta tingkat peniruan SecurityAnonymous. Namun, token anonim tidak dapat dibuka. Untuk informasi selengkapnya, lihat SECURITY_IMPERSONATION_LEVEL.
STATUS_INVALID_HANDLE ThreadHandle bukan handel yang valid.
STATUS_INVALID_PARAMETER HandleAttributes yang ditentukan tidak menyertakan OBJ_KERNEL_HANDLE.
STATUS_NO_TOKEN Upaya telah dilakukan untuk membuka token yang terkait dengan utas yang saat ini tidak meniru klien.
STATUS_OBJECT_TYPE_MISMATCH ThreadHandle bukan handel utas.

Keterangan

ZwOpenThreadTokenEx membuka token akses yang terkait dengan utas dan mengembalikan handel untuk token tersebut.

Parameter OpenAsSelf memungkinkan proses server untuk membuka token akses untuk proses klien ketika proses klien telah menentukan tingkat peniruan Identitas Keamanan untuk jenis SECURITY_IMPERSONATION_LEVEL enumerasi. Tanpa parameter ini, proses panggilan tidak dapat membuka token akses klien menggunakan konteks keamanan klien karena tidak mungkin untuk membuka objek tingkat eksekutif menggunakan tingkat peniruan Identitas Keamanan.

Setiap handel yang diperoleh dengan memanggil ZwOpenThreadTokenEx akhirnya harus dirilis dengan memanggil ZwClose.

Rutinitas driver yang berjalan dalam konteks proses selain proses sistem harus mengatur atribut OBJ_KERNEL_HANDLE untuk parameter HandleAttributes dari ZwOpenThreadTokenEx. Ini membatasi penggunaan handel yang dikembalikan oleh ZwOpenThreadTokenEx untuk memproses yang berjalan dalam mode kernel. Jika tidak, handel dapat diakses oleh proses dalam konteks driver yang berjalan.

Untuk informasi selengkapnya tentang keamanan dan kontrol akses, lihat Model keamanan Windows untuk pengembang driver dan dokumentasi tentang topik ini di Windows SDK.

Catatan

Jika panggilan ke fungsi ZwOpenThreadTokenEx terjadi dalam mode pengguna, Anda harus menggunakan nama "NtOpenThreadTokenEx" alih-alih "ZwOpenThreadTokenEx".

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
Klien minimum yang didukung Windows XP
Target Platform Universal
Header ntifs.h (termasuk Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Aturan kepatuhan DDI HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

Lihat juga

<ACCESS_MASK

ACL

PsDereferencePrimaryToken

SECURITY_IMPERSONATION_LEVEL

Menggunakan Versi Nt dan Zw dari Rutinitas Layanan Sistem Asli

ZwClose

ZwOpenProcessTokenEx