• 大小: 11.18MB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2023-06-26
  • 语言: 其他
  • 标签: 内核  驱动  代码  

资源简介

竹林蹊径——深入浅出Windows内核驱动开发(补全版)].张佩,马勇,董鉴源.扫描版(书签waypoint)的 源码

资源截图

代码片段和文件信息

/* 
******************************************************************************* 
*= = 文件名称:HelloDRIVER.c 
*= = 文件描述:驱动程序HelloDRIVER例子 
*= = 作    者:竹林蹊径 
*= = 编写时间:2009-04-23 21:16:00 
******************************************************************************* 
*/ 

#include “HelloDRIVER.h“ 

//*============================================================================ 
//*= = 预处理定义 
//*============================================================================ 

#pragma alloc_text(INIT DriverEntry)
#pragma alloc_text(PAGE DefaultDispatch)
#pragma alloc_text(PAGE DriverUnload)

//*============================================================================
//*= = 函数名称:DriverEntry
//*= = 功能描述:驱动程序入口函数 
//*= = 入口参数:PDRIVER_object PUNICODE_STRING 
//*= = 出口参数:NTSTATUS
//*============================================================================

NTSTATUS
DriverEntry (
    __in PDRIVER_object Driverobject
    __in PUNICODE_STRING RegistryPath
    )
{
    NTSTATUS status;
    PDEVICE_object deviceobject;
    PDEVICE_EXTENSION deviceExtension;
    UNICODE_STRING symboliclink;
    UNICODE_STRING deviceName;
    ULONG i;
    KdPrint((“Enter HelloDRIVER DriverEntry!\n“));
    
    UNREFERENCED_PARAMETER(RegistryPath); 
    
    RtlInitUnicodeString(&deviceName L“\\Device\\HelloDRIVER“);

    // 处理派遣例程 
    for (i = 0; i <= IRP_MJ_MAXIMUM_FUNCTION; i++)
    {
        Driverobject->MajorFunction[i] = DefaultDispatch; 
    }
    
    Driverobject->DriverUnload = DriverUnload;
    Driverobject->MajorFunction[IRP_MJ_CREATE] = DefaultDispatch; 
    Driverobject->MajorFunction[IRP_MJ_CLOSE] = DefaultDispatch; 
    Driverobject->MajorFunction[IRP_MJ_READ] = DefaultDispatch; 
    Driverobject->MajorFunction[IRP_MJ_WRITE] = DefaultDispatch; 
    
    // 创建设备 
    status = IoCreateDevice( Driverobject
                             sizeof(DEVICE_EXTENSION)
                             &deviceName
                             FILE_DEVICE_UNKNOWN
                             0
                             TRUE
                             &deviceobject);
    if(!NT_SUCCESS(status))
    {
        return status;
    }
    
    deviceobject->Flags = DO_BUFFERED_IO;
    deviceExtension = (PDEVICE_EXTENSION)deviceobject->DeviceExtension;
    deviceExtension->Deviceobject = deviceobject;
    deviceExtension->DeviceName = deviceName;
    
    RtlInitUnicodeString(&symboliclink L“\\??\\HelloDRIVER“);
    deviceExtension->Symboliclink = symboliclink;
    
    // 创建符号链接 
    status = IoCreateSymboliclink(&symboliclink &deviceName);
    
    if(!NT_SUCCESS(status))
    {
        IoDeleteDevice(deviceobject);
        return status;
    }
    
    KdPrint((“End of HelloDRIVER DriverEntry!\n“)); 
    return status;
}

//*============================================================================
//*= = 函数名称:DriverUnload 
//*= = 功能描述:驱动程序卸载函数 
//*= = 入口参数:PDRIVER_OBJ

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2013-04-25 15:52  竹林蹊径源代码\
     目录           0  2011-01-20 23:49  竹林蹊径源代码\Code\
     目录           0  2011-01-20 15:55  竹林蹊径源代码\Code\01\
     目录           0  2011-01-20 20:16  竹林蹊径源代码\Code\01\HelloDRIVER\
     文件        4898  2011-01-20 17:00  竹林蹊径源代码\Code\01\HelloDRIVER\HelloDRIVER.c
     文件        1702  2009-11-28 18:13  竹林蹊径源代码\Code\01\HelloDRIVER\HelloDRIVER.h
     文件          38  2009-04-24 14:13  竹林蹊径源代码\Code\01\HelloDRIVER\MAKEFILE
     文件         216  2009-11-28 16:58  竹林蹊径源代码\Code\01\HelloDRIVER\ReadMe.txt
     文件          94  2009-11-28 16:46  竹林蹊径源代码\Code\01\HelloDRIVER\SOURCES
     目录           0  2011-01-20 20:16  竹林蹊径源代码\Code\01\HelloWorld\
     文件        1011  2009-11-28 18:34  竹林蹊径源代码\Code\01\HelloWorld\HelloWorld.c
     文件          38  2009-04-24 14:13  竹林蹊径源代码\Code\01\HelloWorld\MAKEFILE
     文件         206  2009-11-28 16:49  竹林蹊径源代码\Code\01\HelloWorld\ReadMe.txt
     文件          92  2009-11-28 16:06  竹林蹊径源代码\Code\01\HelloWorld\SOURCES
     目录           0  2011-01-20 23:21  竹林蹊径源代码\Code\04\
     目录           0  2011-01-20 15:55  竹林蹊径源代码\Code\04\Common\
     文件        5077  2010-03-16 10:59  竹林蹊径源代码\Code\04\Common\IoCtl.h
     文件         609  2010-06-20 11:59  竹林蹊径源代码\Code\04\Common\NewDelete.h
     文件        3202  2010-09-15 17:49  竹林蹊径源代码\Code\04\Common\public.h
     文件        1590  2010-03-14 23:07  竹林蹊径源代码\Code\04\Common\Structure.h
     目录           0  2011-01-20 23:21  竹林蹊径源代码\Code\04\CY001_ClsInst\
     文件        5800  2011-01-17 12:42  竹林蹊径源代码\Code\04\CY001_ClsInst\classInst_CY001.c
     文件         730  2011-01-17 13:11  竹林蹊径源代码\Code\04\CY001_ClsInst\classinst_CY001.rc
     文件          60  2011-01-17 12:32  竹林蹊径源代码\Code\04\CY001_ClsInst\CY001_ClsInst.def
     文件         269  2010-02-08 18:34  竹林蹊径源代码\Code\04\CY001_ClsInst\MAKEFILE
     文件         718  2010-02-08 18:34  竹林蹊径源代码\Code\04\CY001_ClsInst\resource.h
     文件         506  2011-01-17 12:32  竹林蹊径源代码\Code\04\CY001_ClsInst\sources
     目录           0  2011-01-20 21:19  竹林蹊径源代码\Code\04\WDF_CY001\
     文件        3022  2011-01-20 21:19  竹林蹊径源代码\Code\04\WDF_CY001\CY001.vcproj
     文件         387  2010-03-16 10:34  竹林蹊径源代码\Code\04\WDF_CY001\Debug.c
     文件       19760  2010-06-09 10:33  竹林蹊径源代码\Code\04\WDF_CY001\Device.c
............此处省略321个文件信息

评论

共有 条评论