Bagikan melalui


!locks (!kdext*.locks)

Ekstensi !locks di Kdextx86.dll dan Kdexts.dll menampilkan informasi tentang kunci ERESOURCE kernel.

Perintah ekstensi ini tidak boleh bingung dengan perintah ekstensi !ntsdexts.locks.

!locks [Options] [Address]

Parameter

Opsi Menentukan jumlah informasi yang akan ditampilkan. Kombinasi opsi berikut dapat digunakan:

-v
Menampilkan informasi terperinci tentang setiap kunci.

-P
Tampilkan semua informasi yang tersedia tentang kunci, termasuk statistik performa.

-d
Tampilkan informasi tentang semua kunci. Jika tidak, hanya kunci dengan ketidakcocokan yang ditampilkan.)

Alamat
Menentukan alamat heksadesimal kunci ERESOURCE yang akan ditampilkan. Jika Alamat adalah 0 atau dihilangkan, informasi tentang semua kunci ERESOURCE dalam sistem akan ditampilkan.

DLL

Kdexts.dll

Keterangan

Ekstensi !locks menampilkan semua kunci yang disimpan pada sumber daya berdasarkan utas. Kunci dapat dibagikan atau eksklusif, yang berarti tidak ada utas lain yang dapat memperoleh akses ke sumber daya tersebut. Informasi ini berguna ketika kebuntuan terjadi pada sistem. Kebuntuan disebabkan oleh satu utas yang tidak dijalankan yang memegang kunci eksklusif pada sumber daya yang dibutuhkan utas yang dijalankan.

Anda biasanya dapat menentukan kebuntuan di Microsoft Windows 2000 dengan menemukan satu utas yang tidak dijalankan yang menyimpan kunci eksklusif pada sumber daya yang diperlukan oleh utas yang dieksekusi. Sebagian besar kunci dibagikan.

Berikut adalah contoh output !locks dasar:

kd> !locks
**** DUMP OF ALL RESOURCE OBJECTS ****
KD: Scanning for held locks......

Resource @ 0x80e97620    Shared 4 owning threads
     Threads: ff688da0-01<*> ff687da0-01<*> ff686da0-01<*> ff685da0-01<*> 
KD: Scanning for held locks.......................................................

Resource @ 0x80e23f38    Shared 1 owning threads
     Threads: 80ed0023-01<*> *** Actual Thread 80ed0020
KD: Scanning for held locks.

Resource @ 0x80d8b0b0    Shared 1 owning threads
     Threads: 80ed0023-01<*> *** Actual Thread 80ed0020
2263 total locks, 3 locks currently held

Perhatikan bahwa alamat untuk setiap utas yang ditampilkan diikuti oleh jumlah utasnya (misalnya, "-01"). Jika utas diikuti oleh "<*>", utas tersebut adalah salah satu pemilik kunci. Dalam beberapa kasus, alamat utas awal berisi offset. Dalam hal ini, alamat utas aktual juga ditampilkan.

Jika Anda ingin menemukan informasi selengkapnya tentang salah satu objek sumber daya ini, gunakan alamat yang mengikuti "Sumber Daya @" sebagai argumen untuk perintah di masa mendatang. Untuk menyelidiki sumber daya kedua yang ditampilkan dalam contoh sebelumnya, Anda dapat menggunakan dt ERESOURCE 80d8b0b0 atau !thread 80ed0020. Atau Anda dapat menggunakan ekstensi !locks lagi dengan opsi -v :

kd> !locks -v 80d8b0b0

Resource @ 0x80d8b0b0    Shared 1 owning threads
     Threads: 80ed0023-01<*> *** Actual Thread 80ed0020

     THREAD 80ed0020  Cid 4.2c  Teb: 00000000 Win32Thread: 00000000 WAIT: (WrQueue) KernelMode Non-Alertable
         8055e100  Unknown
     Not impersonating
GetUlongFromAddress: unable to read from 00000000
     Owning Process 80ed5238
     WaitTime (ticks)          44294977
     Context Switch Count      147830             
     UserTime                  0:00:00.0000
     KernelTime                0:00:02.0143
     Start Address nt!ExpWorkerThread (0x80506aa2)
     Stack Init fafa4000 Current fafa3d18 Base fafa4000 Limit fafa1000 Call 0
     Priority 13 BasePriority 13 PriorityDecrement 0
ChildEBP RetAddr  
fafa3d30 804fe997 nt!KiSwapContext+0x25 (FPO: [EBP 0xfafa3d48] [0,0,4]) [D:\NT\base\ntos\ke\i386\ctxswap.asm @ 139]
fafa3d48 80506a17 nt!KiSwapThread+0x85 (FPO: [Non-Fpo]) (CONV: fastcall) [d:\nt\base\ntos\ke\thredsup.c @ 1960]
fafa3d78 80506b36 nt!KeRemoveQueue+0x24c (FPO: [Non-Fpo]) (CONV: stdcall) [d:\nt\base\ntos\ke\queueobj.c @ 542]
fafa3dac 805ad8bb nt!ExpWorkerThread+0xc6 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\nt\base\ntos\ex\worker.c @ 1130]
fafa3ddc 8050ec72 nt!PspSystemThreadStartup+0x2e (FPO: [Non-Fpo]) (CONV: stdcall) [d:\nt\base\ntos\ps\create.c @ 2164]
00000000 00000000 nt!KiThreadStartup+0x16 [D:\NT\base\ntos\ke\i386\threadbg.asm @ 81]

1 total locks, 1 locks currently held