- Implement RtlIsCriticalSectionLocked and RtlIsCriticalSectionLockedByThread
CORE-13436 #resolve

svn path=/trunk/; revision=75043
This commit is contained in:
Thomas Faber 2017-06-15 06:47:42 +00:00
parent 248545d219
commit 907d0d20e8
3 changed files with 31 additions and 2 deletions

View file

@ -736,8 +736,8 @@
732 stdcall RtlIpv6StringToAddressExW(wstr ptr ptr ptr)
733 stdcall RtlIpv6StringToAddressW(wstr ptr ptr)
734 stdcall RtlIsActivationContextActive(ptr)
# stdcall RtlIsCriticalSectionLocked
# stdcall RtlIsCriticalSectionLockedByThread
735 stdcall RtlIsCriticalSectionLocked(ptr)
736 stdcall RtlIsCriticalSectionLockedByThread(ptr)
737 stdcall RtlIsDosDeviceName_U(wstr)
738 stdcall RtlIsGenericTableEmpty(ptr)
739 stdcall RtlIsGenericTableEmptyAvl(ptr)

View file

@ -3025,6 +3025,20 @@ RtlInitializeCriticalSectionAndSpinCount(
_In_ ULONG SpinCount
);
NTSYSAPI
ULONG
NTAPI
RtlIsCriticalSectionLocked(
_In_ PRTL_CRITICAL_SECTION CriticalSection
);
NTSYSAPI
ULONG
NTAPI
RtlIsCriticalSectionLockedByThread(
_In_ PRTL_CRITICAL_SECTION CriticalSection
);
NTSYSAPI
NTSTATUS
NTAPI

View file

@ -786,4 +786,19 @@ RtlCheckForOrphanedCriticalSections(HANDLE ThreadHandle)
UNIMPLEMENTED;
}
ULONG
NTAPI
RtlIsCriticalSectionLocked(PRTL_CRITICAL_SECTION CriticalSection)
{
return CriticalSection->RecursionCount != 0;
}
ULONG
NTAPI
RtlIsCriticalSectionLockedByThread(PRTL_CRITICAL_SECTION CriticalSection)
{
return CriticalSection->OwningThread == NtCurrentTeb()->ClientId.UniqueThread &&
CriticalSection->RecursionCount != 0;
}
/* EOF */