From ce7b43fafe87ec364bb98415dac1283fe611ead0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Mon, 3 Apr 2017 01:06:26 +0200 Subject: [PATCH] ntdll: Add dummy apiset to PEB. --- dlls/ntdll/loader.c | 2 ++ include/Makefile.in | 1 + include/apiset.h | 37 +++++++++++++++++++++++++++++++++++++ include/winternl.h | 3 ++- 4 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 include/apiset.h diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c index a6cfbb675eb..1354997f2e3 100644 --- a/dlls/ntdll/loader.c +++ b/dlls/ntdll/loader.c @@ -169,6 +169,7 @@ static RTL_CRITICAL_SECTION peb_lock = { &peb_critsect_debug, -1, 0, 0, 0, 0 }; static PEB_LDR_DATA ldr = { sizeof(ldr), TRUE }; static RTL_BITMAP tls_bitmap; static RTL_BITMAP tls_expansion_bitmap; +static API_SET_NAMESPACE_ARRAY apiset_map; static WINE_MODREF *cached_modref; static WINE_MODREF *current_modref; @@ -4019,6 +4020,7 @@ static NTSTATUS process_init(void) peb->LdrData = &ldr; peb->FastPebLock = &peb_lock; + peb->ApiSetMap = &apiset_map; peb->TlsBitmap = &tls_bitmap; peb->TlsExpansionBitmap = &tls_expansion_bitmap; peb->LoaderLock = &loader_section; diff --git a/include/Makefile.in b/include/Makefile.in index 9ea8416211d..d52c0adf309 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -15,6 +15,7 @@ SOURCES = \ amsi.idl \ amstream.idl \ amvideo.idl \ + apiset.h \ appcompatapi.h \ appmgmt.h \ appmodel.h \ diff --git a/include/apiset.h b/include/apiset.h new file mode 100644 index 00000000000..6801cd5f509 --- /dev/null +++ b/include/apiset.h @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2017 Michael Müller + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ +#ifndef _API_SET_H_ +#define _API_SET_H_ + +#include + +typedef struct _API_SET_NAMESPACE_ENTRY +{ + ULONG NameOffset; + ULONG NameLength; + ULONG DataOffset; +} API_SET_NAMESPACE_ENTRY, *PAPI_SET_NAMESPACE_ENTRY; + +typedef struct _API_SET_NAMESPACE_ARRAY +{ + ULONG Version; + ULONG Count; + API_SET_NAMESPACE_ENTRY Array[1]; +} API_SET_NAMESPACE_ARRAY, *PAPI_SET_NAMESPACE_ARRAY; + +#endif diff --git a/include/winternl.h b/include/winternl.h index 89ea58c2d93..5723e0b3b7a 100644 --- a/include/winternl.h +++ b/include/winternl.h @@ -23,6 +23,7 @@ #include #include +#include #ifdef __cplusplus extern "C" { @@ -315,7 +316,7 @@ typedef struct _PEB ULONG EnvironmentUpdateCount; /* 028/050 */ PVOID KernelCallbackTable; /* 02c/058 */ ULONG Reserved[2]; /* 030/060 */ - PVOID /*PPEB_FREE_BLOCK*/ FreeList; /* 038/068 */ + PAPI_SET_NAMESPACE_ARRAY ApiSetMap; /* 038/068 */ ULONG TlsExpansionCounter; /* 03c/070 */ PRTL_BITMAP TlsBitmap; /* 040/078 */ ULONG TlsBitmapBits[2]; /* 044/080 */ -- 2.28.0