1、hjFirst.c
////// @file first.c/// @author crazy_chu/// @date2008-11-1/// #include// 提供一个Unload函数只是为了VOID DriverUnload(PDRIVER_OBJECT driver){ // 但是实际上我们什么都不做,只打印一句话: DbgPrint("first: Our driver is unloading…\r\n");}// DriverEntry,入口函数。相当于main。NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path){#if DBG// _asm int 3#endif // 这是我们的内核模块的入口,可以在这里写入我们想写的东西。 // 我在这里打印一句话。因为”Hello,world” 常常被高手耻笑,所以 // 我们打印一点别的。 DbgPrint("first: Hello, my salary!"); // 设置一个卸载函数便于这个函数能退出。 // ZC: 寒江说:“我们设置了DriverEUnload的函数指针,这样这个模块可以被动态的卸载; // 如果没有设置DriverEUnload函数指针,责一个内核模块一旦被加载就不能卸载了。” driver->DriverUnload = DriverUnload; return STATUS_SUCCESS;}
2、makefile
!IF 0Copyright (C) Microsoft Corporation, 1999 - 2002Module Name: makefile.Notes: DO NOT EDIT THIS FILE!!! Edit .\sources. if you want to add a new source file to this component. This file merely indirects to the real make file that is shared by all the components of Windows NT (DDK)!ENDIF!INCLUDE $(NTMAKEENV)\makefile.def
3、sources
TARGETNAME=hjFirstTARGETTYPE=DRIVERSOURCES=hjFirst.cTARGETPATH=obj
4、SRVINSTW.EXE 安装驱动:
安装服务-->本地机器-->服务名称(自己输入不重复的服务名称)-->程序路径(这里需要手动输入sys文件所在的路径和文件名)-->选择"设备驱动"-->“驱动器目录名”(这里是要输入 NT式驱动的 驱动器目录名),不要输入任何内容,直接“下一步”-->“启动类型”选择“手动”--> 完成--> 成功的话,会提示“服务成功安装”
ZC: 上面只能手动输入 NT式驱动的sys文件所在的路径和文件名,可以Debug修改一下 是的它能够支持 选择sys文件
4.1、启动:“net start hjFirst”
4.2、停止:“net stop hjFirst”
5、