reactos操作系统实现(124)
从上面的入口函数里可以看到,很多消息处理函数都是调用函数VfatBuildRequest来处理的,具体实现代码如下: #001 NTSTATUS NTAPI VfatBuildRequest ( #002 IN PDEVICE_OBJECT DeviceObject, #003 IN PIRP Irp) #004 { #005 NTSTATUS Status; #006 PVFAT_IRP_CONTEXT IrpContext; #007 #008 DPRINT ("VfatBuildRequest (DeviceObject %p,Irp %p)/n",DeviceObject,Irp); #009 #010 ASSERT(DeviceObject); #011 ASSERT(Irp);
分配IRP的上下文。 #012 IrpContext = VfatAllocateIrpContext(DeviceObject,Irp); #013 if (IrpContext == NULL) #014 {
如果分配不成功,就返回处理IRP出错。 #015 Status = STATUS_INSUFFICIENT_RESOURCES; #016 Irp->IoStatus.Status = Status; #017 IoCompleteRequest (Irp,IO_NO_INCREMENT); #018 } #019 else #020 {
通过临界区来加锁对文件系统访问。 #021 FsRtlEnterFileSystem();
调用函数VfatDispatchRequest来分发到不同的函数处理不同的功能。 #022 Status = VfatDispatchRequest (IrpContext); #023 FsRtlExitFileSystem(); #024 } #025 return Status; #026} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |