mirror of
				https://github.com/winfsp/winfsp.git
				synced 2025-10-29 19:18:39 -05:00 
			
		
		
		
	sys: WIP
This commit is contained in:
		| @@ -12,6 +12,7 @@ VOID FspDeviceDeleteList( | ||||
|     PDEVICE_OBJECT *DeviceObjects, ULONG DeviceObjectCount); | ||||
| NTSTATUS FspDeviceOwned( | ||||
|     PDRIVER_OBJECT DriverObject, PDEVICE_OBJECT DeviceObject); | ||||
| VOID FspDeviceInitExtension(PDEVICE_OBJECT DeviceObject, UINT8 Kind); | ||||
| static VOID FspFsctlDeviceDeleteObject(PDEVICE_OBJECT DeviceObject); | ||||
| static VOID FspFsvrtDeviceDeleteObject(PDEVICE_OBJECT DeviceObject); | ||||
| static VOID FspFsvolDeviceDeleteObject(PDEVICE_OBJECT DeviceObject); | ||||
| @@ -22,6 +23,7 @@ VOID FspDeviceDeleteObjects(PDRIVER_OBJECT DriverObject); | ||||
| #pragma alloc_text(PAGE, FspDeviceCreateList) | ||||
| #pragma alloc_text(PAGE, FspDeviceDeleteList) | ||||
| #pragma alloc_text(PAGE, FspDeviceOwned) | ||||
| #pragma alloc_text(PAGE, FspDeviceInitExtension) | ||||
| #pragma alloc_text(PAGE, FspFsctlDeviceDeleteObject) | ||||
| #pragma alloc_text(PAGE, FspFsvrtDeviceDeleteObject) | ||||
| #pragma alloc_text(PAGE, FspFsvolDeviceDeleteObject) | ||||
| @@ -91,6 +93,16 @@ NTSTATUS FspDeviceOwned( | ||||
|     return Result; | ||||
| } | ||||
|  | ||||
| VOID FspDeviceInitExtension(PDEVICE_OBJECT DeviceObject, UINT8 Kind) | ||||
| { | ||||
|     PAGED_CODE(); | ||||
|  | ||||
|     FSP_DEVICE_EXTENSION *DeviceExtension = FspDeviceExtension(DeviceObject); | ||||
|  | ||||
|     DeviceExtension->Kind = Kind; | ||||
|     ExInitializeResourceLite(&DeviceExtension->Resource); | ||||
| } | ||||
|  | ||||
| static VOID FspFsctlDeviceDeleteObject(PDEVICE_OBJECT DeviceObject) | ||||
| { | ||||
|     PAGED_CODE(); | ||||
|   | ||||
| @@ -39,10 +39,8 @@ NTSTATUS DriverEntry( | ||||
|         &FspFsctlNetDeviceObject); | ||||
|     if (!NT_SUCCESS(Result)) | ||||
|         FSP_RETURN(IoDeleteDevice(FspFsctlDiskDeviceObject)); | ||||
|     FspDeviceExtension(FspFsctlDiskDeviceObject)->Kind = FspFsctlDeviceExtensionKind; | ||||
|     ExInitializeResourceLite(&FspDeviceExtension(FspFsctlDiskDeviceObject)->Resource); | ||||
|     FspDeviceExtension(FspFsctlNetDeviceObject)->Kind = FspFsctlDeviceExtensionKind; | ||||
|     ExInitializeResourceLite(&FspDeviceExtension(FspFsctlNetDeviceObject)->Resource); | ||||
|     FspDeviceInitExtension(FspFsctlDiskDeviceObject, FspFsctlDeviceExtensionKind); | ||||
|     FspDeviceInitExtension(FspFsctlNetDeviceObject, FspFsctlDeviceExtensionKind); | ||||
|  | ||||
|     /* setup the driver object */ | ||||
|     DriverObject->DriverUnload = FspUnload; | ||||
|   | ||||
| @@ -294,6 +294,7 @@ VOID FspDeviceDeleteList( | ||||
|     PDEVICE_OBJECT *DeviceObjects, ULONG DeviceObjectCount); | ||||
| NTSTATUS FspDeviceOwned( | ||||
|     PDRIVER_OBJECT DriverObject, PDEVICE_OBJECT DeviceObject); | ||||
| VOID FspDeviceInitExtension(PDEVICE_OBJECT DeviceObject, UINT8 Kind); | ||||
| VOID FspDeviceDeleteObject(PDEVICE_OBJECT DeviceObject); | ||||
| VOID FspDeviceDeleteObjects(PDRIVER_OBJECT DriverObject); | ||||
|  | ||||
|   | ||||
| @@ -101,9 +101,8 @@ static NTSTATUS FspFsctlCreateVolume( | ||||
|         &FsvrtDeviceObject); | ||||
|     if (NT_SUCCESS(Result)) | ||||
|     { | ||||
|         FspDeviceInitExtension(FsvrtDeviceObject, FspFsvrtDeviceExtensionKind); | ||||
|         FSP_FSVRT_DEVICE_EXTENSION *FsvrtDeviceExtension = FspFsvrtDeviceExtension(FsvrtDeviceObject); | ||||
|         FsvrtDeviceExtension->Base.Kind = FspFsvrtDeviceExtensionKind; | ||||
|         ExInitializeResourceLite(&FsvrtDeviceExtension->Base.Resource); | ||||
|         FsvrtDeviceExtension->FsctlDeviceObject = DeviceObject; | ||||
|         FsvrtDeviceExtension->VolumeParams = *Params; | ||||
|         FspIoqInitialize(&FsvrtDeviceExtension->Ioq); | ||||
| @@ -161,9 +160,8 @@ static NTSTATUS FspFsctlMountVolume( | ||||
| #pragma prefast(suppress:28175, "We are a filesystem: ok to access SectorSize") | ||||
|         FsvolDeviceObject->SectorSize = | ||||
|             FspFsvrtDeviceExtension(FsvrtDeviceObject)->VolumeParams.SectorSize; | ||||
|         FspDeviceInitExtension(FsvolDeviceObject, FspFsvolDeviceExtensionKind); | ||||
|         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; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user