This patch fails because it looks like the Jacek removed the unused field in the patches he submitted yesterday.������ If I'm not mistaken, I don't think he's changed anything else.
Signed-off-by: Derek Lesho <dereklesho52@Gmail.com>
---
������dlls/ntoskrnl.exe/ntoskrnl.c������ ������ ������ ������ ������| 16 ++++++++++++++--
������dlls/ntoskrnl.exe/ntoskrnl.exe.spec������ |������ 2 +-
������dlls/ntoskrnl.exe/ntoskrnl_private.h |������ 1 +
������3 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
index 770bdfd4fa..ec05125f27 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -2497,6 +2497,8 @@ static void *create_thread_object( HANDLE handle )
������ ������ ������if (!NtQueryInformationThread( handle, ThreadBasicInformation, &info, sizeof(info), NULL ))
������ ������ ������ ������ ������thread->id = info.ClientId;
+������ ������ thread->critical_region = FALSE;
+
������ ������ ������return thread;
������}
@@ -3431,7 +3433,8 @@ void WINAPI ExReleaseResourceForThreadLite( PERESOURCE resource, ERESOURCE_THREA
������ */
������void WINAPI KeEnterCriticalRegion(void)
������{
-������ ������ FIXME(": stub\n");
+������ ������ /* FIXME: actually disable certain APCs */
+������ ������ KeGetCurrentThread()->critical_region = TRUE;
������}
������/***********************************************************************
@@ -3439,7 +3442,8 @@ void WINAPI KeEnterCriticalRegion(void)
������ */
������void WINAPI KeLeaveCriticalRegion(void)
������{
-������ ������ FIXME(": stub\n");
+������ ������ /* FIXME: actually re-enable certain APCs */
+������ ������ KeGetCurrentThread()->critical_region = FALSE;
������}
������/***********************************************************************
@@ -4379,3 +4383,11 @@ ULONG WINAPI ExSetTimerResolution(ULONG time, BOOLEAN set_resolution)
������ ������ ������FIXME("stub: %u %d\n", time, set_resolution);
������ ������ ������return KeQueryTimeIncrement();
������}
+
+/*********************************************************************
+ *������ ������ ������ ������ ������ ������KeAreApcsDisabled������ ������ (NTOSKRNL.@)
+ */
+BOOLEAN WINAPI KeAreApcsDisabled(void)
+{
+������ ������ return KeGetCurrentThread()->critical_region;
+}
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
index 601506246e..08de49e760 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
+++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
@@ -520,7 +520,7 @@
������@ stdcall KeAcquireSpinLockAtDpcLevel(ptr)
������@ stdcall -arch=arm,arm64,x86_64 KeAcquireSpinLockRaiseToDpc(ptr)
������@ stub KeAddSystemServiceTable
-@ stub KeAreApcsDisabled
+@ stdcall KeAreApcsDisabled()
������@ stub KeAttachProcess
������@ stub KeBugCheck
������@ stub KeBugCheckEx
diff --git a/dlls/ntoskrnl.exe/ntoskrnl_private.h b/dlls/ntoskrnl.exe/ntoskrnl_private.h
index d44ffd5d3c..67e5068c9b 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl_private.h
+++ b/dlls/ntoskrnl.exe/ntoskrnl_private.h
@@ -32,6 +32,7 @@ struct _KTHREAD
������{
������ ������ ������DISPATCHER_HEADER header;
������ ������ ������CLIENT_ID id;
+������ ������ BOOLEAN critical_region;
������ ������ ������void *unused[0x100];
������};
--
2.20.1