- Implement RtlIsCriticalSectionLocked and RtlIsCriticalSectionLockedByThread
CORE-13436 #resolve
svn path=/trunk/; revision=75043
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)
_In_ ULONG SpinCount
);
+NTSYSAPI
+ULONG
+NTAPI
+RtlIsCriticalSectionLocked(
+ _In_ PRTL_CRITICAL_SECTION CriticalSection
+);
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlIsCriticalSectionLockedByThread(
+ _In_ PRTL_CRITICAL_SECTION CriticalSection
+);
+
NTSYSAPI
NTSTATUS
NTAPI
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 */