Fungsi vDbgPrintEx (wdm.h)

Rutinitas vDbgPrintEx mengirimkan string ke debugger kernel jika kondisi tertentu terpenuhi.

Sintaks

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

Parameter

[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 vDbgPrintEx tidak mendukung tipe titik mengambang (%f, %e, %E, %g, %G, %a, atau %A).

[in] arglist

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

Nilai kembali

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

Keterangan

Hanya driver mode kernel yang dapat memanggil rutinitas vDbgPrintEx .

vDbgPrintEx 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 (IPI) untuk berkomunikasi dengan prosesor lain, memanggil vDbgPrintEx di IRQL > DIRQL dapat menyebabkan kebuntuan.

vDbgPrintEx 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 vDbgPrintEx. 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 vDbgPrintEx hanya akan 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