[PATCH 02/10] ntoskrnl.exe: Implement KeAreApcsDisabled using critical region functions.

Derek Lesho dereklesho52 at gmail.com
Tue Apr 9 13:29:01 CDT 2019


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.

On Tue, Apr 9, 2019 at 2:10 PM Derek Lesho <dereklesho52 at gmail.com> wrote:

> Signed-off-by: Derek Lesho <dereklesho52 at 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20190409/cda38cba/attachment.html>


More information about the wine-devel mailing list