///
/// @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;
}
打印驱动对象下的域值
最新推荐文章于 2024-01-15 23:12:24 发布