资源简介

竹林蹊径-深入浅出Windows驱动开发源代码.rar 竹林蹊径 深入浅出 Windows驱动开发 源代码

资源截图

代码片段和文件信息

/* 
******************************************************************************* 
*= = 文件名称: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

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       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

     文件       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

     文件       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

     文件       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

     文件       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

     文件      14964  2010-03-16 23:05  Code\04\WDF_CY001\DeviceIO.c

     文件       1679  2010-06-07 16:26  Code\04\WDF_CY001\Main.c

     文件        271  2009-12-03 16:07  Code\04\WDF_CY001\makefile

     文件       4226  2010-03-16 14:15  Code\04\WDF_CY001\Pnp_Pwr.c

     文件       6569  2010-09-15 15:56  Code\04\WDF_CY001\public.h

     文件        353  2010-12-19 22:50  Code\04\WDF_CY001\readme.txt

     文件       7201  2010-03-16 14:38  Code\04\WDF_CY001\ReadWrite.c

     文件        259  2010-04-07 20:28  Code\04\WDF_CY001\sources

............此处省略324个文件信息

评论

共有 条评论