/*********************************************************************************
*Copyright(C),2016-$year$,Your Company
*FileName : Pnp.cpp
*Author : $username$
*Version : 0.01
*Date : $time$
*Description:
1.用于实现IRP_MJ_PNP请求相关功能的实现
*Others : //其他内容说明
*Function List: //主要函数列表,每条记录应包含函数名及功能简要说明
1.MJ_Pnp(), IRP_MJ_PNP请求的处理
2.DefaultPnpHandler(), 对PNP IRP进行缺省处理
*History : //修改历史记录列表,每条修改记录应包含修改日期、修改者及修改内容简介
1.Date:
Author:
Modification:
2.…………
**********************************************************************************/
#include "Pnp.h"
/************************************************************************
* 函数名称: DefaultPnpHandler
* 功能描述: 对PNP IRP进行缺省处理
* 参数列表:
|-pExtension: 设备对象的扩展
|-pIrp: IO请求包
* 返 回 值: 返回状态
*************************************************************************/
#pragma PAGEDCODE
NTSTATUS DefaultPnpHandler(PDEVICE_EXTENSION pExtension, PIRP pIrp)
{
PAGED_CODE();
IoSkipCurrentIrpStackLocation(pIrp);
return IoCallDriver(pExtension->NextStackDevice, pIrp);
}
/************************************************************************
* 函数名称: MJ_Pnp
* 功能描述: 对即插即用IRP进行处理
* 参数列表:
|-PhysicalDeviceObject: 功能设备对象
|-pIrp: 从IO请求包
* 返 回 值: 返回状态
*************************************************************************/
#pragma PAGEDCODE
NTSTATUS MJ_Pnp(IN PDEVICE_OBJECT PhysicalDeviceObject, IN PIRP pIrp)
{
PAGED_CODE();
NTSTATUS ntStatus = STATUS_SUCCESS;
PDEVICE_EXTENSION pExtension = (PDEVICE_EXTENSION)PhysicalDeviceObject->DeviceExtension;
PIO_STACK_LOCATION stack = IoGetCurrentIrpStackLocation(pIrp);
static NTSTATUS(*fcntab[])(PDEVICE_EXTENSION pExtension, PIRP pIrp) =
{
DefaultPnpHandler, // IRP_MN_START_DEVICE
DefaultPnpHandler, // IRP_MN_QUERY_REMOVE_DEVICE
DefaultPnpHandler, // IRP_MN_REMOVE_DEVICE
DefaultPnpHandler, // IRP_MN_CANCEL_REMOVE_DEVICE
DefaultPnpHandler, // IRP_MN_STOP_DEVICE
DefaultPnpHandler, // IRP_MN_QUERY_STOP_DEVICE
DefaultPnpHandler, // IRP_MN_CANCEL_STOP_DEVICE
DefaultPnpHandler, // IRP_MN_QUERY_DEVICE_RELATIONS
DefaultPnpHandler, // IRP_MN_QUERY_INTERFACE
DefaultPnpHandler, // IRP_MN_QUERY_CAPABILITIES
DefaultPnpHandler, // IRP_MN_QUERY_RESOURCES
DefaultPnpHandler, // IRP_MN_QUERY_RESOURCE_REQUIREMENTS
DefaultPnpHandler, // IRP_MN_QUERY_DEVICE_TEXT
DefaultPnpHandler, // IRP_MN_FILTER_RESOURCE_REQUIREMENTS
DefaultPnpHandler, //
DefaultPnpHandler, // IRP_MN_READ_CONFIG
DefaultPnpHandler, // IRP_MN_WRITE_CONFIG
DefaultPnpHandler, // IRP_MN_EJECT
DefaultPnpHandler, // IRP_MN_SET_LOCK
DefaultPnpHandler, // IRP_MN_QUERY_ID
DefaultPnpHandler, // IRP_MN_QUERY_PNP_DEVICE_STATE
DefaultPnpHandler, // IRP_MN_QUERY_BUS_INFORMATION
DefaultPnpHandler, // IRP_MN_DEVICE_USAGE_NOTIFICATION
DefaultPnpHandler, // IRP_MN_SURPRISE_REMOVAL
};
ULONG fcn = stack->MinorFunction;
if (fcn >= arraysize(fcntab))
{ // 未知的子功能代码
ntStatus = DefaultPnpHandler(pExtension, pIrp); // some function we don't know about
return ntStatus;
}
ntStatus = (*fcntab[fcn])(pExtension, pIrp);
return ntStatus;
}
没有合适的资源?快使用搜索试试~ 我知道了~
VS2013驱动开发项目模板(详细)

共20个文件
cpp:8个
h:8个
filters:1个


温馨提示
将不同的请求分开在各个文件中了。 VS2013驱动开发项目模板 基于 WDK 7600.16385.1 环境配置: 1:安装WDK 7600.16385.1 2:配置环境变量 WDKPATH 例如: WDKPATH=X:\WinDDK\7600.16385.1
资源推荐
资源详情
资源评论





























收起资源包目录





















共 20 条
- 1
资源评论

- 村夫.2018-01-24谢谢楼主分享,很不错的资源
- benben36112018-03-29vs的驱动开发模板,对初学者还挺有参考意义的,谢谢分享。
- asdfsxtylghjinjin2019-05-27可能是我不会用吧

Vinx911
- 粉丝: 127
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 电网企业大数据的价值实现探析.docx
- 基本台账-安全生产网络组织台帐.doc
- 扩频通信抗干扰系统分析大学本科方案设计书.doc
- 机械设计制造及其自动化-外文翻译-外文文献-英文文献-液压支架的最优化设计.doc
- 油气勘探项目管理的探讨.docx
- 智能家居中家庭总体布线实战技术解析.docx
- 数字图像处理锐化技术的原理与实现.docx
- 计算机软件的安全检测技术分析.docx
- 51单片机的多路温度采集控制系统方案设计书.doc
- 上海XX有限公司网络安全解决方案.ppt
- 基于网络经济时代下市场营销策略的转变.docx
- 从全球视角看中国移动互联网产业发展现状及地位.docx
- 最新家庭医疗网络救护医疗保健ppt模板.pptx
- 《电气控制与PLC应用》课程整体设计措施.doc
- 国内外工程项目管理现状比较与探讨80801.doc
- 第一章旅游网站基于营销优化的内容建设.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
