<div dir="ltr">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.<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Apr 9, 2019 at 2:10 PM Derek Lesho <<a href="mailto:dereklesho52@gmail.com">dereklesho52@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Signed-off-by: Derek Lesho <dereklesho52@Gmail.com><br>
---<br>
 dlls/ntoskrnl.exe/ntoskrnl.c         | 16 ++++++++++++++--<br>
 dlls/ntoskrnl.exe/ntoskrnl.exe.spec  |  2 +-<br>
 dlls/ntoskrnl.exe/ntoskrnl_private.h |  1 +<br>
 3 files changed, 16 insertions(+), 3 deletions(-)<br>
<br>
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c<br>
index 770bdfd4fa..ec05125f27 100644<br>
--- a/dlls/ntoskrnl.exe/ntoskrnl.c<br>
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c<br>
@@ -2497,6 +2497,8 @@ static void *create_thread_object( HANDLE handle )<br>
     if (!NtQueryInformationThread( handle, ThreadBasicInformation, &info, sizeof(info), NULL ))<br>
         thread->id = info.ClientId;<br>
<br>
+    thread->critical_region = FALSE;<br>
+<br>
     return thread;<br>
 }<br>
<br>
@@ -3431,7 +3433,8 @@ void WINAPI ExReleaseResourceForThreadLite( PERESOURCE resource, ERESOURCE_THREA<br>
  */<br>
 void WINAPI KeEnterCriticalRegion(void)<br>
 {<br>
-    FIXME(": stub\n");<br>
+    /* FIXME: actually disable certain APCs */<br>
+    KeGetCurrentThread()->critical_region = TRUE;<br>
 }<br>
<br>
 /***********************************************************************<br>
@@ -3439,7 +3442,8 @@ void WINAPI KeEnterCriticalRegion(void)<br>
  */<br>
 void WINAPI KeLeaveCriticalRegion(void)<br>
 {<br>
-    FIXME(": stub\n");<br>
+    /* FIXME: actually re-enable certain APCs */<br>
+    KeGetCurrentThread()->critical_region = FALSE;<br>
 }<br>
<br>
 /***********************************************************************<br>
@@ -4379,3 +4383,11 @@ ULONG WINAPI ExSetTimerResolution(ULONG time, BOOLEAN set_resolution)<br>
     FIXME("stub: %u %d\n", time, set_resolution);<br>
     return KeQueryTimeIncrement();<br>
 }<br>
+<br>
+/*********************************************************************<br>
+ *           KeAreApcsDisabled    (NTOSKRNL.@)<br>
+ */<br>
+BOOLEAN WINAPI KeAreApcsDisabled(void)<br>
+{<br>
+    return KeGetCurrentThread()->critical_region;<br>
+}<br>
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec<br>
index 601506246e..08de49e760 100644<br>
--- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec<br>
+++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec<br>
@@ -520,7 +520,7 @@<br>
 @ stdcall KeAcquireSpinLockAtDpcLevel(ptr)<br>
 @ stdcall -arch=arm,arm64,x86_64 KeAcquireSpinLockRaiseToDpc(ptr)<br>
 @ stub KeAddSystemServiceTable<br>
-@ stub KeAreApcsDisabled<br>
+@ stdcall KeAreApcsDisabled()<br>
 @ stub KeAttachProcess<br>
 @ stub KeBugCheck<br>
 @ stub KeBugCheckEx<br>
diff --git a/dlls/ntoskrnl.exe/ntoskrnl_private.h b/dlls/ntoskrnl.exe/ntoskrnl_private.h<br>
index d44ffd5d3c..67e5068c9b 100644<br>
--- a/dlls/ntoskrnl.exe/ntoskrnl_private.h<br>
+++ b/dlls/ntoskrnl.exe/ntoskrnl_private.h<br>
@@ -32,6 +32,7 @@ struct _KTHREAD<br>
 {<br>
     DISPATCHER_HEADER header;<br>
     CLIENT_ID id;<br>
+    BOOLEAN critical_region;<br>
     void *unused[0x100];<br>
 };<br>
<br>
-- <br>
2.20.1<br>
<br>
</blockquote></div>