2个回答
展开全部
NT式驱动指实现不支持即插即用功能的驱动程序。
Windows驱动程序分为两类,一类是不支持即插即用功能的NT式的驱动程序;另一类是支持即插即用功能的WDM式的驱动程序。
于NT式驱动程序,主要的函数是DriverEntry例程、卸载程序以及各个IRP的派遣函数,基本结构如下:
#include "Driver.h"
#pragma INITCODE
extern "C" NTSTATUS DriverEntry (IN PDRIVER_OBJECT pDriverObject
IN PUNICODE_STRING pRegistryPath)
{
.......
pDriverObject->DriverUnload=UnloadFunction;//设置驱动函数
pDriverObject->MajorFunction[IRP_MJ_XXXXX]=DispatchRoutine; //设置每个IRP派遣函数
.......
//创建驱动设备函数
status=CreateDevice(pDriverObject);
........
}
#pragma INITCODE
NTSTATUS CreateDevice(IN PDRIVER_OBJECT)
{
......
}
#pragma INITCODE
NTSTATUS UnloadFunction(IN PDRIVER_OBJECT)
{
......
}
#pragma INITCODE
NTSTATUS DispatchRoutine(IN PDRIVER_OBJECT)
{
......
}
Windows驱动程序分为两类,一类是不支持即插即用功能的NT式的驱动程序;另一类是支持即插即用功能的WDM式的驱动程序。
于NT式驱动程序,主要的函数是DriverEntry例程、卸载程序以及各个IRP的派遣函数,基本结构如下:
#include "Driver.h"
#pragma INITCODE
extern "C" NTSTATUS DriverEntry (IN PDRIVER_OBJECT pDriverObject
IN PUNICODE_STRING pRegistryPath)
{
.......
pDriverObject->DriverUnload=UnloadFunction;//设置驱动函数
pDriverObject->MajorFunction[IRP_MJ_XXXXX]=DispatchRoutine; //设置每个IRP派遣函数
.......
//创建驱动设备函数
status=CreateDevice(pDriverObject);
........
}
#pragma INITCODE
NTSTATUS CreateDevice(IN PDRIVER_OBJECT)
{
......
}
#pragma INITCODE
NTSTATUS UnloadFunction(IN PDRIVER_OBJECT)
{
......
}
#pragma INITCODE
NTSTATUS DispatchRoutine(IN PDRIVER_OBJECT)
{
......
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询