Handle IRP_MJ_DEVICE_CONTROL with the dispatch routine

svn path=/trunk/; revision=67670
This commit is contained in:
Pierre Schweitzer 2015-05-11 21:11:48 +00:00
parent 07a731ed1c
commit 7f03ff50e9
4 changed files with 13 additions and 9 deletions

View file

@ -33,14 +33,16 @@
/* FUNCTIONS ****************************************************************/
NTSTATUS
NTAPI
NtfsFsdDeviceControl(PDEVICE_OBJECT DeviceObject,
PIRP Irp)
NtfsDeviceControl(PNTFS_IRP_CONTEXT IrpContext)
{
PDEVICE_EXTENSION DeviceExt;
PIRP Irp = IrpContext->Irp;
DeviceExt = DeviceObject->DeviceExtension;
DeviceExt = IrpContext->DeviceObject->DeviceExtension;
IoSkipCurrentIrpStackLocation(Irp);
/* Lower driver will complete - we don't have to */
IrpContext->Flags &= ~IRPCONTEXT_COMPLETE;
return IoCallDriver(DeviceExt->StorageDevice, Irp);
}

View file

@ -80,6 +80,10 @@ NtfsFsdDispatch(PDEVICE_OBJECT DeviceObject,
case IRP_MJ_READ:
Status = NtfsRead(IrpContext);
break;
case IRP_MJ_DEVICE_CONTROL:
Status = NtfsDeviceControl(IrpContext);
break;
}
}
else

View file

@ -128,7 +128,7 @@ NtfsInitializeFunctionPointers(PDRIVER_OBJECT DriverObject)
DriverObject->MajorFunction[IRP_MJ_SET_VOLUME_INFORMATION] = NtfsFsdDispatch;
DriverObject->MajorFunction[IRP_MJ_DIRECTORY_CONTROL] = NtfsFsdDispatch;
DriverObject->MajorFunction[IRP_MJ_FILE_SYSTEM_CONTROL] = NtfsFsdFileSystemControl;
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = NtfsFsdDeviceControl;
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = NtfsFsdDispatch;
return;
}

View file

@ -536,10 +536,8 @@ NtfsFsdCreate(PDEVICE_OBJECT DeviceObject,
/* devctl.c */
DRIVER_DISPATCH NtfsFsdDeviceControl;
NTSTATUS NTAPI
NtfsFsdDeviceControl(PDEVICE_OBJECT DeviceObject,
PIRP Irp);
NTSTATUS
NtfsDeviceControl(PNTFS_IRP_CONTEXT IrpContext);
/* dirctl.c */