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 ****************************************************************/ /* FUNCTIONS ****************************************************************/
NTSTATUS NTSTATUS
NTAPI NtfsDeviceControl(PNTFS_IRP_CONTEXT IrpContext)
NtfsFsdDeviceControl(PDEVICE_OBJECT DeviceObject,
PIRP Irp)
{ {
PDEVICE_EXTENSION DeviceExt; PDEVICE_EXTENSION DeviceExt;
PIRP Irp = IrpContext->Irp;
DeviceExt = DeviceObject->DeviceExtension; DeviceExt = IrpContext->DeviceObject->DeviceExtension;
IoSkipCurrentIrpStackLocation(Irp); IoSkipCurrentIrpStackLocation(Irp);
/* Lower driver will complete - we don't have to */
IrpContext->Flags &= ~IRPCONTEXT_COMPLETE;
return IoCallDriver(DeviceExt->StorageDevice, Irp); return IoCallDriver(DeviceExt->StorageDevice, Irp);
} }

View file

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

View file

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

View file

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