打印驱动对象下的域值

///
/// @file first.c
/// @author crazy_chu
/// @date2008-11-1
///
#include <ntddk.h>
// 提供一个Unload 函数只是为了让这个程序能动态卸载,方便调试。
VOID DriverUnload(PDRIVER_OBJECT driver)
{


 LARGE_INTEGER    SysTime, LocalTime; 
 TIME_FIELDS      TimeFields; 
KeQuerySystemTime(&SysTime); 
   ExSystemTimeToLocalTime(&SysTime, &LocalTime); 
   RtlTimeToTimeFields(&LocalTime, &TimeFields); 
   DbgPrint("SystemTime: %d-%d-%d, %d:%d:%d\r\n", 
     TimeFields.Year, TimeFields.Month, TimeFields.Day, 
     TimeFields.Hour, TimeFields.Minute, TimeFields.Second 
     );
// 但是实际上我们什么都不做,只打印一句话:
DbgPrint("first: Our driver is unloading…\r\n");
}
// DriverEntry,入口函数。相当于main。
NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path)
{
// 这是我们的内核模块的入口,可以在这里写入我们想写的东西。
// 我在这里打印一句话。因为”Hello,world” 常常被高手耻笑,所以
// 我们打印一点别的。
UNICODE_STRING str=RTL_CONSTANT_STRING(L"first: Hello, my salary!");
DbgPrint("%wZ\r\n",&str);
DbgPrint("Type:%d,Size:%d,\r\n",driver->Type,driver->Size);

DbgPrint("DriverName:%wZ\r\n",&driver->DriverName);
DbgPrint("HardwareDatabase:%wZ\r\n",driver->HardwareDatabase);


// 设置一个卸载函数便于这个函数能退出。
driver->DriverUnload = DriverUnload;
return STATUS_SUCCESS;
}

你可能感兴趣的:(打印驱动对象下的域值)