Bagikan melalui


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.

Nilai Makna
WCT_OUT_OF_PROC_COM_FLAG
Menghitung semua utas server MTA COM out-of-proc untuk menemukan pengidentifikasi utas yang benar.
WCT_OUT_OF_PROC_CS_FLAG
Mengambil informasi bagian penting dari proses lain.
WCT_OUT_OF_PROC_FLAG
Mengikuti rantai tunggu ke proses lain. Jika tidak, fungsi melaporkan utas pertama dalam proses yang berbeda tetapi tidak mengambil informasi tambahan.

[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
ERROR_ACCESS_DENIED
Penelepon tidak memiliki hak istimewa yang memadai untuk membuka utas target.
ERROR_INVALID_PARAMETER
Salah satu parameter input tidak valid.
ERROR_IO_PENDING
Sesi WCT dibuka dalam mode asinkron. Hasilnya akan dikembalikan melalui fungsi panggilan balik WaitChainCallback .
ERROR_MORE_DATA
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.
ERROR_NOT_SUPPORTED
Sistem operasi tidak menyediakan layanan ini.
ERROR_OBJECT_NOT_FOUND
Utas yang ditentukan tidak dapat ditemukan.
ERROR_TOO_MANY_THREADS
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

Lihat juga

OpenThreadWaitChainSession

WAITCHAIN_NODE_INFO

Traversal Rantai Tunggu

WaitChainCallback