Fungsi vDbgPrintExWithPrefix (wdm.h)

Rutinitas vDbgPrintExWithPrefix mengirimkan string ke debugger kernel jika kondisi tertentu yang Anda tentukan terpenuhi. Rutinitas ini dapat menambahkan awalan ke output debugger untuk membantu mengatur hasil penelusuran kesalahan.

Sintaks

NTSYSAPI ULONG vDbgPrintExWithPrefix(
  [in] PCCH    Prefix,
  [in] ULONG   ComponentId,
  [in] ULONG   Level,
  [in] PCCH    Format,
  [in] va_list arglist
);

Parameter

[in] Prefix

String yang ditambahkan pada awal output debugger. Anda dapat menggunakan string ini untuk mengatur output debugger dengan menambahkan pengidentifikasi unik.

Misalnya, rutinitas khusus komponen dapat menentukan nama komponen saat memanggil vDbgPrintExWithPrefix. Rutinitas ini akan secara otomatis menambahkan nama komponen ke awal semua output debug yang diteruskan ke rutinitas cetak debug komponen.

[in] ComponentId

Komponen yang memanggil rutinitas ini. Parameter ini harus menjadi salah satu ID filter nama komponen yang didefinisikan dalam Dpfilter.h. Untuk menghindari pencampuran output driver Anda dengan output komponen Windows, Anda hanya boleh menggunakan nilai berikut untuk ComponentId:

  • DPFLTR_IHVVIDEO_ID
  • DPFLTR_IHVAUDIO_ID
  • DPFLTR_IHVNETWORK_ID
  • DPFLTR_IHVSTREAMING_ID
  • DPFLTR_IHVBUS_ID
  • DPFLTR_IHVDRIVER_ID

[in] Level

Tingkat keparahan pesan yang sedang dikirim. Parameter ini bisa berupa bilangan bulat 32-bit. Nilai antara 0 dan 31 (inklusif) diperlakukan berbeda dari nilai antara 32 dan 0xFFFFFFFF. Untuk informasi selengkapnya tentang bagaimana nilai diperlakukan, lihat Membaca dan Memfilter Pesan Debugging.

[in] Format

Penunjuk ke string format untuk dicetak. String Format mendukung sebagian besar kode pemformatan gaya cetak. Namun, Anda dapat menggunakan kode format Unicode (%C, %S, %lc, %ls, %wc, %ws, dan %wZ) hanya dengan IRQL = PASSIVE_LEVEL. Rutinitas vDbgPrintExWithPrefix tidak mendukung tipe titik mengambang (%f, %e, %E, %g, %G, %a, atau %A).

[in] arglist

Daftar argumen untuk string format. Rutinitas vDbgPrintExWithPrefix menggunakan daftar ini dengan cara yang sama seperti yang dilakukan vprintf .

Mengembalikan nilai

vDbgPrintExWithPrefix mengembalikan STATUS_SUCCESS jika operasi berhasil. Jika tidak, rutinitas ini mengembalikan kode kesalahan yang sesuai.

Keterangan

Hanya driver mode kernel yang dapat memanggil rutinitas vDbgPrintExWithPrefix .

vDbgPrintExWithPrefix dapat dipanggil di IRQL <= DIRQL. Namun, Anda dapat menggunakan kode format Unicode (%wc dan %ws) hanya pada IRQL = PASSIVE_LEVEL. Selain itu, karena debugger menggunakan interupsi interproses (IPIs) untuk berkomunikasi dengan prosesor lain, panggilan ke vDbgPrintExWithPrefix di IRQL > DIRQL dapat menyebabkan kebuntuan.

vDbgPrintExWithPrefix meneruskan string yang dibuatnya ke debugger kernel atau tidak melakukan apa pun, tergantung pada nilai ComponentId, Level, dan masker filter komponen yang sesuai. Untuk informasi selengkapnya tentang apa yang dilakukan vDbgPrintEx , lihat Membaca dan Memfilter Pesan Debugging.

Kecuali jika benar-benar diperlukan, Anda tidak boleh mendapatkan string dari input pengguna atau proses lain dan meneruskannya ke vDbgPrintExWithPrefix. Jika Anda menggunakan string yang tidak Anda buat, Anda harus memverifikasi bahwa string ini adalah string format yang valid dan bahwa kode format cocok dengan daftar argumen dalam jenis dan kuantitas. Praktik pengkodean terbaik adalah agar semua string Format statis dan didefinisikan pada waktu kompilasi.

Tidak ada batas atas untuk ukuran string Format atau jumlah argumen dalam daftar arglist . Namun, setiap panggilan tunggal ke vDbgPrintExWithPrefix hanya mengirimkan informasi 512 byte.

Ada juga batasan ukuran buffer yang digunakan debugger. Untuk informasi selengkapnya tentang batas ini, lihat Buffer DbgPrint dan Debugger.

Rutinitas ini didefinisikan dalam Wdm.h. ID filter komponen didefinisikan dalam Dpfilter.h.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia di Microsoft Windows XP dan versi sistem operasi yang lebih baru.
Target Platform Universal
Header wdm.h (termasuk Dpfilter.h, Wdm.h, Ntddk.h, Ndis.h)
Pustaka NtDll.lib (mode pengguna); NtosKrnl.lib (mode kernel)
DLL NtDll.dll (mode pengguna); NtosKrnl.exe (mode kernel)
IRQL <= DIRQL (lihat bagian Komentar)

Lihat juga

DbgPrintEx

vDbgPrintEx