mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-24 01:13:04 -05:00
sys: FspSendSetInformationIrp: add DeviceObject parameter to bypass filter devices
This commit is contained in:
parent
12463043e4
commit
a5765defd3
@ -389,7 +389,7 @@ PVOID FspAllocateIrpMustSucceed(CCHAR StackSize);
|
|||||||
BOOLEAN FspUnicodePathIsValid(PUNICODE_STRING Path, BOOLEAN AllowStreams);
|
BOOLEAN FspUnicodePathIsValid(PUNICODE_STRING Path, BOOLEAN AllowStreams);
|
||||||
VOID FspUnicodePathSuffix(PUNICODE_STRING Path, PUNICODE_STRING Remain, PUNICODE_STRING Suffix);
|
VOID FspUnicodePathSuffix(PUNICODE_STRING Path, PUNICODE_STRING Remain, PUNICODE_STRING Suffix);
|
||||||
NTSTATUS FspCreateGuid(GUID *Guid);
|
NTSTATUS FspCreateGuid(GUID *Guid);
|
||||||
NTSTATUS FspSendSetInformationIrp(PFILE_OBJECT FileObject,
|
NTSTATUS FspSendSetInformationIrp(PDEVICE_OBJECT DeviceObject, PFILE_OBJECT FileObject,
|
||||||
FILE_INFORMATION_CLASS FileInformationClass, PVOID FileInformation, ULONG Length);
|
FILE_INFORMATION_CLASS FileInformationClass, PVOID FileInformation, ULONG Length);
|
||||||
NTSTATUS FspLockUserBuffer(PVOID UserBuffer, ULONG Length,
|
NTSTATUS FspLockUserBuffer(PVOID UserBuffer, ULONG Length,
|
||||||
KPROCESSOR_MODE RequestorMode, LOCK_OPERATION Operation, PMDL *PMdl);
|
KPROCESSOR_MODE RequestorMode, LOCK_OPERATION Operation, PMDL *PMdl);
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
BOOLEAN FspUnicodePathIsValid(PUNICODE_STRING Path, BOOLEAN AllowStreams);
|
BOOLEAN FspUnicodePathIsValid(PUNICODE_STRING Path, BOOLEAN AllowStreams);
|
||||||
VOID FspUnicodePathSuffix(PUNICODE_STRING Path, PUNICODE_STRING Remain, PUNICODE_STRING Suffix);
|
VOID FspUnicodePathSuffix(PUNICODE_STRING Path, PUNICODE_STRING Remain, PUNICODE_STRING Suffix);
|
||||||
NTSTATUS FspCreateGuid(GUID *Guid);
|
NTSTATUS FspCreateGuid(GUID *Guid);
|
||||||
NTSTATUS FspSendSetInformationIrp(PFILE_OBJECT FileObject,
|
NTSTATUS FspSendSetInformationIrp(PDEVICE_OBJECT DeviceObject, PFILE_OBJECT FileObject,
|
||||||
FILE_INFORMATION_CLASS FileInformationClass, PVOID FileInformation, ULONG Length);
|
FILE_INFORMATION_CLASS FileInformationClass, PVOID FileInformation, ULONG Length);
|
||||||
static NTSTATUS FspSendSetInformationIrpCompletion(
|
static NTSTATUS FspSendSetInformationIrpCompletion(
|
||||||
PDEVICE_OBJECT DeviceObject, PIRP Irp, PVOID Context0);
|
PDEVICE_OBJECT DeviceObject, PIRP Irp, PVOID Context0);
|
||||||
@ -196,7 +196,7 @@ typedef struct
|
|||||||
KEVENT Event;
|
KEVENT Event;
|
||||||
} FSP_SEND_SET_INFORMATION_IRP_CONTEXT;
|
} FSP_SEND_SET_INFORMATION_IRP_CONTEXT;
|
||||||
|
|
||||||
NTSTATUS FspSendSetInformationIrp(PFILE_OBJECT FileObject,
|
NTSTATUS FspSendSetInformationIrp(PDEVICE_OBJECT DeviceObject, PFILE_OBJECT FileObject,
|
||||||
FILE_INFORMATION_CLASS FileInformationClass, PVOID FileInformation, ULONG Length)
|
FILE_INFORMATION_CLASS FileInformationClass, PVOID FileInformation, ULONG Length)
|
||||||
{
|
{
|
||||||
PAGED_CODE();
|
PAGED_CODE();
|
||||||
@ -206,12 +206,12 @@ NTSTATUS FspSendSetInformationIrp(PFILE_OBJECT FileObject,
|
|||||||
FileEndOfFileInformation == FileInformationClass);
|
FileEndOfFileInformation == FileInformationClass);
|
||||||
|
|
||||||
NTSTATUS Result;
|
NTSTATUS Result;
|
||||||
PDEVICE_OBJECT DeviceObject;
|
|
||||||
PIRP Irp;
|
PIRP Irp;
|
||||||
PIO_STACK_LOCATION IrpSp;
|
PIO_STACK_LOCATION IrpSp;
|
||||||
FSP_SEND_SET_INFORMATION_IRP_CONTEXT Context;
|
FSP_SEND_SET_INFORMATION_IRP_CONTEXT Context;
|
||||||
|
|
||||||
DeviceObject = IoGetRelatedDeviceObject(FileObject);
|
if (0 == DeviceObject)
|
||||||
|
DeviceObject = IoGetRelatedDeviceObject(FileObject);
|
||||||
|
|
||||||
Irp = IoAllocateIrp(DeviceObject->StackSize, FALSE);
|
Irp = IoAllocateIrp(DeviceObject->StackSize, FALSE);
|
||||||
if (0 == Irp)
|
if (0 == Irp)
|
||||||
|
@ -169,8 +169,8 @@ static NTSTATUS FspFsvolWriteCached(
|
|||||||
ASSERT(CanWait);
|
ASSERT(CanWait);
|
||||||
|
|
||||||
EndOfFileInformation.EndOfFile.QuadPart = WriteEndOffset;
|
EndOfFileInformation.EndOfFile.QuadPart = WriteEndOffset;
|
||||||
Result = FspSendSetInformationIrp(FileObject, FileEndOfFileInformation,
|
Result = FspSendSetInformationIrp(FsvolDeviceObject/* bypass filters */, FileObject,
|
||||||
&EndOfFileInformation, sizeof EndOfFileInformation);
|
FileEndOfFileInformation, &EndOfFileInformation, sizeof EndOfFileInformation);
|
||||||
if (!NT_SUCCESS(Result))
|
if (!NT_SUCCESS(Result))
|
||||||
{
|
{
|
||||||
FspFileNodeRelease(FileNode, Main);
|
FspFileNodeRelease(FileNode, Main);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user