reactos操作系统实现(124)

前端之家收集整理的这篇文章主要介绍了reactos操作系统实现(124)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

从上面的入口函数里可以看到,很多消息处理函数都是调用函数@H_301_1@VfatBuildRequest来处理的,具体实现代码如下:

@H_301_4@@H_301_1@#001 NTSTATUS NTAPI VfatBuildRequest (

@H_301_4@@H_301_1@#002 IN PDEVICE_OBJECT DeviceObject,

@H_301_4@@H_301_1@#003 IN PIRP Irp)

@H_301_4@@H_301_1@#004 {

@H_301_4@@H_301_1@#005 NTSTATUS Status;

@H_301_4@@H_301_1@#006 PVFAT_IRP_CONTEXT IrpContext;

@H_301_4@@H_301_1@#007

@H_301_4@@H_301_1@#008 DPRINT ("VfatBuildRequest (DeviceObject %p,Irp %p)/n",DeviceObject,Irp);

@H_301_4@@H_301_1@#009

@H_301_4@@H_301_1@#010 ASSERT(DeviceObject);

@H_301_4@@H_301_1@#011 ASSERT(Irp);

@H_301_4@@H_301_1@

@H_301_4@分配@H_301_1@IRP的上下文。@H_301_1@

@H_301_4@@H_301_1@#012 IrpContext = VfatAllocateIrpContext(DeviceObject,Irp);

@H_301_4@@H_301_1@#013 if (IrpContext == NULL)

@H_301_4@@H_301_1@#014 {

@H_301_4@@H_301_1@

@H_301_4@如果分配不成功,就返回处理@H_301_1@IRP出错。@H_301_1@

@H_301_4@@H_301_1@#015 Status = STATUS_INSUFFICIENT_RESOURCES;

@H_301_4@@H_301_1@#016 Irp->IoStatus.Status = Status;

@H_301_4@@H_301_1@#017 IoCompleteRequest (Irp,IO_NO_INCREMENT);

@H_301_4@@H_301_1@#018 }

@H_301_4@@H_301_1@#019 else

@H_301_4@@H_301_1@#020 {

@H_301_4@@H_301_1@

@H_301_4@通过临界区来加锁对文件系统访问。@H_301_1@

@H_301_4@@H_301_1@#021 FsRtlEnterFileSystem();

@H_301_4@@H_301_1@

@H_301_4@调用函数@H_301_1@VfatDispatchRequest来分发到不同的函数处理不同的功能。@H_301_1@

@H_301_4@@H_301_1@#022 Status = VfatDispatchRequest (IrpContext);

@H_301_4@@H_301_1@#023 FsRtlExitFileSystem();

@H_301_4@@H_301_1@#024 }

@H_301_4@@H_301_1@#025 return Status;

@H_301_4@@H_301_1@#026}

猜你在找的React相关文章