Zebediah Figura : ntoskrnl.exe: Implement IoAcquireRemoveLockEx().

Alexandre Julliard julliard at winehq.org
Tue Aug 20 15:35:22 CDT 2019


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

Author: Zebediah Figura <z.figura12 at gmail.com>
Date:   Mon Aug 19 22:27:48 2019 -0500

ntoskrnl.exe: Implement IoAcquireRemoveLockEx().

Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ntoskrnl.exe/ntoskrnl.c | 13 -------------
 dlls/ntoskrnl.exe/sync.c     | 15 +++++++++++++++
 include/ddk/wdm.h            |  1 +
 3 files changed, 16 insertions(+), 13 deletions(-)

diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
index 20cee6c..6be5990 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -3051,19 +3051,6 @@ BOOLEAN WINAPI IoSetThreadHardErrorMode(BOOLEAN EnableHardErrors)
 }
 
 /*****************************************************
- *           IoAcquireRemoveLockEx  (NTOSKRNL.EXE.@)
- */
-
-NTSTATUS WINAPI IoAcquireRemoveLockEx(PIO_REMOVE_LOCK lock, PVOID tag,
-                                      LPCSTR file, ULONG line, ULONG lock_size)
-{
-    FIXME("(%p, %p, %s, %u, %u): stub\n", lock, tag, debugstr_a(file), line, lock_size);
-
-    return STATUS_NOT_IMPLEMENTED;
-}
-
-
-/*****************************************************
  *           DllMain
  */
 BOOL WINAPI DllMain( HINSTANCE inst, DWORD reason, LPVOID reserved )
diff --git a/dlls/ntoskrnl.exe/sync.c b/dlls/ntoskrnl.exe/sync.c
index 0b2ca6f..f54fe2a 100644
--- a/dlls/ntoskrnl.exe/sync.c
+++ b/dlls/ntoskrnl.exe/sync.c
@@ -1209,3 +1209,18 @@ void WINAPI IoInitializeRemoveLockEx( IO_REMOVE_LOCK *lock, ULONG tag,
     lock->Common.Removed = FALSE;
     lock->Common.IoCount = 0;
 }
+
+/***********************************************************************
+ *           IoAcquireRemoveLockEx   (NTOSKRNL.EXE.@)
+ */
+NTSTATUS WINAPI IoAcquireRemoveLockEx( IO_REMOVE_LOCK *lock, void *tag,
+        const char *file, ULONG line, ULONG size )
+{
+    TRACE("lock %p, tag %p, file %s, line %u, size %u.\n", lock, tag, debugstr_a(file), line, size);
+
+    if (lock->Common.Removed)
+        return STATUS_DELETE_PENDING;
+
+    InterlockedIncrement( &lock->Common.IoCount );
+    return STATUS_SUCCESS;
+}
diff --git a/include/ddk/wdm.h b/include/ddk/wdm.h
index 864c0c9..da200c5 100644
--- a/include/ddk/wdm.h
+++ b/include/ddk/wdm.h
@@ -1565,6 +1565,7 @@ void      WINAPI ExReleaseResourceForThreadLite(ERESOURCE*,ERESOURCE_THREAD);
 ULONG     WINAPI ExSetTimerResolution(ULONG,BOOLEAN);
 
 void      WINAPI IoAcquireCancelSpinLock(KIRQL*);
+NTSTATUS  WINAPI IoAcquireRemoveLockEx(IO_REMOVE_LOCK*,void*,const char*,ULONG, ULONG);
 NTSTATUS  WINAPI IoAllocateDriverObjectExtension(PDRIVER_OBJECT,PVOID,ULONG,PVOID*);
 PVOID     WINAPI IoAllocateErrorLogEntry(PVOID,UCHAR);
 PIRP      WINAPI IoAllocateIrp(CCHAR,BOOLEAN);




More information about the wine-cvs mailing list