Fungsi GetThreadWaitChain (wct.h)
Mengambil rantai tunggu untuk utas yang ditentukan.
Sintaks
BOOL GetThreadWaitChain(
[in] HWCT WctHandle,
[in, optional] DWORD_PTR Context,
[in] DWORD Flags,
[in] DWORD ThreadId,
[in, out] LPDWORD NodeCount,
[out] PWAITCHAIN_NODE_INFO NodeInfoArray,
[out] LPBOOL IsCycle
);
Parameter
[in] WctHandle
Handel ke sesi WCT yang dibuat oleh fungsi OpenThreadWaitChainSession .
[in, optional] Context
Penunjuk ke struktur konteks yang ditentukan aplikasi untuk diteruskan ke fungsi panggilan balik untuk sesi asinkron.
[in] Flags
Opsi pengambilan rantai tunggu. Parameter ini bisa menjadi salah satu dari lebih dari nilai berikut.
[in] ThreadId
Pengidentifikasi utas.
[in, out] NodeCount
Pada input, angka dari 1 hingga WCT_MAX_NODE_COUNT yang menentukan jumlah simpul dalam rantai tunggu. Saat dikembalikan, jumlah simpul yang diambil. Jika array tidak dapat berisi semua simpul rantai tunggu, fungsi gagal, GetLastError mengembalikan ERROR_MORE_DATA, dan parameter ini menerima jumlah elemen array yang diperlukan untuk berisi semua simpul.
Untuk sesi asinkron, periksa nilai yang diteruskan ke fungsi panggilan balik. Jangan bebaskan variabel sampai fungsi panggilan balik telah kembali.
[out] NodeInfoArray
Array struktur WAITCHAIN_NODE_INFO yang menerima rantai tunggu.
Untuk sesi asinkron, periksa nilai yang diteruskan ke fungsi panggilan balik. Jangan bebaskan array hingga fungsi panggilan balik kembali.
[out] IsCycle
Jika fungsi mendeteksi kebuntuan, variabel ini diatur ke TRUE; jika tidak, ini diatur ke FALSE.
Untuk sesi asinkron, periksa nilai yang diteruskan ke fungsi panggilan balik. Jangan bebaskan variabel sampai fungsi panggilan balik telah kembali.
Mengembalikan nilai
Jika fungsi berhasil, nilai yang dikembalikan bukan nol.
Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mengambil informasi kesalahan yang diperluas, panggil GetLastError.
Menampilkan kode | Deskripsi |
---|---|
|
Penelepon tidak memiliki hak istimewa yang memadai untuk membuka utas target. |
|
Salah satu parameter input tidak valid. |
|
Sesi WCT dibuka dalam mode asinkron. Hasilnya akan dikembalikan melalui fungsi panggilan balik WaitChainCallback . |
|
Buffer NodeInfoArray tidak cukup besar untuk berisi semua node dalam rantai tunggu. Parameter NodeCount berisi jumlah simpul dalam rantai. Rantai tunggu yang dikembalikan masih valid. |
|
Sistem operasi tidak menyediakan layanan ini. |
|
Utas yang ditentukan tidak dapat ditemukan. |
|
Jumlah simpul melebihi WCT_MAX_NODE_COUNT. Rantai tunggu yang dikembalikan masih valid. |
Keterangan
Jika sesi asinkron, fungsi mengembalikan FALSE dan GetLastError mengembalikan ERROR_IO_PENDING. Untuk mendapatkan hasilnya, lihat fungsi panggilan balik WaitChainCallback .
Jika utas yang ditentukan tidak diblokir atau diblokir pada elemen sinkronisasi yang tidak didukung, fungsi mengembalikan satu item di NodeInfoArray.
Penelepon harus memiliki hak istimewa SE_DEBUG_NAME. Jika pemanggil memiliki hak istimewa yang tidak memadai, fungsi gagal jika utas pertama tidak dapat diakses. Jika tidak, simpul terakhir dalam array akan mengatur anggota ObjectStatus-nya ke WctStatusNoAcces.
Jika ada subset simpul dalam array yang membentuk siklus, fungsi mengatur parameter IsCycle ke TRUE.
Informasi rantai tunggu bersifat dinamis; itu benar ketika fungsi dipanggil tetapi mungkin kedaluarsa pada saat ditinjau oleh pemanggil.
Contoh
Misalnya, lihat Menggunakan WCT.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows Vista [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2008 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | wct.h |
Pustaka | Advapi32.lib |
DLL | Advapi32.dll |