和普通的应用程序不同,Windows 驱动程序的入口函数不是main 函数,而是一个叫
做DriverEntry 的函数,代码将在下面列出。DriverEntry 函数由内核中的I/O 管理器负责调
用,其函数有两个参数:pDriverObject 和pRegistryPath。其中,pDriverObject 是I/O 管理
器传递进来的驱动对象,pRegistryPath 是一个Unicode 字符串,指向此驱动负责的注册表。
#001 /************************************************************************ #002 * 文件名称:Driver.cpp #003 * 作 者:张帆 #004 * 完成日期:2007-11-1 #005 *************************************************************************/ #006 #007 #include "Driver.h" #008 #009 /************************************************************************ #010 * 函数名称:DriverEntry #011 * 功能描述:初始化驱动程序,定位和申请硬件资源,创建内核对象 #012 * 参数列表: #013 pDriverObject:从I/O 管理器中传进来的驱动对象 #014 pRegistryPath:驱动程序在注册表的中的路径 #015 * 返回值:返回初始化驱动状态 #016 *************************************************************************/ #017 #pragma INITCODE #018 extern "C" NTSTATUS DriverEntry ( #019 IN PDRIVER_OBJECT pDriverObject, #020 IN PUNICODE_STRING pRegistryPath ) #021 { #022 NTSTATUS status;
#023 KdPrint(("Enter DriverEntry\n")); #024 #025 //注册其他驱动调用函数入口 #026 pDriverObject->DriverUnload = HelloDDKUnload; #027 pDriverObject->MajorFunction[IRP_MJ_CREATE] = HelloDDKDispatchRoutine; #028 pDriverObject->MajorFunction[IRP_MJ_CLOSE] = HelloDDKDispatchRoutine; #029 pDriverObject->MajorFunction[IRP_MJ_WRITE] = HelloDDKDispatchRoutine; #030 pDriverObject->MajorFunction[IRP_MJ_READ] = HelloDDKDispatchRoutine; #031 #032 //创建驱动设备对象 #033 status = CreateDevice(pDriverObject); #034 #035 KdPrint(("DriverEntry end\n")); #036 return status; #037 }
原文:http://www.cnblogs.com/BxWlboke/p/4999534.html