mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-23 08:53:01 -05:00
sys: WIP
This commit is contained in:
parent
23be12ab3b
commit
f35ecbe8ec
@ -131,6 +131,7 @@ static NTSTATUS FspFsctlMountVolume(
|
|||||||
PAGED_CODE();
|
PAGED_CODE();
|
||||||
|
|
||||||
NTSTATUS Result;
|
NTSTATUS Result;
|
||||||
|
FSP_FSCTL_DEVICE_EXTENSION *FsctlDeviceExtension = FspFsctlDeviceExtension(DeviceObject);
|
||||||
PVPB Vpb = IrpSp->Parameters.MountVolume.Vpb;
|
PVPB Vpb = IrpSp->Parameters.MountVolume.Vpb;
|
||||||
PDEVICE_OBJECT FsvrtDeviceObject = Vpb->RealDevice;
|
PDEVICE_OBJECT FsvrtDeviceObject = Vpb->RealDevice;
|
||||||
PDEVICE_OBJECT FsvolDeviceObject;
|
PDEVICE_OBJECT FsvolDeviceObject;
|
||||||
@ -147,7 +148,7 @@ static NTSTATUS FspFsctlMountVolume(
|
|||||||
if (FILE_DEVICE_VIRTUAL_DISK != FsvrtDeviceObject->DeviceType)
|
if (FILE_DEVICE_VIRTUAL_DISK != FsvrtDeviceObject->DeviceType)
|
||||||
return STATUS_UNRECOGNIZED_VOLUME;
|
return STATUS_UNRECOGNIZED_VOLUME;
|
||||||
|
|
||||||
ExAcquireResourceExclusiveLite(&FspFsctlDeviceExtension(DeviceObject)->Resource, TRUE);
|
ExAcquireResourceExclusiveLite(&FsctlDeviceExtension->Resource, TRUE);
|
||||||
|
|
||||||
/* create the file system device object */
|
/* create the file system device object */
|
||||||
Result = IoCreateDevice(DeviceObject->DriverObject,
|
Result = IoCreateDevice(DeviceObject->DriverObject,
|
||||||
@ -167,7 +168,7 @@ static NTSTATUS FspFsctlMountVolume(
|
|||||||
Irp->IoStatus.Information = 0;
|
Irp->IoStatus.Information = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
ExReleaseResourceLite(&FspFsctlDeviceExtension(DeviceObject)->Resource);
|
ExReleaseResourceLite(&FsctlDeviceExtension->Resource);
|
||||||
|
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
@ -178,7 +179,10 @@ static NTSTATUS FspFsvrtDeleteVolume(
|
|||||||
PAGED_CODE();
|
PAGED_CODE();
|
||||||
|
|
||||||
NTSTATUS Result;
|
NTSTATUS Result;
|
||||||
FSP_FSVRT_DEVICE_EXTENSION *FsvrtDeviceExtension = FspFsvrtDeviceExtension(DeviceObject);
|
FSP_FSVRT_DEVICE_EXTENSION *FsvrtDeviceExtension =
|
||||||
|
FspFsvrtDeviceExtension(DeviceObject);
|
||||||
|
FSP_FSCTL_DEVICE_EXTENSION *FsctlDeviceExtension =
|
||||||
|
FspFsctlDeviceExtension(FsvrtDeviceExtension->FsctlDeviceObject);
|
||||||
|
|
||||||
/* access check */
|
/* access check */
|
||||||
Result = FspSecuritySubjectContextAccessCheck(
|
Result = FspSecuritySubjectContextAccessCheck(
|
||||||
@ -186,7 +190,7 @@ static NTSTATUS FspFsvrtDeleteVolume(
|
|||||||
if (!NT_SUCCESS(Result))
|
if (!NT_SUCCESS(Result))
|
||||||
return Result;
|
return Result;
|
||||||
|
|
||||||
ExAcquireResourceExclusiveLite(&FspFsctlDeviceExtension(DeviceObject)->Resource, TRUE);
|
ExAcquireResourceExclusiveLite(&FsctlDeviceExtension->Resource, TRUE);
|
||||||
|
|
||||||
/* stop the I/O queue */
|
/* stop the I/O queue */
|
||||||
FspIoqStop(&FsvrtDeviceExtension->Ioq);
|
FspIoqStop(&FsvrtDeviceExtension->Ioq);
|
||||||
@ -219,7 +223,7 @@ static NTSTATUS FspFsvrtDeleteVolume(
|
|||||||
/* delete the virtual volume device */
|
/* delete the virtual volume device */
|
||||||
FspDeviceDeleteObject(DeviceObject);
|
FspDeviceDeleteObject(DeviceObject);
|
||||||
|
|
||||||
ExReleaseResourceLite(&FspFsctlDeviceExtension(DeviceObject)->Resource);
|
ExReleaseResourceLite(&FsctlDeviceExtension->Resource);
|
||||||
|
|
||||||
return STATUS_INVALID_DEVICE_REQUEST;
|
return STATUS_INVALID_DEVICE_REQUEST;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user