mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-24 17:32:29 -05:00
dll: FspFsctlCreateVolume: change signature
This commit is contained in:
parent
abdc76ea2e
commit
dce40d03b2
@ -110,7 +110,7 @@ static inline const FSP_FSCTL_TRANSACT_RSP *FspFsctlTransactConsumeResponse(
|
|||||||
#if !defined(WINFSP_SYS_INTERNAL)
|
#if !defined(WINFSP_SYS_INTERNAL)
|
||||||
FSP_API NTSTATUS FspFsctlCreateVolume(PWSTR DevicePath,
|
FSP_API NTSTATUS FspFsctlCreateVolume(PWSTR DevicePath,
|
||||||
const FSP_FSCTL_VOLUME_PARAMS *Params, PSECURITY_DESCRIPTOR SecurityDescriptor,
|
const FSP_FSCTL_VOLUME_PARAMS *Params, PSECURITY_DESCRIPTOR SecurityDescriptor,
|
||||||
PHANDLE *PVolumeHandle);
|
PWCHAR VolumePathBuf, SIZE_T VolumePathSize);
|
||||||
FSP_API NTSTATUS FspFsctlOpenVolume(PWSTR VolumePath,
|
FSP_API NTSTATUS FspFsctlOpenVolume(PWSTR VolumePath,
|
||||||
PHANDLE *PVolumeHandle);
|
PHANDLE *PVolumeHandle);
|
||||||
FSP_API NTSTATUS FspFsctlDeleteVolume(HANDLE VolumeHandle);
|
FSP_API NTSTATUS FspFsctlDeleteVolume(HANDLE VolumeHandle);
|
||||||
|
@ -18,19 +18,16 @@ static inline VOID GlobalDevicePath(PWCHAR DevicePathBuf, SIZE_T DevicePathSize,
|
|||||||
|
|
||||||
FSP_API NTSTATUS FspFsctlCreateVolume(PWSTR DevicePath,
|
FSP_API NTSTATUS FspFsctlCreateVolume(PWSTR DevicePath,
|
||||||
const FSP_FSCTL_VOLUME_PARAMS *Params, PSECURITY_DESCRIPTOR SecurityDescriptor,
|
const FSP_FSCTL_VOLUME_PARAMS *Params, PSECURITY_DESCRIPTOR SecurityDescriptor,
|
||||||
PHANDLE *PVolumeHandle)
|
PWCHAR VolumePathBuf, SIZE_T VolumePathSize)
|
||||||
{
|
{
|
||||||
NTSTATUS Result = STATUS_SUCCESS;
|
NTSTATUS Result = STATUS_SUCCESS;
|
||||||
WCHAR DevicePathBuf[(sizeof GLOBALROOT + FSP_FSCTL_CREATE_BUFFER_SIZE) / sizeof(WCHAR)];
|
WCHAR DevicePathBuf[MAX_PATH];
|
||||||
WCHAR VolumePathBuf[FSP_FSCTL_CREATE_BUFFER_SIZE / sizeof(WCHAR)];
|
|
||||||
FSP_FSCTL_VOLUME_PARAMS *ParamsBuf;
|
FSP_FSCTL_VOLUME_PARAMS *ParamsBuf;
|
||||||
PSECURITY_DESCRIPTOR SecurityDescriptorBuf = 0;
|
PSECURITY_DESCRIPTOR SecurityDescriptorBuf = 0;
|
||||||
DWORD SecurityDescriptorSize, Bytes;
|
DWORD SecurityDescriptorSize, Bytes;
|
||||||
HANDLE DeviceHandle = INVALID_HANDLE_VALUE;
|
HANDLE DeviceHandle = INVALID_HANDLE_VALUE;
|
||||||
|
|
||||||
*PVolumeHandle = 0;
|
VolumePathBuf[0] = L'\0';
|
||||||
|
|
||||||
GlobalDevicePath(DevicePathBuf, sizeof DevicePathBuf, DevicePath);
|
|
||||||
|
|
||||||
SecurityDescriptorSize = GetSecurityDescriptorLength(SecurityDescriptor);
|
SecurityDescriptorSize = GetSecurityDescriptorLength(SecurityDescriptor);
|
||||||
ParamsBuf = malloc(sizeof *ParamsBuf + SecurityDescriptorSize);
|
ParamsBuf = malloc(sizeof *ParamsBuf + SecurityDescriptorSize);
|
||||||
@ -47,6 +44,7 @@ FSP_API NTSTATUS FspFsctlCreateVolume(PWSTR DevicePath,
|
|||||||
}
|
}
|
||||||
*ParamsBuf = *Params;
|
*ParamsBuf = *Params;
|
||||||
|
|
||||||
|
GlobalDevicePath(DevicePathBuf, sizeof DevicePathBuf, DevicePath);
|
||||||
DeviceHandle = CreateFileW(DevicePathBuf,
|
DeviceHandle = CreateFileW(DevicePathBuf,
|
||||||
0, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0);
|
0, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0);
|
||||||
if (INVALID_HANDLE_VALUE == DeviceHandle)
|
if (INVALID_HANDLE_VALUE == DeviceHandle)
|
||||||
@ -56,15 +54,13 @@ FSP_API NTSTATUS FspFsctlCreateVolume(PWSTR DevicePath,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!DeviceIoControl(DeviceHandle, FSP_FSCTL_CREATE,
|
if (!DeviceIoControl(DeviceHandle, FSP_FSCTL_CREATE,
|
||||||
ParamsBuf, sizeof *ParamsBuf + SecurityDescriptorSize, VolumePathBuf, sizeof VolumePathBuf,
|
ParamsBuf, sizeof *ParamsBuf + SecurityDescriptorSize, VolumePathBuf, (DWORD)VolumePathSize,
|
||||||
&Bytes, 0))
|
&Bytes, 0))
|
||||||
{
|
{
|
||||||
Result = FspNtStatusFromWin32(GetLastError());
|
Result = FspNtStatusFromWin32(GetLastError());
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
Result = FspFsctlOpenVolume(VolumePathBuf, PVolumeHandle);
|
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
if (INVALID_HANDLE_VALUE != DeviceHandle)
|
if (INVALID_HANDLE_VALUE != DeviceHandle)
|
||||||
CloseHandle(DeviceHandle);
|
CloseHandle(DeviceHandle);
|
||||||
@ -76,7 +72,7 @@ FSP_API NTSTATUS FspFsctlOpenVolume(PWSTR VolumePath,
|
|||||||
PHANDLE *PVolumeHandle)
|
PHANDLE *PVolumeHandle)
|
||||||
{
|
{
|
||||||
NTSTATUS Result = STATUS_SUCCESS;
|
NTSTATUS Result = STATUS_SUCCESS;
|
||||||
WCHAR DevicePathBuf[(sizeof GLOBALROOT + FSP_FSCTL_CREATE_BUFFER_SIZE) / sizeof(WCHAR)];
|
WCHAR DevicePathBuf[MAX_PATH];
|
||||||
HANDLE VolumeHandle;
|
HANDLE VolumeHandle;
|
||||||
|
|
||||||
*PVolumeHandle = 0;
|
*PVolumeHandle = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user