Sebastian Lackner : ntoskrnl.exe: Do not abuse UserEvent to store event handle.

Alexandre Julliard julliard at winehq.org
Fri Oct 14 13:46:54 CDT 2016


Module: wine
Branch: master
Commit: 02c861306e97e10ac58da74c3b390247cbd87bbf
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=02c861306e97e10ac58da74c3b390247cbd87bbf

Author: Sebastian Lackner <sebastian at fds-team.de>
Date:   Fri Oct 14 06:46:12 2016 +0200

ntoskrnl.exe: Do not abuse UserEvent to store event handle.

Signed-off-by: Sebastian Lackner <sebastian at fds-team.de>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ntoskrnl.exe/ntoskrnl.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
index 974f946..428e700 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -2883,7 +2883,8 @@ done:
 
 static NTSTATUS WINAPI internal_complete( DEVICE_OBJECT *device, IRP *irp, void *context )
 {
-    SetEvent( irp->UserEvent );
+    HANDLE event = context;
+    SetEvent( event );
     return STATUS_MORE_PROCESSING_REQUIRED;
 }
 
@@ -2891,15 +2892,11 @@ static NTSTATUS WINAPI internal_complete( DEVICE_OBJECT *device, IRP *irp, void
 static NTSTATUS send_device_irp( DEVICE_OBJECT *device, IRP *irp, ULONG_PTR *info )
 {
     NTSTATUS status;
-    IO_STACK_LOCATION *irpsp;
     HANDLE event = CreateEventA( NULL, FALSE, FALSE, NULL );
     DEVICE_OBJECT *toplevel_device;
 
-    irp->UserEvent = event;
     irp->IoStatus.u.Status = STATUS_NOT_SUPPORTED;
-    irpsp = IoGetNextIrpStackLocation( irp );
-    irpsp->CompletionRoutine = internal_complete;
-    irpsp->Control = SL_INVOKE_ON_SUCCESS | SL_INVOKE_ON_ERROR | SL_INVOKE_ON_CANCEL;
+    IoSetCompletionRoutine( irp, internal_complete, event, TRUE, TRUE, TRUE );
 
     toplevel_device = IoGetAttachedDeviceReference( device );
     status = IoCallDriver( toplevel_device, irp );




More information about the wine-cvs mailing list