Module: wine Branch: master Commit: 2a92951769be921db460245b163ad280974c854b URL: https://source.winehq.org/git/wine.git/?a=commit;h=2a92951769be921db460245b1...
Author: Zebediah Figura z.figura12@gmail.com Date: Mon Aug 19 22:27:48 2019 -0500
ntoskrnl.exe: Implement IoAcquireRemoveLockEx().
Signed-off-by: Zebediah Figura z.figura12@gmail.com Signed-off-by: Alexandre Julliard julliard@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);