HANDLE KeyHandle;
ULONG ValueLength;
WCHAR ValueBuffer[20];
- HANDLE UserKey = NULL;
+ HANDLE UserKey;
NTSTATUS Status;
PAGED_CODE();
L"\\Registry\\Machine\\System\\CurrentControlSet"
L"\\Control\\Nls\\Language");
RtlInitUnicodeString(&ValueName, L"Default");
+ UserKey = NULL;
}
/* Initailize the object attributes */
}
/* Close the user key */
- ZwClose(UserKey);
+ if (UserKey)
+ {
+ ObCloseHandle(UserKey, KernelMode);
+ }
/* Check for success */
if (NT_SUCCESS(Status))
NTAPI
NtQueryDefaultUILanguage(OUT LANGID* LanguageId)
{
- NTSTATUS Status = STATUS_SUCCESS;
+ NTSTATUS Status;
+ LANGID SafeLanguageId;
PAGED_CODE();
+ /* Call the executive helper routine */
+ Status = ExpGetCurrentUserUILanguage(L"MultiUILanguageId", &SafeLanguageId);
+
/* Enter SEH for probing */
_SEH2_TRY
{
ProbeForWriteLangid(LanguageId);
}
- /* Call the executive helper routine */
- Status = ExpGetCurrentUserUILanguage(L"MultiUILanguageId", LanguageId);
if (NT_SUCCESS(Status))
{
/* Success, return the language */
+ *LanguageId = SafeLanguageId;
+ }
+ else
+ {
+ /* Failed, use fallback value */
*LanguageId = PsInstallUILanguageId;
}
}