Module: wine Branch: master Commit: 0a8c36b8e3ed66a3cbdbb534a5fc0256b50751fa URL: https://source.winehq.org/git/wine.git/?a=commit;h=0a8c36b8e3ed66a3cbdbb534a...
Author: Jacek Caban jacek@codeweavers.com Date: Thu May 2 13:21:39 2019 +0200
ntoskrnl.exe: Set IRP DeviceObject in IoCallDriver.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/ntoskrnl.exe/ntoskrnl.c | 7 +++---- dlls/ntoskrnl.exe/tests/driver.c | 2 -- 2 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c index 6ac2a3e..c4c3bab 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/ntoskrnl.c @@ -622,7 +622,6 @@ static NTSTATUS dispatch_create( const irp_params_t *params, void *in_buff, ULON
irpsp = IoGetNextIrpStackLocation( irp ); irpsp->MajorFunction = IRP_MJ_CREATE; - irpsp->DeviceObject = device; irpsp->FileObject = file; irpsp->Parameters.Create.SecurityContext = NULL; /* FIXME */ irpsp->Parameters.Create.Options = params->create.options; @@ -667,7 +666,6 @@ static NTSTATUS dispatch_close( const irp_params_t *params, void *in_buff, ULONG
irpsp = IoGetNextIrpStackLocation( irp ); irpsp->MajorFunction = IRP_MJ_CLOSE; - irpsp->DeviceObject = device; irpsp->FileObject = file;
irp->Tail.Overlay.OriginalFileObject = file; @@ -1332,7 +1330,7 @@ PIRP WINAPI IoBuildDeviceIoControlRequest( ULONG code, PDEVICE_OBJECT device, irpsp->Parameters.DeviceIoControl.IoControlCode = code; irpsp->Parameters.DeviceIoControl.InputBufferLength = in_len; irpsp->Parameters.DeviceIoControl.OutputBufferLength = out_len; - irpsp->DeviceObject = device; + irpsp->DeviceObject = NULL; irpsp->CompletionRoutine = NULL;
switch (code & 3) @@ -1382,7 +1380,7 @@ PIRP WINAPI IoBuildAsynchronousFsdRequest(ULONG majorfunc, DEVICE_OBJECT *device
irpsp = IoGetNextIrpStackLocation( irp ); irpsp->MajorFunction = majorfunc; - irpsp->DeviceObject = device; + irpsp->DeviceObject = NULL; irpsp->CompletionRoutine = NULL;
irp->AssociatedIrp.SystemBuffer = buffer; @@ -1966,6 +1964,7 @@ NTSTATUS WINAPI IoCallDriver( DEVICE_OBJECT *device, IRP *irp )
--irp->CurrentLocation; irpsp = --irp->Tail.Overlay.s.u2.CurrentStackLocation; + irpsp->DeviceObject = device; dispatch = device->DriverObject->MajorFunction[irpsp->MajorFunction];
TRACE_(relay)( "\1Call driver dispatch %p (device=%p,irp=%p)\n", dispatch, device, irp ); diff --git a/dlls/ntoskrnl.exe/tests/driver.c b/dlls/ntoskrnl.exe/tests/driver.c index 6d14a22..9ad2bb9 100644 --- a/dlls/ntoskrnl.exe/tests/driver.c +++ b/dlls/ntoskrnl.exe/tests/driver.c @@ -712,7 +712,6 @@ static void test_call_driver(DEVICE_OBJECT *device)
irpsp = IoGetNextIrpStackLocation(irp); ok(irpsp->MajorFunction == IRP_MJ_FLUSH_BUFFERS, "MajorFunction = %u\n", irpsp->MajorFunction); - todo_wine ok(!irpsp->DeviceObject, "DeviceObject = %u\n", irpsp->DeviceObject); ok(!irpsp->FileObject, "FileObject = %u\n", irpsp->FileObject); ok(!irpsp->CompletionRoutine, "CompletionRouptine = %p\n", irpsp->CompletionRoutine); @@ -735,7 +734,6 @@ static void test_call_driver(DEVICE_OBJECT *device)
irpsp = IoGetNextIrpStackLocation(irp); ok(irpsp->MajorFunction == IRP_MJ_FLUSH_BUFFERS, "MajorFunction = %u\n", irpsp->MajorFunction); - todo_wine ok(!irpsp->DeviceObject, "DeviceObject = %u\n", irpsp->DeviceObject); ok(!irpsp->FileObject, "FileObject = %u\n", irpsp->FileObject); ok(!irpsp->CompletionRoutine, "CompletionRouptine = %p\n", irpsp->CompletionRoutine);