ReactOS  0.4.15-dev-5618-g8866b9d
nls.c File Reference
#include "basesrv.h"
#include <ndk/mmfuncs.h>
#include <debug.h>
Include dependency graph for nls.c:

Go to the source code of this file.

Macros

#define NDEBUG
 

Functions

 NTSTATUS (WINAPI *pCreateNlsSecurityDescriptor)(_Out_ PSECURITY_DESCRIPTOR SecurityDescriptor
 
NTSTATUS NTAPI BaseSrvDelayLoadKernel32 (VOID)
 
VOID NTAPI BaseSrvNLSInit (IN PBASE_STATIC_SERVER_DATA StaticData)
 
NTSTATUS NTAPI BaseSrvNlsConnect (IN PCSR_PROCESS CsrProcess, IN OUT PVOID ConnectionInfo, IN OUT PULONG ConnectionInfoLength)
 
 CSR_API (BaseSrvNlsSetUserInfo)
 
 CSR_API (BaseSrvNlsSetMultipleUserInfo)
 
 CSR_API (BaseSrvNlsCreateSection)
 
 CSR_API (BaseSrvNlsUpdateCacheCount)
 
 CSR_API (BaseSrvNlsGetUserInfo)
 
NTSTATUS NTAPI BaseSrvNlsLogon (DWORD Unknown)
 
NTSTATUS NTAPI BaseSrvNlsUpdateRegistryCache (DWORD Unknown1, DWORD Unknown2)
 

Variables

RTL_CRITICAL_SECTION NlsCacheCriticalSection
 
PNLS_USER_INFO pNlsRegUserInfo
 
BOOLEAN BaseSrvKernel32DelayLoadComplete
 
HANDLE BaseSrvKernel32DllHandle
 
UNICODE_STRING BaseSrvKernel32DllPath
 
POPEN_DATA_FILE pOpenDataFile
 
PVOID pGetDefaultSortkeySize
 
PVOID pGetLinguistLangSize
 
PVOID pNlsConvertIntegerToString
 
PVOID pValidateLCType
 
PVALIDATE_LOCALE pValidateLocale
 
PGET_NLS_SECTION_NAME pGetNlsSectionName
 
PVOID pGetUserDefaultLangID
 
PGET_CP_FILE_NAME_FROM_REGISTRY pGetCPFileNameFromRegistry
 
_In_ SIZE_T DescriptorSize
 
_In_ SIZE_T _In_ ULONG AccessMask
 
BASESRV_KERNEL_IMPORTS BaseSrvKernel32Imports [10]
 

Macro Definition Documentation

◆ NDEBUG

#define NDEBUG

Definition at line 15 of file nls.c.

Function Documentation

◆ BaseSrvDelayLoadKernel32()

NTSTATUS NTAPI BaseSrvDelayLoadKernel32 ( VOID  )

Definition at line 61 of file nls.c.

62 {
64  ULONG i;
65  ANSI_STRING ProcedureName;
66 
67  /* Only do this once */
69 
70  /* Loop all imports */
71  for (i = 0; i < RTL_NUMBER_OF(BaseSrvKernel32Imports); i++)
72  {
73  /* Only look them up once */
74  if (!*BaseSrvKernel32Imports[i].FunctionPointer)
75  {
76  /* If we haven't loaded the DLL yet, do it now */
78  {
79  Status = LdrLoadDll(0,
80  0,
83  if (!NT_SUCCESS(Status))
84  {
85  DPRINT1("Failed to load %wZ\n", &BaseSrvKernel32DllPath);
86  return Status;
87  }
88  }
89 
90  /* Get the address of the routine being looked up*/
93  &ProcedureName,
94  0,
95  BaseSrvKernel32Imports[i].FunctionPointer);
96  DPRINT1("NLS: Found %Z at 0x%p\n",
97  &ProcedureName,
98  BaseSrvKernel32Imports[i].FunctionPointer);
99  if (!NT_SUCCESS(Status)) break;
100  }
101  }
102 
103  /* Did we find them all? */
105  {
106  /* Excellent */
108  return STATUS_SUCCESS;
109  }
110 
111  /* Nope, fail */
112  return Status;
113 }
#define TRUE
Definition: types.h:120
UNICODE_STRING BaseSrvKernel32DllPath
Definition: nls.c:25
LONG NTSTATUS
Definition: precomp.h:26
BASESRV_KERNEL_IMPORTS BaseSrvKernel32Imports[10]
Definition: nls.c:43
HANDLE BaseSrvKernel32DllHandle
Definition: nls.c:24
NTSYSAPI VOID NTAPI RtlInitAnsiString(PANSI_STRING DestinationString, PCSZ SourceString)
NTSTATUS NTAPI LdrGetProcedureAddress(IN PVOID BaseAddress, IN PANSI_STRING Name, IN ULONG Ordinal, OUT PVOID *ProcedureAddress)
Definition: ldrapi.c:823
BOOLEAN BaseSrvKernel32DelayLoadComplete
Definition: nls.c:23
Status
Definition: gdiplustypes.h:24
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
NTSTATUS NTAPI DECLSPEC_HOTPATCH LdrLoadDll(IN PWSTR SearchPath OPTIONAL, IN PULONG DllCharacteristics OPTIONAL, IN PUNICODE_STRING DllName, OUT PVOID *BaseAddress)
Definition: ldrapi.c:310
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define RTL_NUMBER_OF(x)
Definition: RtlRegistry.c:12
#define DPRINT1
Definition: precomp.h:8
ACPI_BUFFER *RetBuffer ACPI_BUFFER *RetBuffer char ACPI_WALK_RESOURCE_CALLBACK void *Context ACPI_BUFFER *RetBuffer UINT16 ACPI_RESOURCE **ResourcePtr ACPI_GENERIC_ADDRESS *Reg UINT32 *ReturnValue UINT8 UINT8 *Slp_TypB ACPI_PHYSICAL_ADDRESS PhysicalAddress64 UINT32 UINT32 *TimeElapsed UINT32 ACPI_STATUS const char UINT32 ACPI_STATUS const char UINT32 const char * FunctionName
Definition: acpixf.h:1278
unsigned int ULONG
Definition: retypes.h:1
#define STATUS_SUCCESS
Definition: shellext.h:65

Referenced by CSR_API().

◆ BaseSrvNlsConnect()

NTSTATUS NTAPI BaseSrvNlsConnect ( IN PCSR_PROCESS  CsrProcess,
IN OUT PVOID  ConnectionInfo,
IN OUT PULONG  ConnectionInfoLength 
)

Definition at line 140 of file nls.c.

143 {
144  /* Does nothing */
145  return STATUS_SUCCESS;
146 }
#define STATUS_SUCCESS
Definition: shellext.h:65

Referenced by BaseClientConnectRoutine().

◆ BaseSrvNLSInit()

VOID NTAPI BaseSrvNLSInit ( IN PBASE_STATIC_SERVER_DATA  StaticData)

Definition at line 117 of file nls.c.

118 {
119  /* Initialize the lock */
121 
122  /* Initialize the data with all F's */
123  pNlsRegUserInfo = &StaticData->NlsUserInfo;
124  RtlFillMemory(&StaticData->NlsUserInfo, sizeof(StaticData->NlsUserInfo), 0xFF);
125 
126  /* Set empty LCID */
128 
129  /* Reset the cache update counter */
133 
134  /* Get the LCID */
136 }
ULONG ulCacheUpdateCount
Definition: base.h:77
NTSYSAPI NTSTATUS NTAPI RtlEnterCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
NTSYSAPI NTSTATUS NTAPI RtlLeaveCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
RTL_CRITICAL_SECTION NlsCacheCriticalSection
Definition: nls.c:20
LCID UserLocaleId
Definition: base.h:75
NTSYSAPI NTSTATUS NTAPI RtlInitializeCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
#define RtlFillMemory(Dest, Length, Fill)
Definition: winternl.h:593
PNLS_USER_INFO pNlsRegUserInfo
Definition: nls.c:21
NTSTATUS NTAPI NtQueryDefaultLocale(IN BOOLEAN UserProfile, OUT PLCID DefaultLocaleId)
Definition: locale.c:162

Referenced by BaseInitializeStaticServerData().

◆ BaseSrvNlsLogon()

NTSTATUS NTAPI BaseSrvNlsLogon ( DWORD  Unknown)

Definition at line 374 of file nls.c.

375 {
376  DPRINT1("%s(%lu) not yet implemented\n", __FUNCTION__, Unknown);
377  return STATUS_NOT_IMPLEMENTED;
378 }
return STATUS_NOT_IMPLEMENTED
#define DPRINT1
Definition: precomp.h:8
#define __FUNCTION__
Definition: types.h:112

◆ BaseSrvNlsUpdateRegistryCache()

NTSTATUS NTAPI BaseSrvNlsUpdateRegistryCache ( DWORD  Unknown1,
DWORD  Unknown2 
)

Definition at line 382 of file nls.c.

384 {
385  DPRINT1("%s(%lu, %lu) not yet implemented\n", __FUNCTION__, Unknown1, Unknown2);
386  return STATUS_NOT_IMPLEMENTED;
387 }
return STATUS_NOT_IMPLEMENTED
#define DPRINT1
Definition: precomp.h:8
#define __FUNCTION__
Definition: types.h:112

◆ CSR_API() [1/5]

CSR_API ( BaseSrvNlsSetUserInfo  )

Definition at line 150 of file nls.c.

151 {
152  DPRINT1("%s not yet implemented\n", __FUNCTION__);
153  return STATUS_NOT_IMPLEMENTED;
154 }
return STATUS_NOT_IMPLEMENTED
#define DPRINT1
Definition: precomp.h:8
#define __FUNCTION__
Definition: types.h:112

◆ CSR_API() [2/5]

CSR_API ( BaseSrvNlsSetMultipleUserInfo  )

Definition at line 156 of file nls.c.

157 {
158  DPRINT1("%s not yet implemented\n", __FUNCTION__);
159  return STATUS_NOT_IMPLEMENTED;
160 }
return STATUS_NOT_IMPLEMENTED
#define DPRINT1
Definition: precomp.h:8
#define __FUNCTION__
Definition: types.h:112

◆ CSR_API() [3/5]

CSR_API ( BaseSrvNlsCreateSection  )

Definition at line 162 of file nls.c.

163 {
165  HANDLE SectionHandle, ProcessHandle, FileHandle;
166  ULONG LocaleId;
167  UNICODE_STRING NlsSectionName;
168  PWCHAR NlsFileName;
171  WCHAR FileNameBuffer[32];
172  WCHAR NlsSectionNameBuffer[32];
173  PBASE_NLS_CREATE_SECTION NlsMsg = &((PBASE_API_MESSAGE)ApiMessage)->Data.NlsCreateSection;
174 
175  /* Load kernel32 first and import the NLS routines */
177  if (!NT_SUCCESS(Status)) return Status;
178 
179  /* Assume failure */
180  NlsMsg->SectionHandle = NULL;
181 
182  /* Check and validate the locale ID, if one is present */
183  LocaleId = NlsMsg->LocaleId;
184  DPRINT1("NLS: Create Section with LCID: %lx for Type: %d\n", LocaleId, NlsMsg->Type);
185  if (LocaleId)
186  {
188  }
189 
190  /* Check which NLS section is being created */
191  switch (NlsMsg->Type)
192  {
193  /* For each one, set the correct filename and object name */
194  case 1:
195  RtlInitUnicodeString(&NlsSectionName, L"\\NLS\\NlsSectionUnicode");
196  NlsFileName = L"unicode.nls";
197  break;
198  case 2:
199  RtlInitUnicodeString(&NlsSectionName, L"\\NLS\\NlsSectionLocale");
200  NlsFileName = L"locale.nls";
201  break;
202  case 3:
203  RtlInitUnicodeString(&NlsSectionName, L"\\NLS\\NlsSectionCType");
204  NlsFileName = L"ctype.nls";
205  break;
206  case 4:
207  RtlInitUnicodeString(&NlsSectionName, L"\\NLS\\NlsSectionSortkey");
208  NlsFileName = L"sortkey.nls";
209  break;
210  case 5:
211  RtlInitUnicodeString(&NlsSectionName, L"\\NLS\\NlsSectionSortTbls");
212  NlsFileName = L"sorttbls.nls";
213  break;
214  case 6:
215  RtlInitUnicodeString(&NlsSectionName, L"\\NLS\\NlsSectionCP437");
216  NlsFileName = L"c_437.nls";
217  break;
218  case 7:
219  RtlInitUnicodeString(&NlsSectionName, L"\\NLS\\NlsSectionCP1252");
220  NlsFileName = L"c_1252.nls";
221  break;
222  case 8:
223  RtlInitUnicodeString(&NlsSectionName, L"\\NLS\\NlsSectionLANG_EXCEPT");
224  NlsFileName = L"l_except.nls";
225  break;
226  case 9:
227  DPRINT1("This type not yet supported\n");
228  return STATUS_NOT_IMPLEMENTED;
229  case 10:
230  DPRINT1("This type not yet supported\n");
231  return STATUS_NOT_IMPLEMENTED;
232  case 11:
233  /* Get the filename for this locale */
237  {
238  DPRINT1("File name query failed\n");
240  }
241 
242  /* Get the name of the section for this locale */
243  DPRINT1("File name: %S\n", FileNameBuffer);
245  10,
246  0,
247  L"\\NLS\\NlsSectionCP",
248  NlsSectionNameBuffer,
249  RTL_NUMBER_OF(NlsSectionNameBuffer));
250  if (!NT_SUCCESS(Status))
251  {
252  DPRINT1("Section name query failed: %lx\n", Status);
253  return Status;
254  }
255 
256  /* Setup the name and go open it */
257  NlsFileName = FileNameBuffer;
258  DPRINT1("Section name: %S\n", NlsSectionNameBuffer);
259  RtlInitUnicodeString(&NlsSectionName, NlsSectionNameBuffer);
260  break;
261  case 12:
262  RtlInitUnicodeString(&NlsSectionName, L"\\NLS\\NlsSectionGeo");
263  NlsFileName = L"geo.nls";
264  break;
265  default:
266  DPRINT1("NLS: Invalid NLS type!\n");
268  }
269 
270  /* Open the specified NLS file */
271  Status = pOpenDataFile(&FileHandle, NlsFileName);
272  if (Status != STATUS_SUCCESS)
273  {
274  DPRINT1("NLS: Failed to open file: %lx\n", Status);
275  return Status;
276  }
277 
278  /* Create an SD for the section object */
279  Status = pCreateNlsSecurityDescriptor(&SecurityDescriptor,
280  sizeof(SecurityDescriptor),
282  if (!NT_SUCCESS(Status))
283  {
284  DPRINT1("NLS: CreateNlsSecurityDescriptor FAILED!: %lx\n", Status);
286  return Status;
287  }
288 
289  /* Create the section object proper */
291  &NlsSectionName,
293  NULL,
295  Status = NtCreateSection(&SectionHandle,
298  0,
300  SEC_COMMIT,
301  FileHandle);
303  if (!NT_SUCCESS(Status))
304  {
305  DPRINT1("NLS: Failed to create section! %lx\n", Status);
306  return Status;
307  }
308 
309  /* Open a handle to the calling process */
314  &ApiMessage->Header.ClientId);
315  if (!NT_SUCCESS(Status))
316  {
317  DPRINT1("NLS: Failed to open process! %lx\n", Status);
318  NtClose(SectionHandle);
319  return Status;
320  }
321 
322  /* Duplicate the handle to the section object into it */
324  SectionHandle,
326  &NlsMsg->SectionHandle,
327  0,
328  0,
329  3);
331  return Status;
332 }
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
Definition: conport.c:35
PGET_NLS_SECTION_NAME pGetNlsSectionName
Definition: nls.c:33
NTSTATUS NTAPI NtCreateSection(OUT PHANDLE SectionHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN PLARGE_INTEGER MaximumSize OPTIONAL, IN ULONG SectionPageProtection OPTIONAL, IN ULONG AllocationAttributes, IN HANDLE FileHandle OPTIONAL)
Definition: section.c:3441
#define OBJ_CASE_INSENSITIVE
Definition: winternl.h:228
#define NLS_SECTION_SECURITY_DESCRIPTOR_SIZE
Definition: base.h:31
_In_ USHORT _In_ ULONG _In_ PSOCKADDR _In_ PSOCKADDR _Reserved_ ULONG _In_opt_ PVOID _In_opt_ const WSK_CLIENT_CONNECTION_DISPATCH _In_opt_ PEPROCESS _In_opt_ PETHREAD _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor
Definition: wsk.h:182
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135
LONG NTSTATUS
Definition: precomp.h:26
uint16_t * PWCHAR
Definition: typedefs.h:56
NTSTATUS NTAPI NtOpenProcess(OUT PHANDLE ProcessHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN PCLIENT_ID ClientId)
Definition: process.c:1440
#define OBJ_OPENIF
Definition: winternl.h:229
NTSTATUS NTAPI BaseSrvDelayLoadKernel32(VOID)
Definition: nls.c:61
return STATUS_NOT_IMPLEMENTED
#define L(x)
Definition: ntvdm.h:50
#define SEC_COMMIT
Definition: mmtypes.h:99
#define PROCESS_DUP_HANDLE
struct _BASE_API_MESSAGE * PBASE_API_MESSAGE
#define NtCurrentProcess()
Definition: nt_native.h:1657
Status
Definition: gdiplustypes.h:24
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
Definition: obhandle.c:3402
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_ PCUNICODE_STRING _In_ PCUNICODE_STRING _In_ LCID LocaleId
Definition: wdfpdo.h:430
unsigned char UCHAR
Definition: xmlstorage.h:181
#define SECTION_MAP_READ
Definition: compat.h:139
#define OBJ_PERMANENT
Definition: winternl.h:226
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE FileHandle
Definition: fltkernel.h:1230
#define RTL_NUMBER_OF(x)
Definition: RtlRegistry.c:12
#define NULL
Definition: types.h:112
#define PAGE_READONLY
Definition: compat.h:138
POPEN_DATA_FILE pOpenDataFile
Definition: nls.c:27
PVALIDATE_LOCALE pValidateLocale
Definition: nls.c:32
#define DPRINT1
Definition: precomp.h:8
WCHAR FileNameBuffer[_MAX_PATH]
Definition: framewnd.c:233
NTSTATUS NTAPI NtDuplicateObject(IN HANDLE SourceProcessHandle, IN HANDLE SourceHandle, IN HANDLE TargetProcessHandle OPTIONAL, OUT PHANDLE TargetHandle OPTIONAL, IN ACCESS_MASK DesiredAccess, IN ULONG HandleAttributes, IN ULONG Options)
Definition: obhandle.c:3410
PGET_CP_FILE_NAME_FROM_REGISTRY pGetCPFileNameFromRegistry
Definition: nls.c:35
unsigned int ULONG
Definition: retypes.h:1
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define InitializeObjectAttributes(p, n, a, r, s)
Definition: reg.c:106
#define STATUS_SUCCESS
Definition: shellext.h:65
_In_ HANDLE ProcessHandle
Definition: mmfuncs.h:403

◆ CSR_API() [4/5]

CSR_API ( BaseSrvNlsUpdateCacheCount  )

Definition at line 334 of file nls.c.

335 {
336  DPRINT1("%s not yet implemented\n", __FUNCTION__);
337  return STATUS_NOT_IMPLEMENTED;
338 }
return STATUS_NOT_IMPLEMENTED
#define DPRINT1
Definition: precomp.h:8
#define __FUNCTION__
Definition: types.h:112

◆ CSR_API() [5/5]

CSR_API ( BaseSrvNlsGetUserInfo  )

Definition at line 340 of file nls.c.

341 {
343  PBASE_NLS_GET_USER_INFO NlsMsg = &((PBASE_API_MESSAGE)ApiMessage)->Data.NlsGetUserInfo;
344 
345  /* Make sure the buffer is valid and of the right size */
346  if ((CsrValidateMessageBuffer(ApiMessage, &NlsMsg->NlsUserInfo, NlsMsg->Size, sizeof(BYTE))) &&
347  (NlsMsg->Size == sizeof(NLS_USER_INFO)))
348  {
349  /* Acquire the lock to prevent updates while we copy */
351  if (NT_SUCCESS(Status))
352  {
353  /* Do the copy now, then drop the lock */
354  RtlCopyMemory(NlsMsg->NlsUserInfo, pNlsRegUserInfo, NlsMsg->Size);
355  DPRINT1("NLS Data copy complete\n");
357  }
358  }
359  else
360  {
361  /* The data was invalid, bail out */
362  DPRINT1("NLS: Size of info is invalid: %lx vs %lx\n", NlsMsg->Size, sizeof(NLS_USER_INFO));
364  }
365 
366  /* All done */
367  return Status;
368 }
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135
LONG NTSTATUS
Definition: precomp.h:26
BOOLEAN NTAPI CsrValidateMessageBuffer(IN PCSR_API_MESSAGE ApiMessage, IN PVOID *Buffer, IN ULONG ElementCount, IN ULONG ElementSize)
Definition: api.c:1430
NTSYSAPI NTSTATUS NTAPI RtlEnterCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
NTSYSAPI NTSTATUS NTAPI RtlLeaveCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
struct _BASE_API_MESSAGE * PBASE_API_MESSAGE
RTL_CRITICAL_SECTION NlsCacheCriticalSection
Definition: nls.c:20
Status
Definition: gdiplustypes.h:24
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
PNLS_USER_INFO pNlsRegUserInfo
Definition: nls.c:21
unsigned char BYTE
Definition: xxhash.c:193
#define DPRINT1
Definition: precomp.h:8
#define RtlCopyMemory(Destination, Source, Length)
Definition: typedefs.h:263

◆ NTSTATUS()

NTSTATUS ( WINAPI pCreateNlsSecurityDescriptor)

Variable Documentation

◆ AccessMask

_In_ SIZE_T _In_ ULONG AccessMask

Definition at line 40 of file nls.c.

Referenced by CreateNlsSecurityDescriptor().

◆ BaseSrvKernel32DelayLoadComplete

BOOLEAN BaseSrvKernel32DelayLoadComplete

Definition at line 23 of file nls.c.

Referenced by BaseSrvDelayLoadKernel32().

◆ BaseSrvKernel32DllHandle

HANDLE BaseSrvKernel32DllHandle

Definition at line 24 of file nls.c.

Referenced by BaseSrvDelayLoadKernel32().

◆ BaseSrvKernel32DllPath

UNICODE_STRING BaseSrvKernel32DllPath

Definition at line 25 of file nls.c.

Referenced by BaseInitializeStaticServerData(), and BaseSrvDelayLoadKernel32().

◆ BaseSrvKernel32Imports

BASESRV_KERNEL_IMPORTS BaseSrvKernel32Imports[10]
Initial value:
=
{
{ "OpenDataFile", (PVOID*) &pOpenDataFile },
{ "GetDefaultSortkeySize", (PVOID*) &pGetDefaultSortkeySize },
{ "GetLinguistLangSize", (PVOID*) &pGetLinguistLangSize },
{ "NlsConvertIntegerToString", (PVOID*) &pNlsConvertIntegerToString },
{ "ValidateLCType", (PVOID*) &pValidateLCType },
{ "ValidateLocale", (PVOID*) &pValidateLocale },
{ "GetNlsSectionName", (PVOID*) &pGetNlsSectionName },
{ "GetUserDefaultLangID", (PVOID*) &pGetUserDefaultLangID },
{ "GetCPFileNameFromRegistry", (PVOID*) &pGetCPFileNameFromRegistry },
{ "CreateNlsSecurityDescriptor", (PVOID*) &pCreateNlsSecurityDescriptor },
}
PGET_NLS_SECTION_NAME pGetNlsSectionName
Definition: nls.c:33
PVOID pGetDefaultSortkeySize
Definition: nls.c:28
PVOID pGetLinguistLangSize
Definition: nls.c:29
PVOID pNlsConvertIntegerToString
Definition: nls.c:30
PVOID pValidateLCType
Definition: nls.c:31
PVOID pGetUserDefaultLangID
Definition: nls.c:34
POPEN_DATA_FILE pOpenDataFile
Definition: nls.c:27
PVALIDATE_LOCALE pValidateLocale
Definition: nls.c:32
PGET_CP_FILE_NAME_FROM_REGISTRY pGetCPFileNameFromRegistry
Definition: nls.c:35

Definition at line 43 of file nls.c.

Referenced by BaseSrvDelayLoadKernel32().

◆ DescriptorSize

◆ NlsCacheCriticalSection

RTL_CRITICAL_SECTION NlsCacheCriticalSection

Definition at line 20 of file nls.c.

Referenced by BaseSrvNLSInit(), and CSR_API().

◆ pGetCPFileNameFromRegistry

PGET_CP_FILE_NAME_FROM_REGISTRY pGetCPFileNameFromRegistry

Definition at line 35 of file nls.c.

Referenced by CSR_API().

◆ pGetDefaultSortkeySize

PVOID pGetDefaultSortkeySize

Definition at line 28 of file nls.c.

◆ pGetLinguistLangSize

PVOID pGetLinguistLangSize

Definition at line 29 of file nls.c.

◆ pGetNlsSectionName

PGET_NLS_SECTION_NAME pGetNlsSectionName

Definition at line 33 of file nls.c.

Referenced by CSR_API().

◆ pGetUserDefaultLangID

PVOID pGetUserDefaultLangID

Definition at line 34 of file nls.c.

◆ pNlsConvertIntegerToString

PVOID pNlsConvertIntegerToString

Definition at line 30 of file nls.c.

◆ pNlsRegUserInfo

PNLS_USER_INFO pNlsRegUserInfo

Definition at line 21 of file nls.c.

Referenced by BaseSrvNLSInit(), and CSR_API().

◆ pOpenDataFile

POPEN_DATA_FILE pOpenDataFile

Definition at line 27 of file nls.c.

Referenced by CSR_API().

◆ pValidateLCType

PVOID pValidateLCType

Definition at line 31 of file nls.c.

◆ pValidateLocale

PVALIDATE_LOCALE pValidateLocale

Definition at line 32 of file nls.c.

Referenced by CSR_API().