17 #define MAX_STATIC_CS_DEBUG_OBJECTS 64 66 DPRINT1(
"Failed to Create Event!\n");
75 DPRINT(
"Created Event: %p\n", hNewEvent);
85 DPRINT(
"Closing already created event: %p\n", hNewEvent);
118 DPRINT(
"Waiting on Critical Section Event: %p %p\n",
222 DPRINT(
"Signaling Critical Section Event: %p, %p\n",
241 DPRINT1(
"Signaling Failed for: %p, %p, 0x%08lx\n",
349 DPRINT(
"Freeing from Buffer: %p. Entry: %Iu inside Process: %p\n",
356 else if (!DebugInfo->
Flags)
359 DPRINT(
"Freeing from Heap: %p inside Process: %p\n",
367 DPRINT(
"Assuming static: %p inside Process: %p\n",
580 DPRINT(
"Allocated Debug Data: %p inside Process: %p\n",
581 CritcalSectionDebugData,
584 if (!CritcalSectionDebugData)
596 CritcalSectionDebugData->
Flags = 0;
606 DPRINT(
"Securely Inserting into ProcessLocks: %p, %p, %p\n",
622 DPRINT(
"Inserting into ProcessLocks: %p, %p, %p\n",
702 DPRINT1(
"Releasing critical section not owned!\n");
static BOOLEAN RtlpDebugInfoFreeList[MAX_STATIC_CS_DEBUG_OBJECTS]
VOID NTAPI RtlpUnWaitCriticalSection(PRTL_CRITICAL_SECTION CriticalSection)
NTSYSAPI NTSTATUS WINAPI NtWaitForKeyedEvent(HANDLE, const void *, BOOLEAN, const LARGE_INTEGER *)
DECLSPEC_NORETURN NTSYSAPI VOID NTAPI RtlRaiseStatus(_In_ NTSTATUS Status)
ULONG NTAPI RtlIsCriticalSectionLocked(PRTL_CRITICAL_SECTION CriticalSection)
#define STATUS_INVALID_PARAMETER
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
LIST_ENTRY ProcessLocksList
NTSTATUS NTAPI NtCreateEvent(OUT PHANDLE EventHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN EVENT_TYPE EventType, IN BOOLEAN InitialState)
#define InterlockedCompareExchange
#define INVALID_HANDLE_VALUE
ULONG NTAPI RtlIsCriticalSectionLockedByThread(PRTL_CRITICAL_SECTION CriticalSection)
_At_(CriticalSection->LockSemaphore, _Post_notnull_) VOID NTAPI RtlpCreateCriticalSectionSem(PRTL_CRITICAL_SECTION CriticalSection)
BOOLEAN NTAPI RtlTryEnterCriticalSection(PRTL_CRITICAL_SECTION CriticalSection)
#define RTL_CRITSECT_TYPE
LARGE_INTEGER RtlpTimeout
NTSTATUS NTAPI RtlLeaveCriticalSection(PRTL_CRITICAL_SECTION CriticalSection)
#define InsertTailList(ListHead, Entry)
NTSYSAPI VOID NTAPI RtlRaiseException(_In_ PEXCEPTION_RECORD ExceptionRecord)
NTSTATUS NTAPI RtlDeleteCriticalSection(PRTL_CRITICAL_SECTION CriticalSection)
static BOOLEAN RtlpCritSectInitialized
PRTL_CRITICAL_SECTION_DEBUG NTAPI RtlpAllocateDebugInfo(VOID)
VOID NTAPI RtlCheckForOrphanedCriticalSections(HANDLE ThreadHandle)
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
ULONG NTAPI RtlSetCriticalSectionSpinCount(PRTL_CRITICAL_SECTION CriticalSection, ULONG SpinCount)
CRITICAL_SECTION CriticalSection
#define InterlockedCompareExchangePointer
static LIST_ENTRY RtlCriticalSectionList
#define ERROR_DBGBREAK(...)
NTSYSAPI NTSTATUS WINAPI NtReleaseKeyedEvent(HANDLE, const void *, BOOLEAN, const LARGE_INTEGER *)
#define MAX_STATIC_CS_DEBUG_OBJECTS
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
VOID NTAPI RtlpFreeDebugInfo(PRTL_CRITICAL_SECTION_DEBUG DebugInfo)
ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]
_Out_ PCLIENT_ID ClientId
NTSTATUS NTAPI NtSetEvent(IN HANDLE EventHandle, OUT PLONG PreviousState OPTIONAL)
#define NT_SUCCESS(StatCode)
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
static RTL_CRITICAL_SECTION RtlCriticalSectionLock
NTSTATUS NTAPI RtlpWaitForCriticalSection(PRTL_CRITICAL_SECTION CriticalSection)
BOOLEAN LdrpShutdownInProgress
PCRITICAL_SECTION_DEBUG DebugInfo
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
#define STATUS_UNSUCCESSFUL
NTSTATUS NTAPI RtlEnterCriticalSection(PRTL_CRITICAL_SECTION CriticalSection)
NTSTATUS NTAPI RtlInitializeCriticalSectionAndSpinCount(PRTL_CRITICAL_SECTION CriticalSection, ULONG SpinCount)
#define InterlockedDecrement
LIST_ENTRY ProcessLocksList
#define STATUS_POSSIBLE_DEADLOCK
HANDLE LdrpShutdownThreadId
#define STATUS_RESOURCE_NOT_OWNED
struct _EXCEPTION_RECORD * ExceptionRecord
VOID NTAPI RtlpNotOwnerCriticalSection(PRTL_CRITICAL_SECTION CriticalSection)
#define InterlockedIncrement
FORCEINLINE struct _TEB * NtCurrentTeb(VOID)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
VOID NTAPI RtlpInitDeferedCriticalSection(VOID)
static RTL_CRITICAL_SECTION_DEBUG RtlpStaticDebugInfo[MAX_STATIC_CS_DEBUG_OBJECTS]
NTSTATUS NTAPI RtlInitializeCriticalSection(PRTL_CRITICAL_SECTION CriticalSection)
#define RtlZeroMemory(Destination, Length)
LONG NTAPI RtlGetCriticalSectionRecursionCount(PRTL_CRITICAL_SECTION CriticalSection)
struct _RTL_CRITICAL_SECTION * CriticalSection
NTSYSAPI NTSTATUS NTAPI NtWaitForSingleObject(IN HANDLE hObject, IN BOOLEAN bAlertable, IN PLARGE_INTEGER Timeout)