mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-24 17:32:29 -05:00
dll, sys: WIP
This commit is contained in:
parent
76af18e4d0
commit
567cf3e8eb
@ -33,22 +33,20 @@ FSP_API NTSTATUS FspFsctlCreateVolume(PWSTR DevicePath,
|
||||
GlobalDevicePath(DevicePathBuf, sizeof DevicePathBuf, DevicePath);
|
||||
|
||||
SecurityDescriptorSize = 0;
|
||||
if (!MakeSelfRelativeSD(SecurityDescriptor, 0, &SecurityDescriptorSize))
|
||||
MakeSelfRelativeSD(SecurityDescriptor, 0, &SecurityDescriptorSize);
|
||||
ParamsBuf = malloc(sizeof *ParamsBuf + SecurityDescriptorSize);
|
||||
if (0 == ParamsBuf)
|
||||
{
|
||||
ParamsBuf = malloc(sizeof *ParamsBuf + SecurityDescriptorSize);
|
||||
if (0 == ParamsBuf)
|
||||
{
|
||||
Result = STATUS_INSUFFICIENT_RESOURCES;
|
||||
goto exit;
|
||||
}
|
||||
SecurityDescriptorBuf = (PVOID)(ParamsBuf + 1);
|
||||
if (!MakeSelfRelativeSD(SecurityDescriptor, SecurityDescriptorBuf, &SecurityDescriptorSize))
|
||||
{
|
||||
Result = FspNtStatusFromWin32(GetLastError());
|
||||
goto exit;
|
||||
}
|
||||
*ParamsBuf = *Params;
|
||||
Result = STATUS_INSUFFICIENT_RESOURCES;
|
||||
goto exit;
|
||||
}
|
||||
SecurityDescriptorBuf = (PVOID)(ParamsBuf + 1);
|
||||
if (!MakeSelfRelativeSD(SecurityDescriptor, SecurityDescriptorBuf, &SecurityDescriptorSize))
|
||||
{
|
||||
Result = FspNtStatusFromWin32(GetLastError());
|
||||
goto exit;
|
||||
}
|
||||
*ParamsBuf = *Params;
|
||||
|
||||
DeviceHandle = CreateFileW(DevicePathBuf,
|
||||
0, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, 0, OPEN_EXISTING, 0, 0);
|
||||
|
@ -295,7 +295,7 @@ NTSTATUS FspCreateDeviceObjectList(
|
||||
PDRIVER_OBJECT DriverObject, PDEVICE_OBJECT **PDeviceObjects, PULONG PDeviceObjectCount);
|
||||
VOID FspDeleteDeviceObjectList(
|
||||
PDEVICE_OBJECT *DeviceObjects, ULONG DeviceObjectCount);
|
||||
NTSTATUS FspHasDeviceObject(
|
||||
NTSTATUS FspLookupDeviceObject(
|
||||
PDRIVER_OBJECT DriverObject, PDEVICE_OBJECT DeviceObject);
|
||||
|
||||
/* debug */
|
||||
|
@ -108,10 +108,10 @@ static NTSTATUS FspFsctlMountVolume(
|
||||
PAGED_CODE();
|
||||
|
||||
NTSTATUS Result;
|
||||
PDEVICE_OBJECT RealDevice = IrpSp->Parameters.MountVolume.DeviceObject;
|
||||
PDEVICE_OBJECT RealDevice = IrpSp->Parameters.MountVolume.Vpb->RealDevice;
|
||||
|
||||
/* check the passed in volume object; it must be one of our own */
|
||||
Result = FspHasDeviceObject(DeviceObject->DriverObject, RealDevice);
|
||||
Result = FspLookupDeviceObject(DeviceObject->DriverObject, RealDevice);
|
||||
if (!NT_SUCCESS(Result))
|
||||
{
|
||||
if (STATUS_NO_SUCH_DEVICE == Result)
|
||||
|
@ -83,7 +83,7 @@ VOID FspDeleteDeviceObjectList(
|
||||
ExFreePoolWithTag(DeviceObjects, FSP_TAG);
|
||||
}
|
||||
|
||||
NTSTATUS FspHasDeviceObject(
|
||||
NTSTATUS FspLookupDeviceObject(
|
||||
PDRIVER_OBJECT DriverObject, PDEVICE_OBJECT DeviceObject)
|
||||
{
|
||||
NTSTATUS Result = STATUS_NO_SUCH_DEVICE;
|
||||
|
Loading…
x
Reference in New Issue
Block a user