Module: wine Branch: master Commit: cffe06af801471584344462e6118c8bc7ab73b6f URL: http://source.winehq.org/git/wine.git/?a=commit;h=cffe06af801471584344462e61...
Author: Sebastian Lackner sebastian@fds-team.de Date: Mon Nov 10 23:48:14 2014 +0100
ntoskrnl: Initialize irp.Tail.Overlay.OriginalFileObject with stub file object.
---
dlls/ntoskrnl.exe/ntoskrnl.c | 6 ++++++ 1 file changed, 6 insertions(+)
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c index c10377a..af1626d 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/ntoskrnl.c @@ -143,6 +143,7 @@ static NTSTATUS process_ioctl( DEVICE_OBJECT *device, ULONG code, void *in_buff, IRP irp; MDL mdl; IO_STACK_LOCATION irpsp; + FILE_OBJECT file; PDRIVER_DISPATCH dispatch = device->DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL]; NTSTATUS status; LARGE_INTEGER count; @@ -153,6 +154,7 @@ static NTSTATUS process_ioctl( DEVICE_OBJECT *device, ULONG code, void *in_buff, memset( &irp, 0x55, sizeof(irp) ); memset( &irpsp, 0x66, sizeof(irpsp) ); memset( &mdl, 0x77, sizeof(mdl) ); + memset( &file, 0x88, sizeof(file) );
irp.RequestorMode = UserMode; if ((code & 3) == METHOD_BUFFERED) @@ -167,6 +169,7 @@ static NTSTATUS process_ioctl( DEVICE_OBJECT *device, ULONG code, void *in_buff, irp.UserBuffer = out_buff; irp.MdlAddress = &mdl; irp.Tail.Overlay.s.u2.CurrentStackLocation = &irpsp; + irp.Tail.Overlay.OriginalFileObject = &file; irp.UserIosb = NULL;
irpsp.MajorFunction = IRP_MJ_DEVICE_CONTROL; @@ -183,6 +186,9 @@ static NTSTATUS process_ioctl( DEVICE_OBJECT *device, ULONG code, void *in_buff, mdl.ByteCount = *out_size; mdl.ByteOffset = 0;
+ file.FsContext = NULL; + file.FsContext2 = NULL; + device->CurrentIrp = &irp;
KeQueryTickCount( &count ); /* update the global KeTickCount */