Jacek Caban : ntoskrnl.exe: Implement IoBuildAsynchronousFsdRequest.

Alexandre Julliard julliard at winehq.org
Thu May 2 16:45:09 CDT 2019


Module: wine
Branch: master
Commit: a11cdd2231d8d736f79c806e00fc81d9776db9ff
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=a11cdd2231d8d736f79c806e00fc81d9776db9ff

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu May  2 13:20:52 2019 +0200

ntoskrnl.exe: Implement IoBuildAsynchronousFsdRequest.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ntoskrnl.exe/ntoskrnl.c        | 35 +++++++++++++++++++++++++++--------
 dlls/ntoskrnl.exe/ntoskrnl.exe.spec |  2 +-
 include/ddk/wdm.h                   |  1 +
 3 files changed, 29 insertions(+), 9 deletions(-)

diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
index eff90bb..63f6647 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -1366,18 +1366,17 @@ PIRP WINAPI IoBuildDeviceIoControlRequest( ULONG code, PDEVICE_OBJECT device,
     return irp;
 }
 
-
-/**********************************************************
- *           IoBuildSynchronousFsdRequest  (NTOSKRNL.EXE.@)
+/***********************************************************************
+ *           IoBuildAsynchronousFsdRequest  (NTOSKRNL.EXE.@)
  */
-PIRP WINAPI IoBuildSynchronousFsdRequest(ULONG majorfunc, PDEVICE_OBJECT device,
-                                         PVOID buffer, ULONG length, PLARGE_INTEGER startoffset,
-                                         PKEVENT event, PIO_STATUS_BLOCK iosb)
+PIRP WINAPI IoBuildAsynchronousFsdRequest(ULONG majorfunc, DEVICE_OBJECT *device,
+                                          void *buffer, ULONG length, LARGE_INTEGER *startoffset,
+                                          IO_STATUS_BLOCK *iosb)
 {
     PIRP irp;
     PIO_STACK_LOCATION irpsp;
 
-    TRACE("(%d %p %p %d %p %p %p)\n", majorfunc, device, buffer, length, startoffset, event, iosb);
+    TRACE( "(%d %p %p %d %p %p)\n", majorfunc, device, buffer, length, startoffset, iosb );
 
     if (!(irp = IoAllocateIrp( device->StackSize, FALSE ))) return NULL;
 
@@ -1414,11 +1413,31 @@ PIRP WINAPI IoBuildSynchronousFsdRequest(ULONG majorfunc, PDEVICE_OBJECT device,
     }
     irp->RequestorMode = KernelMode;
     irp->UserIosb = iosb;
-    irp->UserEvent = event;
+    irp->UserEvent = NULL;
     irp->UserBuffer = buffer;
     return irp;
 }
 
+
+
+/***********************************************************************
+ *           IoBuildSynchronousFsdRequest  (NTOSKRNL.EXE.@)
+ */
+PIRP WINAPI IoBuildSynchronousFsdRequest(ULONG majorfunc, PDEVICE_OBJECT device,
+                                         PVOID buffer, ULONG length, PLARGE_INTEGER startoffset,
+                                         PKEVENT event, PIO_STATUS_BLOCK iosb)
+{
+    IRP *irp;
+
+    TRACE("(%d %p %p %d %p %p)\n", majorfunc, device, buffer, length, startoffset, iosb);
+
+    irp = IoBuildAsynchronousFsdRequest( majorfunc, device, buffer, length, startoffset, iosb );
+    if (!irp) return NULL;
+
+    irp->UserEvent = event;
+    return irp;
+}
+
 static void build_driver_keypath( const WCHAR *name, UNICODE_STRING *keypath )
 {
     static const WCHAR driverW[] = {'\\','D','r','i','v','e','r','\\',0};
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
index a1c84ee..20999d2 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
+++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
@@ -330,7 +330,7 @@
 @ stub IoAttachDeviceByPointer
 @ stdcall IoAttachDeviceToDeviceStack(ptr ptr)
 @ stub IoAttachDeviceToDeviceStackSafe
-@ stub IoBuildAsynchronousFsdRequest
+@ stdcall IoBuildAsynchronousFsdRequest(long ptr ptr long ptr ptr)
 @ stdcall IoBuildDeviceIoControlRequest(long ptr ptr long ptr long long ptr ptr)
 @ stub IoBuildPartialMdl
 @ stdcall IoBuildSynchronousFsdRequest(long ptr ptr long ptr ptr ptr)
diff --git a/include/ddk/wdm.h b/include/ddk/wdm.h
index 25f2d49..1f6bdfa 100644
--- a/include/ddk/wdm.h
+++ b/include/ddk/wdm.h
@@ -1559,6 +1559,7 @@ PIRP      WINAPI IoAllocateIrp(CCHAR,BOOLEAN);
 PMDL      WINAPI IoAllocateMdl(PVOID,ULONG,BOOLEAN,BOOLEAN,IRP*);
 PIO_WORKITEM WINAPI IoAllocateWorkItem(PDEVICE_OBJECT);
 PDEVICE_OBJECT WINAPI IoAttachDeviceToDeviceStack(PDEVICE_OBJECT,PDEVICE_OBJECT);
+PIRP      WINAPI IoBuildAsynchronousFsdRequest(ULONG,DEVICE_OBJECT*,void*,ULONG,LARGE_INTEGER*,IO_STATUS_BLOCK*);
 PIRP      WINAPI IoBuildDeviceIoControlRequest(ULONG,DEVICE_OBJECT*,PVOID,ULONG,PVOID,ULONG,BOOLEAN,PKEVENT,IO_STATUS_BLOCK*);
 PIRP      WINAPI IoBuildSynchronousFsdRequest(ULONG,DEVICE_OBJECT*,PVOID,ULONG,PLARGE_INTEGER,PKEVENT,IO_STATUS_BLOCK*);
 NTSTATUS  WINAPI IoCallDriver(DEVICE_OBJECT*,IRP*);




More information about the wine-cvs mailing list