reactos操作系统实现(115)
来源:互联网 发布:淘宝评价晒不了图片 编辑:程序博客网 时间:2024/04/30 04:18
PciIdeXFdoPnpDispatch函数主要处理PCIIDE即插即用的消息处理。具体实现代码如下:
#001 NTSTATUS NTAPI
#002 PciIdeXFdoPnpDispatch(
#003 IN PDEVICE_OBJECT DeviceObject,
#004 IN PIRP Irp)
#005 {
#006 ULONG MinorFunction;
#007 PIO_STACK_LOCATION Stack;
#008 ULONG_PTR Information = 0;
#009 NTSTATUS Status;
#010
获取当前栈位置。
#011 Stack = IoGetCurrentIrpStackLocation(Irp);
次功能码,用来选择那一种功能处理代码。
#012 MinorFunction = Stack->MinorFunction;
#013
#014 switch (MinorFunction)
#015 {
启动设备。
#016 case IRP_MN_START_DEVICE: /* 0x00 */
#017 {
#018 DPRINT("IRP_MJ_PNP / IRP_MN_START_DEVICE/n");
#019 /* Call lower driver */
#020 Status = ForwardIrpAndWait(DeviceObject, Irp);
#021 if (NT_SUCCESS(Status))
#022 Status = PciIdeXFdoStartDevice(DeviceObject, Irp);
#023 break;
#024 }
查询总线有多少个物理设备。
#025 case IRP_MN_QUERY_DEVICE_RELATIONS: /* 0x07 */
#026 {
#027 switch (Stack->Parameters.QueryDeviceRelations.Type)
#028 {
#029 case BusRelations:
#030 {
#031 PDEVICE_RELATIONS DeviceRelations = NULL;
#032 DPRINT("IRP_MJ_PNP /IRP_MN_QUERY_DEVICE_RELATIONS / BusRelations/n");
#033 Status = PciIdeXFdoQueryBusRelations(DeviceObject,&DeviceRelations);
#034 Information = (ULONG_PTR)DeviceRelations;
#035 break;
#036 }
#037 default:
#038 {
#039 DPRINT1("IRP_MJ_PNP /IRP_MN_QUERY_DEVICE_RELATIONS / Unknown type 0x%lx/n",
#040 Stack->Parameters.QueryDeviceRelations.Type);
#041 Status = STATUS_NOT_IMPLEMENTED;
#042 break;
#043 }
#044 }
#045 break;
#046 }
过滤分配的资源请求。
#047 case IRP_MN_FILTER_RESOURCE_REQUIREMENTS: /* 0x0d */
#048 {
#049 DPRINT("IRP_MJ_PNP /IRP_MN_FILTER_RESOURCE_REQUIREMENTS/n");
#050 return ForwardIrpAndForget(DeviceObject, Irp);
#051 }
#052 default:
#053 {
#054 DPRINT1("IRP_MJ_PNP / Unknown minor function0x%lx/n", MinorFunction);
#055 return ForwardIrpAndForget(DeviceObject, Irp);
#056 }
#057 }
#058
返回这个IRP的状态,并标记这个IRP完成。
#059 Irp->IoStatus.Information = Information;
#060 Irp->IoStatus.Status = Status;
#061 IoCompleteRequest(Irp, IO_NO_INCREMENT);
#062 return Status;
#063 }
- reactos操作系统实现(115)
- reactos操作系统实现(1)
- reactos操作系统实现(2)
- reactos操作系统实现(3)
- reactos操作系统实现(4)
- reactos操作系统实现(5)
- reactos操作系统实现(6)
- reactos操作系统实现(7)
- reactos操作系统实现(8)
- reactos操作系统实现(9)
- reactos操作系统实现(10)
- reactos操作系统实现(11)
- reactos操作系统实现(12)
- reactos操作系统实现(13)
- reactos操作系统实现(14)
- reactos操作系统实现(15)
- reactos操作系统实现(16)
- reactos操作系统实现(17)
- 求最大公约数
- 怎样在对话框中得到Document指针
- TTY
- 让Oracle DBA保持旺盛"生命力"的几个习惯
- 3D中投影矩阵公式的推导
- reactos操作系统实现(115)
- 整数判断
- JAVA学习的笔记①--Java平台的安装与设置
- 学习正则表达式
- MPLS Step1(RFC 3031: Mulitprotocol Label Switching Architecture)
- GridView表格动态生成列
- 最简单最安全方法知道你是不是Ta的好友
- 做人做事是一门艺术,更是一门学问
- C#连接Access数据时总报找不到dbo.mdb的问题