mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 10:04:49 +00:00
d8cc88ca80
Partially revert some aspects of commits5696e4ba4
andbf40c7a31
. (See PR #4340.) In order for Win2k3 kernel32.dll to operate with our basesrv.dll (or our kernel32.dll to operate with Win2k3 basesrv.dll), we need in particular to have the CreateNlsSecurityDescriptor() helper to exactly take the expected parameters. Namely, a pointer to a **user-allocated** SECURITY_DESCRIPTOR buffer, its size (and an access mask). The function expects its caller to provide all this, and the caller expects the function to initialize the security descriptor buffer. Note that the function does *NOT* allocate a new descriptor buffer to be returned! Indeed, with the way it currently is in master, using Win2k3 kernel32 with our basesrv is now failing with the errors: ``` NLSAPI: Could NOT Create ACL - c0000023. (subsystems/win/basesrv/nls.c:279) NLS: CreateNlsSecurityDescriptor FAILED!: c0000023 NLSAPI: Could NOT initialize Server - c0000023. (dll/ntdll/ldr/ldrinit.c:867) LDR: DLL_PROCESS_ATTACH for dll "kernel32.dll" (InitRoutine: 77E40D95) failed ``` (and, if we ever attempted to increase the so-claimed "dummy parameter" descriptor size in the basesrv call, we would end up with its stack corrupted and a crash). Conversely, using our kernel32 with Win2k3 basesrv, would end up with basesrv receiving a wrongly-initialized descriptor that would not work (the buffer not being initialized with the contents of a descriptor, but instead receiving some address to a descriptor allocated somewhere else).
73 lines
2.1 KiB
C
73 lines
2.1 KiB
C
/*
|
|
* COPYRIGHT: See COPYING in the top level directory
|
|
* PROJECT: ReactOS Base API Server DLL
|
|
* FILE: subsystems/win/basesrv/basesrv.h
|
|
* PURPOSE: Main header - Definitions
|
|
* PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
|
|
*/
|
|
|
|
#ifndef __BASESRV_H__
|
|
#define __BASESRV_H__
|
|
|
|
/* PSDK/NDK Headers */
|
|
#include <stdio.h>
|
|
#define WIN32_NO_STATUS
|
|
#define _INC_WINDOWS
|
|
#define COM_NO_WINDOWS_H
|
|
#include <windef.h>
|
|
#include <winbase.h>
|
|
#include <dbt.h>
|
|
#define NTOS_MODE_USER
|
|
#include <ndk/rtlfuncs.h>
|
|
#include <ndk/obfuncs.h>
|
|
#include <ndk/psfuncs.h>
|
|
#include <ndk/exfuncs.h>
|
|
#include <ndk/umfuncs.h>
|
|
#include <ndk/cmfuncs.h>
|
|
#include <ndk/sefuncs.h>
|
|
|
|
/* PSEH for SEH Support */
|
|
#include <pseh/pseh2.h>
|
|
|
|
/* CSRSS Header */
|
|
#include <csr/csrsrv.h>
|
|
|
|
/* BASE Headers */
|
|
#include <win/basemsg.h>
|
|
#include <win/base.h>
|
|
|
|
typedef struct _BASESRV_KERNEL_IMPORTS
|
|
{
|
|
PCHAR FunctionName;
|
|
PVOID* FunctionPointer;
|
|
} BASESRV_KERNEL_IMPORTS, *PBASESRV_KERNEL_IMPORTS;
|
|
|
|
/* FIXME: BASENLS.H */
|
|
typedef NTSTATUS (WINAPI *POPEN_DATA_FILE)(HANDLE hFile,
|
|
PWCHAR FileName);
|
|
|
|
typedef BOOL (WINAPI *PGET_CP_FILE_NAME_FROM_REGISTRY)(UINT CodePage,
|
|
LPWSTR FileName,
|
|
ULONG FileNameSize);
|
|
|
|
typedef BOOL (WINAPI *PGET_NLS_SECTION_NAME)(UINT CodePage,
|
|
UINT Base,
|
|
ULONG Unknown,
|
|
LPWSTR BaseName,
|
|
LPWSTR Result,
|
|
ULONG ResultSize);
|
|
|
|
typedef BOOL (WINAPI *PVALIDATE_LOCALE)(IN ULONG LocaleId);
|
|
|
|
/* Globals */
|
|
extern HANDLE BaseSrvHeap;
|
|
extern HANDLE BaseSrvSharedHeap;
|
|
extern PBASE_STATIC_SERVER_DATA BaseStaticServerData;
|
|
extern ULONG SessionId;
|
|
extern ULONG ProtectionMode;
|
|
extern RTL_CRITICAL_SECTION BaseSrvDDDBSMCritSec;
|
|
|
|
#define SM_REG_KEY \
|
|
L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\Session Manager"
|
|
|
|
#endif /* __BASESRV_H__ */
|