From cd329ee3614a37aceef93b9823d9062b4fa6e5cd Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Tue, 22 Dec 2015 17:57:47 -0800 Subject: [PATCH] Major refactoring: WIP --- src/sys/driver.h | 4 ++-- src/sys/volume.c | 30 ++++++++++++++++++++---------- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/src/sys/driver.h b/src/sys/driver.h index 45795d0b..4be65ecb 100644 --- a/src/sys/driver.h +++ b/src/sys/driver.h @@ -428,12 +428,12 @@ VOID FspVolumeDelete( PDEVICE_OBJECT FsctlDeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); NTSTATUS FspVolumeMount( PDEVICE_OBJECT FsctlDeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); +NTSTATUS FspVolumeRedirQueryPathEx( + PDEVICE_OBJECT FsvolDeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); NTSTATUS FspVolumeGetName( PDEVICE_OBJECT FsctlDeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); NTSTATUS FspVolumeTransact( PDEVICE_OBJECT FsctlDeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); -NTSTATUS FspVolumeRedirQueryPathEx( - PDEVICE_OBJECT FsvolDeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); NTSTATUS FspVolumeWork( PDEVICE_OBJECT FsvolDeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); diff --git a/src/sys/volume.c b/src/sys/volume.c index 7988a727..57e0ddb9 100644 --- a/src/sys/volume.c +++ b/src/sys/volume.c @@ -13,12 +13,12 @@ VOID FspVolumeDelete( static WORKER_THREAD_ROUTINE FspVolumeDeleteDelayed; NTSTATUS FspVolumeMount( PDEVICE_OBJECT FsctlDeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); +NTSTATUS FspVolumeRedirQueryPathEx( + PDEVICE_OBJECT FsvolDeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); NTSTATUS FspVolumeGetName( PDEVICE_OBJECT FsctlDeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); NTSTATUS FspVolumeTransact( PDEVICE_OBJECT FsctlDeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); -NTSTATUS FspVolumeRedirQueryPathEx( - PDEVICE_OBJECT FsvolDeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); NTSTATUS FspVolumeWork( PDEVICE_OBJECT FsvolDeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); @@ -340,6 +340,24 @@ NTSTATUS FspVolumeMount( return STATUS_SUCCESS; } +NTSTATUS FspVolumeRedirQueryPathEx( + PDEVICE_OBJECT FsvolDeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp) +{ + PAGED_CODE(); + + ASSERT(IRP_MJ_DEVICE_CONTROL == IrpSp->MajorFunction); + ASSERT(IOCTL_REDIR_QUERY_PATH_EX == IrpSp->Parameters.DeviceIoControl.IoControlCode); + + if (KernelMode != Irp->RequestorMode) + return STATUS_ACCESS_DENIED; + + //NTSTATUS Result; + //FSP_FSVOL_DEVICE_EXTENSION *FsvolDeviceExtension = FspFsvolDeviceExtension(FsvolDeviceObject); + //FSP_FSCTL_TRANSACT_REQ *Request = IrpSp->Parameters.DeviceIoControl.Type3InputBuffer; + + return STATUS_INVALID_DEVICE_REQUEST; +} + NTSTATUS FspVolumeGetName( PDEVICE_OBJECT FsctlDeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp) { @@ -488,14 +506,6 @@ NTSTATUS FspVolumeTransact( return STATUS_SUCCESS; } -NTSTATUS FspVolumeRedirQueryPathEx( - PDEVICE_OBJECT FsvolDeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp) -{ - PAGED_CODE(); - - return STATUS_INVALID_DEVICE_REQUEST; -} - NTSTATUS FspVolumeWork( PDEVICE_OBJECT FsvolDeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp) {