mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-24 01:13:04 -05:00
sys: FspMainFileOpen
This commit is contained in:
parent
7e1861a9f5
commit
352450d538
@ -238,10 +238,6 @@ static NTSTATUS FspFsvolCreateNoLock(
|
|||||||
|
|
||||||
FileName.Length = (USHORT)
|
FileName.Length = (USHORT)
|
||||||
((PUINT8)StreamPart.Buffer - (PUINT8)FileName.Buffer + StreamPart.Length);
|
((PUINT8)StreamPart.Buffer - (PUINT8)FileName.Buffer + StreamPart.Length);
|
||||||
|
|
||||||
MainFileName.Length = MainFileName.MaximumLength = (USHORT)
|
|
||||||
((PUINT8)StreamPart.Buffer - (PUINT8)FileName.Buffer - sizeof(WCHAR));
|
|
||||||
MainFileName.Buffer = FileName.Buffer;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* is this a relative or absolute open? */
|
/* is this a relative or absolute open? */
|
||||||
@ -381,7 +377,13 @@ static NTSTATUS FspFsvolCreateNoLock(
|
|||||||
goto main_stream_exit;
|
goto main_stream_exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
Result = FspMainFileOpen(FsvolDeviceObject,
|
MainFileName.Length = MainFileName.MaximumLength = (USHORT)
|
||||||
|
((PUINT8)StreamPart.Buffer - (PUINT8)FileName.Buffer - sizeof(WCHAR));
|
||||||
|
MainFileName.Buffer = FileName.Buffer;
|
||||||
|
|
||||||
|
Result = FspMainFileOpen(
|
||||||
|
FsvolDeviceObject,
|
||||||
|
FileObject->DeviceObject, /* use as device hint when using MUP */
|
||||||
&MainFileName, CaseSensitive,
|
&MainFileName, CaseSensitive,
|
||||||
SecurityDescriptor,
|
SecurityDescriptor,
|
||||||
FileAttributes,
|
FileAttributes,
|
||||||
@ -406,9 +408,6 @@ static NTSTATUS FspFsvolCreateNoLock(
|
|||||||
/* remember the main file node */
|
/* remember the main file node */
|
||||||
FileNode->MainFileNode = FileDesc->MainFileObject->FsContext;
|
FileNode->MainFileNode = FileDesc->MainFileObject->FsContext;
|
||||||
|
|
||||||
ASSERT(RtlEqualUnicodeString(&MainFileName, &FileNode->MainFileNode->FileName,
|
|
||||||
!CaseSensitive));
|
|
||||||
|
|
||||||
Result = STATUS_SUCCESS;
|
Result = STATUS_SUCCESS;
|
||||||
|
|
||||||
main_stream_exit:
|
main_stream_exit:
|
||||||
|
@ -1025,6 +1025,7 @@ NTSTATUS FspFileDescResetDirectoryPattern(FSP_FILE_DESC *FileDesc,
|
|||||||
PUNICODE_STRING FileName, BOOLEAN Reset);
|
PUNICODE_STRING FileName, BOOLEAN Reset);
|
||||||
NTSTATUS FspMainFileOpen(
|
NTSTATUS FspMainFileOpen(
|
||||||
PDEVICE_OBJECT FsvolDeviceObject,
|
PDEVICE_OBJECT FsvolDeviceObject,
|
||||||
|
PDEVICE_OBJECT DeviceObjectHint,
|
||||||
PUNICODE_STRING MainFileName, BOOLEAN CaseSensitive,
|
PUNICODE_STRING MainFileName, BOOLEAN CaseSensitive,
|
||||||
PSECURITY_DESCRIPTOR SecurityDescriptor,
|
PSECURITY_DESCRIPTOR SecurityDescriptor,
|
||||||
ULONG FileAttributes,
|
ULONG FileAttributes,
|
||||||
|
@ -72,6 +72,7 @@ NTSTATUS FspFileDescResetDirectoryPattern(FSP_FILE_DESC *FileDesc,
|
|||||||
PUNICODE_STRING FileName, BOOLEAN Reset);
|
PUNICODE_STRING FileName, BOOLEAN Reset);
|
||||||
NTSTATUS FspMainFileOpen(
|
NTSTATUS FspMainFileOpen(
|
||||||
PDEVICE_OBJECT FsvolDeviceObject,
|
PDEVICE_OBJECT FsvolDeviceObject,
|
||||||
|
PDEVICE_OBJECT DeviceObjectHint,
|
||||||
PUNICODE_STRING MainFileName, BOOLEAN CaseSensitive,
|
PUNICODE_STRING MainFileName, BOOLEAN CaseSensitive,
|
||||||
PSECURITY_DESCRIPTOR SecurityDescriptor,
|
PSECURITY_DESCRIPTOR SecurityDescriptor,
|
||||||
ULONG FileAttributes,
|
ULONG FileAttributes,
|
||||||
@ -1253,6 +1254,7 @@ NTSTATUS FspFileDescResetDirectoryPattern(FSP_FILE_DESC *FileDesc,
|
|||||||
|
|
||||||
NTSTATUS FspMainFileOpen(
|
NTSTATUS FspMainFileOpen(
|
||||||
PDEVICE_OBJECT FsvolDeviceObject,
|
PDEVICE_OBJECT FsvolDeviceObject,
|
||||||
|
PDEVICE_OBJECT DeviceObjectHint,
|
||||||
PUNICODE_STRING MainFileName, BOOLEAN CaseSensitive,
|
PUNICODE_STRING MainFileName, BOOLEAN CaseSensitive,
|
||||||
PSECURITY_DESCRIPTOR SecurityDescriptor,
|
PSECURITY_DESCRIPTOR SecurityDescriptor,
|
||||||
ULONG FileAttributes,
|
ULONG FileAttributes,
|
||||||
@ -1297,7 +1299,6 @@ NTSTATUS FspMainFileOpen(
|
|||||||
FullFileName.Length = 0;
|
FullFileName.Length = 0;
|
||||||
FullFileName.MaximumLength =
|
FullFileName.MaximumLength =
|
||||||
FsvolDeviceExtension->VolumeName.Length +
|
FsvolDeviceExtension->VolumeName.Length +
|
||||||
FsvolDeviceExtension->VolumePrefix.Length +
|
|
||||||
MainFileName->Length;
|
MainFileName->Length;
|
||||||
FullFileName.Buffer = FspAlloc(FullFileName.MaximumLength);
|
FullFileName.Buffer = FspAlloc(FullFileName.MaximumLength);
|
||||||
if (0 == FullFileName.Buffer)
|
if (0 == FullFileName.Buffer)
|
||||||
@ -1307,7 +1308,6 @@ NTSTATUS FspMainFileOpen(
|
|||||||
}
|
}
|
||||||
|
|
||||||
RtlAppendUnicodeStringToString(&FullFileName, &FsvolDeviceExtension->VolumeName);
|
RtlAppendUnicodeStringToString(&FullFileName, &FsvolDeviceExtension->VolumeName);
|
||||||
RtlAppendUnicodeStringToString(&FullFileName, &FsvolDeviceExtension->VolumePrefix);
|
|
||||||
RtlAppendUnicodeStringToString(&FullFileName, MainFileName);
|
RtlAppendUnicodeStringToString(&FullFileName, MainFileName);
|
||||||
|
|
||||||
InitializeObjectAttributes(
|
InitializeObjectAttributes(
|
||||||
@ -1321,7 +1321,8 @@ NTSTATUS FspMainFileOpen(
|
|||||||
DriverCreateContext.Size =
|
DriverCreateContext.Size =
|
||||||
FIELD_OFFSET(IO_DRIVER_CREATE_CONTEXT, TxnParameters) +
|
FIELD_OFFSET(IO_DRIVER_CREATE_CONTEXT, TxnParameters) +
|
||||||
sizeof(((PIO_DRIVER_CREATE_CONTEXT)0)->TxnParameters);
|
sizeof(((PIO_DRIVER_CREATE_CONTEXT)0)->TxnParameters);
|
||||||
DriverCreateContext.DeviceObjectHint = FsvolDeviceObject;
|
DriverCreateContext.DeviceObjectHint = 0 != FsvolDeviceExtension->FsvrtDeviceObject ?
|
||||||
|
FsvolDeviceObject : DeviceObjectHint;
|
||||||
|
|
||||||
IoStatus.Status = FsRtlAllocateExtraCreateParameterList(0,
|
IoStatus.Status = FsRtlAllocateExtraCreateParameterList(0,
|
||||||
&DriverCreateContext.ExtraCreateParameter);
|
&DriverCreateContext.ExtraCreateParameter);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user