寒江_第一个驱动

1、hjFirst.c

///
/// @file first.c
/// @author crazy_chu
/// @date2008-11-1
/// 

#include <ntddk.h>
    
// 提供一个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 0

Copyright (C) Microsoft Corporation, 1999 - 2002

Module 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=hjFirst
TARGETTYPE=DRIVER
SOURCES=hjFirst.c
TARGETPATH=obj

 

4、SRVINSTW.EXE 安装驱动:

  安装服务-->本地机器-->服务名称(自己输入不重复的服务名称)-->程序路径(这里需要手动输入sys文件所在的路径和文件名)-->选择"设备驱动"-->“驱动器目录名”(这里是要输入 NT式驱动的 驱动器目录名),不要输入任何内容,直接“下一步”-->“启动类型”选择“手动”--> 完成--> 成功的话,会提示“服务成功安装”

  ZC: 上面只能手动输入 NT式驱动的sys文件所在的路径和文件名,可以Debug修改一下 是的它能够支持 选择sys文件

 

  4.1、启动:“net start hjFirst”

  4.2、停止:“net stop hjFirst”

5、

 

posted @ 2016-12-15 13:58  DriverSkill  阅读(198)  评论(0编辑  收藏  举报