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