mirror of
				https://github.com/winfsp/winfsp.git
				synced 2025-10-30 19:48:38 -05:00 
			
		
		
		
	sys: WIP
This commit is contained in:
		| @@ -94,8 +94,6 @@ NTSTATUS FspDeviceOwned( | ||||
| static VOID FspFsctlDeviceDeleteObject(PDEVICE_OBJECT DeviceObject) | ||||
| { | ||||
|     PAGED_CODE(); | ||||
|  | ||||
|     ExDeleteResourceLite(&FspFsctlDeviceExtension(DeviceObject)->Resource); | ||||
| } | ||||
|  | ||||
| static VOID FspFsvrtDeviceDeleteObject(PDEVICE_OBJECT DeviceObject) | ||||
| @@ -133,6 +131,8 @@ VOID FspDeviceDeleteObject(PDEVICE_OBJECT DeviceObject) | ||||
|         break; | ||||
|     } | ||||
|  | ||||
|     ExDeleteResourceLite(&FspDeviceExtension(DeviceObject)->Resource); | ||||
|  | ||||
|     IoDeleteDevice(DeviceObject); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -40,9 +40,9 @@ NTSTATUS DriverEntry( | ||||
|     if (!NT_SUCCESS(Result)) | ||||
|         FSP_RETURN(IoDeleteDevice(FspFsctlDiskDeviceObject)); | ||||
|     FspDeviceExtension(FspFsctlDiskDeviceObject)->Kind = FspFsctlDeviceExtensionKind; | ||||
|     ExInitializeResourceLite(&FspDeviceExtension(FspFsctlDiskDeviceObject)->Resource); | ||||
|     FspDeviceExtension(FspFsctlNetDeviceObject)->Kind = FspFsctlDeviceExtensionKind; | ||||
|     ExInitializeResourceLite(&FspFsctlDeviceExtension(FspFsctlDiskDeviceObject)->Resource); | ||||
|     ExInitializeResourceLite(&FspFsctlDeviceExtension(FspFsctlNetDeviceObject)->Resource); | ||||
|     ExInitializeResourceLite(&FspDeviceExtension(FspFsctlNetDeviceObject)->Resource); | ||||
|  | ||||
|     /* setup the driver object */ | ||||
|     DriverObject->DriverUnload = FspUnload; | ||||
|   | ||||
| @@ -245,11 +245,11 @@ enum | ||||
| typedef struct | ||||
| { | ||||
|     UINT8 Kind; | ||||
|     ERESOURCE Resource; | ||||
| } FSP_DEVICE_EXTENSION; | ||||
| typedef struct | ||||
| { | ||||
|     FSP_DEVICE_EXTENSION Base; | ||||
|     ERESOURCE Resource; | ||||
| } FSP_FSCTL_DEVICE_EXTENSION; | ||||
| typedef struct | ||||
| { | ||||
|   | ||||
| @@ -103,6 +103,7 @@ static NTSTATUS FspFsctlCreateVolume( | ||||
|     { | ||||
|         FSP_FSVRT_DEVICE_EXTENSION *FsvrtDeviceExtension = FspFsvrtDeviceExtension(FsvrtDeviceObject); | ||||
|         FsvrtDeviceExtension->Base.Kind = FspFsvrtDeviceExtensionKind; | ||||
|         ExInitializeResourceLite(&FsvrtDeviceExtension->Base.Resource); | ||||
|         FsvrtDeviceExtension->FsctlDeviceObject = DeviceObject; | ||||
|         FsvrtDeviceExtension->VolumeParams = *Params; | ||||
|         FspIoqInitialize(&FsvrtDeviceExtension->Ioq); | ||||
| @@ -148,7 +149,7 @@ static NTSTATUS FspFsctlMountVolume( | ||||
|     if (FILE_DEVICE_VIRTUAL_DISK != FsvrtDeviceObject->DeviceType) | ||||
|         return STATUS_UNRECOGNIZED_VOLUME; | ||||
|  | ||||
|     ExAcquireResourceExclusiveLite(&FsctlDeviceExtension->Resource, TRUE); | ||||
|     ExAcquireResourceExclusiveLite(&FsctlDeviceExtension->Base.Resource, TRUE); | ||||
|  | ||||
|     /* create the file system device object */ | ||||
|     Result = IoCreateDevice(DeviceObject->DriverObject, | ||||
| @@ -162,13 +163,14 @@ static NTSTATUS FspFsctlMountVolume( | ||||
|             FspFsvrtDeviceExtension(FsvrtDeviceObject)->VolumeParams.SectorSize; | ||||
|         FSP_FSVOL_DEVICE_EXTENSION *FsvolDeviceExtension = FspFsvolDeviceExtension(FsvolDeviceObject); | ||||
|         FsvolDeviceExtension->Base.Kind = FspFsvolDeviceExtensionKind; | ||||
|         ExInitializeResourceLite(&FsvolDeviceExtension->Base.Resource); | ||||
|         FsvolDeviceExtension->FsvrtDeviceObject = FsvrtDeviceObject; | ||||
|         ClearFlag(FsvolDeviceObject->Flags, DO_DEVICE_INITIALIZING); | ||||
|         Vpb->DeviceObject = FsvolDeviceObject; | ||||
|         Irp->IoStatus.Information = 0; | ||||
|     } | ||||
|  | ||||
|     ExReleaseResourceLite(&FsctlDeviceExtension->Resource); | ||||
|     ExReleaseResourceLite(&FsctlDeviceExtension->Base.Resource); | ||||
|  | ||||
|     return Result; | ||||
| } | ||||
| @@ -190,7 +192,7 @@ static NTSTATUS FspFsvrtDeleteVolume( | ||||
|     if (!NT_SUCCESS(Result)) | ||||
|         return Result; | ||||
|  | ||||
|     ExAcquireResourceExclusiveLite(&FsctlDeviceExtension->Resource, TRUE); | ||||
|     ExAcquireResourceExclusiveLite(&FsctlDeviceExtension->Base.Resource, TRUE); | ||||
|  | ||||
|     /* stop the I/O queue */ | ||||
|     FspIoqStop(&FsvrtDeviceExtension->Ioq); | ||||
| @@ -223,7 +225,7 @@ static NTSTATUS FspFsvrtDeleteVolume( | ||||
|     /* delete the virtual volume device */ | ||||
|     FspDeviceDeleteObject(DeviceObject); | ||||
|  | ||||
|     ExReleaseResourceLite(&FsctlDeviceExtension->Resource); | ||||
|     ExReleaseResourceLite(&FsctlDeviceExtension->Base.Resource); | ||||
|  | ||||
|     return STATUS_INVALID_DEVICE_REQUEST; | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user