Bagikan melalui


Men-debug masalah perangkat USB dengan menggunakan peristiwa ETW

Topik ini memberikan tips untuk men-debug masalah perangkat USB dengan menggunakan peristiwa ETW.

Mendiagnosis Kegagalan Enumerasi Perangkat

Anda dapat menggunakan peristiwa ETW yang terkait dengan tugas enumerasi hub USB untuk menentukan akar penyebab sebagian besar kegagalan enumerasi perangkat.

Untuk melihat peristiwa dalam log jejak yang terkait dengan tugas enumerasi hub USB

  1. Buka Netmon dan temukan peristiwa enumerasi, seperti "Mulai Enumerasi Port". Klik peristiwa di panel Ringkasan Bingkai .

  2. Konfirmasikan bahwa tugas untuk peristiwa ini adalah enumerasi hub USB dengan memeriksa bidang Tugas untuk peristiwa tersebut:

    1. Di panel Detail Bingkai , perluas Net Event, perluas Header, perluas Deskriptor, lalu temukan bidang Tugas .
    2. Konfirmasikan bahwa bidang Tugas berisi nilai 2 (enumerasi hub USB).
  3. Filter peristiwa untuk memperlihatkan hanya yang dari driver hub yang memiliki nilai tugas 2:

    1. Klik kanan bidang Tugas .

    2. Pilih Tambahkan Nilai yang Dipilih untuk Menampilkan Filter.

    3. Klik kanan peristiwa di panel Ringkasan Bingkai dan pilih Tambahkan"Nama Protokol" ke Filter Tampilan.

    4. Di panel Filter Tampilan , ubah "OR" menjadi "AND". Contoh berikut menunjukkan filter yang dihasilkan:

      NetEvent.Header.Descriptor.Task == 0x2 AND ProtocolName == "USBHub_MicrosoftWindowsUSBUSBHUB"
      

      Untuk informasi selengkapnya tentang menggunakan filter di Netmon, lihat "Filter Netmon USB" di Studi Kasus: Memecahkan masalah Perangkat USB yang Tidak Diketahui dengan Menggunakan ETW dan Netmon.

Mendiagnosis Kegagalan Mulai Perangkat

Jika perangkat gagal dimulai selama penanganan driver hub dari paket permintaan I/O (IRP) mulai perangkat, Anda dapat menggunakan peristiwa ETW yang terkait dengan tugas mulai perangkat USB untuk memecahkan masalah kegagalan. Di Netmon, temukan peristiwa mulai perangkat seperti "USB Device Start IRP Dispatched". Anda dapat memfilter peristiwa untuk hanya menampilkannya dari driver hub dengan nilai tugas 21 (perangkat USB dimulai). Untuk informasi selengkapnya tentang membuat filter seperti itu, lihat "Mendiagnosis Kegagalan Enumerasi Perangkat" dalam topik ini.

Pembuatan Profil Pengaturan Waktu Penyisipan Perangkat

Anda dapat menentukan di mana waktu dihabiskan di driver hub selama penyisipan perangkat dengan melihat tanda waktu peristiwa enumerasi.

Waktu Enumerasi

Bagian waktu penyisipan perangkat yang dikonsumsi driver hub untuk menghitung perangkat adalah waktu yang berlalu antara dua peristiwa berikut:

  • Mulai Enumerasi Port
  • Enumerasi Port Selesai

Tugas Enumerasi Pembuatan Profil

Ketika driver hub USB menghitung perangkat, driver hub USB mencatat peristiwa berikut dalam urutan berikut:

  • Mulai Enumerasi Port
  • Enumerasi Debounce Selesai
  • PDO Dibuat untuk Enumerasi
  • Reset Port Enumerasi Pertama Selesai
  • Enumerasi - CreateDevice Selesai
  • Reset Port Enumerasi Kedua Selesai
  • Enumerasi - InitializeDevice Selesai
  • Enumerasi - SetupDevice Selesai
  • Enumerasi Port Selesai

Untuk menentukan waktu yang dikonsumsi driver hub untuk setiap tugas enumerasi, hitung waktu yang berlalu di antara peristiwa sebelumnya. Waktu yang Berlalu antara IoInvalidateDeviceRelations dan IRP_MN_QUERY_DEVICE_RELATIONS

Untuk menentukan bagian waktu penyisipan perangkat yang dikonsumsi sistem saat menunggu IRP hubungan perangkat kueri, ukur waktu yang berlalu antara dua peristiwa berikut:

  • Enumerasi Port Selesai
  • USB Hub Query Device Relations (BusRelations) IRP Dikirim

Waktu yang Berlalu antara Penyelesaian IRP_MN_QUERY_DEVICE_RELATIONS dan IRP_MN_START_DEVICE

Untuk menentukan bagian waktu penyisipan perangkat antara melaporkan objek perangkat fisik (PDO) baru ke manajer Plug and Play dan penerimaan IRP mulai, ukur waktu yang berlalu antara dua peristiwa berikut:

  • IRP Hubungan Perangkat Kueri USB Hub Selesai
  • USB Device Start IRP Dikirim

Mulai Pengaturan Waktu IRP

Untuk menentukan waktu yang dihabiskan di driver hub yang menangani IRP mulai, ukur waktu yang berlalu antara dua peristiwa berikut:

  • USB Device Start IRP Dikirim
  • IRP Mulai Perangkat USB Selesai

Waktu Lanjutkan Perangkat Software-Initiated

Driver fungsi perangkat dapat mengirim permintaan daya perangkat D0 untuk melanjutkan perangkat dari status ditangguhkan. Untuk menentukan jumlah waktu yang diperlukan bagi perangkat untuk melanjutkan dari penangguhan dan siap untuk permintaan transfer, ukur waktu yang berlalu antara dua peristiwa berikut:

  • Perangkat USB Set D0 Device Power IRP Dikirim
  • Perangkat USB Set D0 Device Power IRP Selesai

Waktu Lanjutkan Perangkat Hardware-Initiated

Sinyal resume pada bus menyebabkan perangkat dilanjutkan dari status ditangguhkan. Untuk menentukan jumlah waktu yang diperlukan bagi perangkat untuk melanjutkan ke status di mana perangkat siap untuk permintaan transfer, ukur waktu yang berlalu antara dua peristiwa berikut:

  • Hub induk tidak ditangguhkan:
    • IRP Tunggu Perangkat USB Selesai
    • Perangkat USB Set D0 Device Power IRP Selesai
  • Hub induk ditangguhkan:
    • Memulai Resume of Hub dari Selective Suspend (pertama dari peristiwa ini untuk hub apa pun antara perangkat dan pengontrol host)
    • Perangkat USB Set D0 Device Power IRP Selesai

HUB RESUME FROM Selective Suspend Timing

Anda dapat menentukan jumlah waktu yang diperlukan agar hub dilanjutkan dari penangguhan selektif dengan mengukur waktu yang berlalu antara dua peristiwa berikut:

  • Memulai Resume of Hub dari Suspensi Selektif
  • Resume Hub Selesai

Catatan

Waktu lanjutkan hub tergantung pada waktu lanjutkan semua perangkat di bawah hub dan mungkin beberapa atau semua hub di atas hub yang sedang dilanjutkan.