aboutsummaryrefslogtreecommitdiff
path: root/src/debug.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/debug.rs')
-rw-r--r--src/debug.rs46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/debug.rs b/src/debug.rs
new file mode 100644
index 0000000..66e46ab
--- /dev/null
+++ b/src/debug.rs
@@ -0,0 +1,46 @@
+//! Debugger support.
+
+use ::status::NTSTATUS;
+
+extern "C"
+{
+ /// `DbgPrint` routine sends a message to the kernel debugger.
+ pub fn DbgPrint(Format: *const u8, ...) -> NTSTATUS;
+ /// The `DbgPrintEx` routine sends a string to the kernel debugger if certain conditions are met.
+ pub fn DbgPrintEx(ComponentId: u32, Level: u32, Format: *const u8, ...) -> NTSTATUS;
+}
+
+extern "system"
+{
+ /// Breaks into the kernel debugger.
+ pub fn DbgBreakPoint();
+ /// Breaks into the kernel debugger and sends the value of `Status` to the debugger.
+ pub fn DbgBreakPointWithStatus(Status: NTSTATUS);
+}
+
+/// `DbgPrintEx` Message severity.
+#[repr(C)]
+pub enum DPFLTR_LEVEL {
+ ERROR = 0,
+ WARNING,
+ TRACE,
+ INFO,
+}
+
+/// `DbgPrintEx` Component name.
+#[repr(C)]
+pub enum DPFLTR_ID {
+ SYSTEM = 0,
+ SMSS,
+ SETUP,
+ NTFS,
+ // ...
+ IHVDRIVER = 77,
+ IHVVIDEO,
+ IHVAUDIO,
+ IHVNETWORK,
+ IHVSTREAMING,
+ IHVBUS,
+
+ DEFAULT = 99,
+}