From 9e0c6461c88b16123430b7601d6643be1f191c8e Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Sun, 29 Nov 2015 12:19:09 -0800 Subject: [PATCH] sys: WIP --- src/sys/driver.h | 2 +- src/sys/fsctl.c | 7 ++++--- src/sys/misc.c | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/sys/driver.h b/src/sys/driver.h index 469703e6..28e35b4e 100644 --- a/src/sys/driver.h +++ b/src/sys/driver.h @@ -295,7 +295,7 @@ NTSTATUS FspCreateDeviceObjectList( PDRIVER_OBJECT DriverObject, PDEVICE_OBJECT **PDeviceObjects, PULONG PDeviceObjectCount); VOID FspDeleteDeviceObjectList( PDEVICE_OBJECT *DeviceObjects, ULONG DeviceObjectCount); -NTSTATUS FspLookupDeviceObject( +NTSTATUS FspHasDeviceObject( PDRIVER_OBJECT DriverObject, PDEVICE_OBJECT DeviceObject); /* debug */ diff --git a/src/sys/fsctl.c b/src/sys/fsctl.c index ea4adbcd..ccdd82ca 100644 --- a/src/sys/fsctl.c +++ b/src/sys/fsctl.c @@ -93,6 +93,7 @@ static NTSTATUS FspFsctlCreateVolume( FspIoqInitialize(&FsvrtDeviceExtension->Ioq); RtlCopyMemory(FspFsvrtDeviceExtension(FsvrtDeviceObject)->SecurityDescriptorBuf, SecurityDescriptorBuf, SecurityDescriptorSize); + ClearFlag(FsvrtDeviceObject->DO_DEVICE_INITIALIZING); Irp->IoStatus.Information = DeviceName.Length + 1; } @@ -111,16 +112,16 @@ static NTSTATUS FspFsctlMountVolume( PDEVICE_OBJECT RealDevice = IrpSp->Parameters.MountVolume.Vpb->RealDevice; /* check the passed in volume object; it must be one of our own */ - Result = FspLookupDeviceObject(DeviceObject->DriverObject, RealDevice); + Result = FspHasDeviceObject(DeviceObject->DriverObject, RealDevice); if (!NT_SUCCESS(Result)) { if (STATUS_NO_SUCH_DEVICE == Result) - return STATUS_INVALID_PARAMETER; + return STATUS_UNRECOGNIZED_VOLUME; else return Result; } if (FILE_DEVICE_VIRTUAL_DISK != RealDevice->DeviceType) - return STATUS_INVALID_PARAMETER; + return STATUS_UNRECOGNIZED_VOLUME; return Result; } diff --git a/src/sys/misc.c b/src/sys/misc.c index d025f742..16e9ed38 100644 --- a/src/sys/misc.c +++ b/src/sys/misc.c @@ -83,7 +83,7 @@ VOID FspDeleteDeviceObjectList( ExFreePoolWithTag(DeviceObjects, FSP_TAG); } -NTSTATUS FspLookupDeviceObject( +NTSTATUS FspHasDeviceObject( PDRIVER_OBJECT DriverObject, PDEVICE_OBJECT DeviceObject) { NTSTATUS Result = STATUS_NO_SUCH_DEVICE;