mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 16:36:33 +00:00
[CDFS]
Finally queue IRP_MJ_CREATE IRPs too. svn path=/trunk/; revision=67997
This commit is contained in:
parent
5ff668f298
commit
102fea8ac8
4 changed files with 15 additions and 18 deletions
|
@ -81,7 +81,7 @@ DriverEntry(PDRIVER_OBJECT DriverObject,
|
|||
DeviceObject->Flags = DO_DIRECT_IO;
|
||||
DriverObject->MajorFunction[IRP_MJ_CLOSE] = CdfsFsdDispatch;
|
||||
DriverObject->MajorFunction[IRP_MJ_CLEANUP] = CdfsFsdDispatch;
|
||||
DriverObject->MajorFunction[IRP_MJ_CREATE] = CdfsCreate;
|
||||
DriverObject->MajorFunction[IRP_MJ_CREATE] = CdfsFsdDispatch;
|
||||
DriverObject->MajorFunction[IRP_MJ_READ] = CdfsFsdDispatch;
|
||||
DriverObject->MajorFunction[IRP_MJ_WRITE] = CdfsFsdDispatch;
|
||||
DriverObject->MajorFunction[IRP_MJ_FILE_SYSTEM_CONTROL] = CdfsFsdDispatch;
|
||||
|
|
|
@ -319,12 +319,10 @@ CdfsDeviceIoControl (IN PDEVICE_OBJECT DeviceObject,
|
|||
|
||||
/* create.c */
|
||||
|
||||
DRIVER_DISPATCH CdfsCreate;
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CdfsCreate(PDEVICE_OBJECT DeviceObject,
|
||||
PIRP Irp);
|
||||
CdfsCreate(
|
||||
PCDFS_IRP_CONTEXT IrpContext);
|
||||
|
||||
/* devctrl.c */
|
||||
|
||||
|
|
|
@ -247,26 +247,30 @@ CdfsCreateFile(PDEVICE_OBJECT DeviceObject,
|
|||
* fail immediately
|
||||
*/
|
||||
Irp->IoStatus.Information = (NT_SUCCESS(Status)) ? FILE_OPENED : 0;
|
||||
Irp->IoStatus.Status = Status;
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
||||
NTSTATUS NTAPI
|
||||
CdfsCreate(PDEVICE_OBJECT DeviceObject,
|
||||
PIRP Irp)
|
||||
CdfsCreate(
|
||||
PCDFS_IRP_CONTEXT IrpContext)
|
||||
{
|
||||
PDEVICE_OBJECT DeviceObject;
|
||||
PDEVICE_EXTENSION DeviceExt;
|
||||
NTSTATUS Status;
|
||||
|
||||
DPRINT("CdfsCreate()\n");
|
||||
|
||||
ASSERT(IrpContext);
|
||||
|
||||
DeviceObject = IrpContext->DeviceObject;
|
||||
if (DeviceObject == CdfsGlobalData->DeviceObject)
|
||||
{
|
||||
/* DeviceObject represents FileSystem instead of logical volume */
|
||||
DPRINT("Opening file system\n");
|
||||
Irp->IoStatus.Information = FILE_OPENED;
|
||||
Status = STATUS_SUCCESS;
|
||||
goto ByeBye;
|
||||
IrpContext->Irp->IoStatus.Information = FILE_OPENED;
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
DeviceExt = DeviceObject->DeviceExtension;
|
||||
|
@ -275,15 +279,10 @@ CdfsCreate(PDEVICE_OBJECT DeviceObject,
|
|||
ExAcquireResourceExclusiveLite(&DeviceExt->DirResource,
|
||||
TRUE);
|
||||
Status = CdfsCreateFile(DeviceObject,
|
||||
Irp);
|
||||
IrpContext->Irp);
|
||||
ExReleaseResourceLite(&DeviceExt->DirResource);
|
||||
KeLeaveCriticalRegion();
|
||||
|
||||
ByeBye:
|
||||
Irp->IoStatus.Status = Status;
|
||||
IoCompleteRequest(Irp,
|
||||
NT_SUCCESS(Status) ? IO_DISK_INCREMENT : IO_NO_INCREMENT);
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
|
|
@ -105,7 +105,7 @@ CdfsDispatch(PCDFS_IRP_CONTEXT IrpContext)
|
|||
break;
|
||||
|
||||
case IRP_MJ_CREATE:
|
||||
// Status = CdfsCreate(IrpContext);
|
||||
Status = CdfsCreate(IrpContext);
|
||||
break;
|
||||
|
||||
case IRP_MJ_CLEANUP:
|
||||
|
|
Loading…
Reference in a new issue