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