竹林蹊径——深入浅出Windows内核驱动开发源码


竹林蹊径——深入浅出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!
“));
    
    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!
“)); 
    return status;
}

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

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2013-04-25 15:52  竹林蹊径源代码
     目录           0  2011-01-20 23:49  竹林蹊径源代码Code
     目录           0  2011-01-20 15:55  竹林蹊径源代码Code1
     目录           0  2011-01-20 20:16  竹林蹊径源代码Code1HelloDRIVER
     文件        4898  2011-01-20 17:00  竹林蹊径源代码Code1HelloDRIVERHelloDRIVER.c
     文件        1702  2009-11-28 18:13  竹林蹊径源代码Code1HelloDRIVERHelloDRIVER.h
     文件          38  2009-04-24 14:13  竹林蹊径源代码Code1HelloDRIVERMAKEFILE
     文件         216  2009-11-28 16:58  竹林蹊径源代码Code1HelloDRIVERReadMe.txt
     文件          94  2009-11-28 16:46  竹林蹊径源代码Code1HelloDRIVERSOURCES
     目录           0  2011-01-20 20:16  竹林蹊径源代码Code1HelloWorld
     文件        1011  2009-11-28 18:34  竹林蹊径源代码Code1HelloWorldHelloWorld.c
     文件          38  2009-04-24 14:13  竹林蹊径源代码Code1HelloWorldMAKEFILE
     文件         206  2009-11-28 16:49  竹林蹊径源代码Code1HelloWorldReadMe.txt
     文件          92  2009-11-28 16:06  竹林蹊径源代码Code1HelloWorldSOURCES
     目录           0  2011-01-20 23:21  竹林蹊径源代码Code4
     目录           0  2011-01-20 15:55  竹林蹊径源代码Code4Common
     文件        5077  2010-03-16 10:59  竹林蹊径源代码Code4CommonIoCtl.h
     文件         609  2010-06-20 11:59  竹林蹊径源代码Code4CommonNewDelete.h
     文件        3202  2010-09-15 17:49  竹林蹊径源代码Code4Commonpublic.h
     文件        1590  2010-03-14 23:07  竹林蹊径源代码Code4CommonStructure.h
     目录           0  2011-01-20 23:21  竹林蹊径源代码Code4CY001_ClsInst
     文件        5800  2011-01-17 12:42  竹林蹊径源代码Code4CY001_ClsInstclassInst_CY001.c
     文件         730  2011-01-17 13:11  竹林蹊径源代码Code4CY001_ClsInstclassinst_CY001.rc
     文件          60  2011-01-17 12:32  竹林蹊径源代码Code4CY001_ClsInstCY001_ClsInst.def
     文件         269  2010-02-08 18:34  竹林蹊径源代码Code4CY001_ClsInstMAKEFILE
     文件         718  2010-02-08 18:34  竹林蹊径源代码Code4CY001_ClsInst
esource.h
     文件         506  2011-01-17 12:32  竹林蹊径源代码Code4CY001_ClsInstsources
     目录           0  2011-01-20 21:19  竹林蹊径源代码Code4WDF_CY001
     文件        3022  2011-01-20 21:19  竹林蹊径源代码Code4WDF_CY001CY001.vcproj
     文件         387  2010-03-16 10:34  竹林蹊径源代码Code4WDF_CY001Debug.c
     文件       19760  2010-06-09 10:33  竹林蹊径源代码Code4WDF_CY001Device.c
............此处省略321个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)