[PATCH v2 2/5] ntoskrnl.exe: Implement IoAcquireRemoveLockEx().
Zebediah Figura
z.figura12 at gmail.com
Mon Aug 19 22:27:48 CDT 2019
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
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 09fb6605bc..6ce262c96c 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -3178,19 +3178,6 @@ BOOLEAN WINAPI IoSetThreadHardErrorMode(BOOLEAN EnableHardErrors)
return FALSE;
}
-/*****************************************************
- * 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
*/
diff --git a/dlls/ntoskrnl.exe/sync.c b/dlls/ntoskrnl.exe/sync.c
index 0b2ca6f6b7..f54fe2a663 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 b7a05034b8..73ead8adc6 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);
--
2.22.0
More information about the wine-devel
mailing list