210{
220 WCHAR szKeyName[48] =
L".DEFAULT\\Keyboard Layout";
221 WCHAR szValueName[3 + 1];
222 WCHAR szLangID[8 + 1];
223
224
231
235 0,
240 {
243 }
244
246
247 KeyName.MaximumLength =
sizeof(szKeyName);
249
251 {
255 }
256
262
266 0,
271 {
274 }
275
282
286 0,
291 {
296 }
297
299 {
300 if (uIndex > 19) break;
301
304
306
307 if (
_wcsicmp(szLangID, MuiLayouts[uIndex].LayoutID) == 0)
308 {
311 0,
313 (
PVOID)MuiLayouts[uIndex].LayoutID,
314 (
wcslen(MuiLayouts[uIndex].LayoutID)+1) *
sizeof(
WCHAR));
316 {
317 DPRINT1(
"NtSetValueKey() failed (Status = %lx, uIndex = %d)\n",
Status, uIndex);
321 }
322 }
323 else
324 {
328 0,
333 {
334 DPRINT1(
"NtSetValueKey() failed (Status = %lx, uIndex = %d)\n",
Status, uIndex);
338 }
339
341
344 0,
346 (
PVOID)MuiLayouts[uIndex].LayoutID,
347 (
wcslen(MuiLayouts[uIndex].LayoutID)+1) *
sizeof(
WCHAR));
349 {
350 DPRINT1(
"NtSetValueKey() failed (Status = %lx, uIndex = %u)\n",
Status, uIndex);
354 }
355
356 uCount++;
357 }
358
359 uIndex++;
360 }
361
362 if (uIndex > 1)
364 else
366
370}
HANDLE GetRootKeyByPredefKey(IN HANDLE KeyHandle, OUT PCWSTR *RootKeyMountPoint OPTIONAL)
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
#define NT_SUCCESS(StatCode)
NTSTATUS RtlAppendUnicodeToString(IN PUNICODE_STRING Str1, IN PWSTR Str2)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define OBJ_CASE_INSENSITIVE
static BOOLEAN AddHotkeySettings(IN PCWSTR Hotkey, IN PCWSTR LangHotkey, IN PCWSTR LayoutHotkey)
#define InitializeObjectAttributes(p, n, a, r, s)
_Must_inspect_result_ _Out_ PNDIS_STATUS _In_ NDIS_HANDLE _In_ PNDIS_STRING _Out_ PNDIS_HANDLE SubKeyHandle
_Must_inspect_result_ _Out_ PNDIS_STATUS _In_ NDIS_HANDLE _In_ ULONG _Out_ PNDIS_STRING _Out_ PNDIS_HANDLE KeyHandle
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Reserved_ ULONG _In_opt_ PUNICODE_STRING _In_ ULONG _Out_opt_ PULONG Disposition
NTSYSAPI NTSTATUS NTAPI NtSetValueKey(IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName, IN ULONG TitleIndex OPTIONAL, IN ULONG Type, IN PVOID Data, IN ULONG DataSize)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define KEY_CREATE_SUB_KEY
#define REG_OPTION_NON_VOLATILE
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
NTSTATUS NTAPI NtCreateKey(OUT PHANDLE KeyHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN ULONG TitleIndex, IN PUNICODE_STRING Class OPTIONAL, IN ULONG CreateOptions, OUT PULONG Disposition OPTIONAL)
NTSTRSAFEVAPI RtlStringCchPrintfW(_Out_writes_(cchDest) _Always_(_Post_z_) NTSTRSAFE_PWSTR pszDest, _In_ size_t cchDest, _In_ _Printf_format_string_ NTSTRSAFE_PCWSTR pszFormat,...)
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING KeyName
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING ValueName
_Must_inspect_result_ _In_ WDFUSBDEVICE _In_opt_ WDFREQUEST _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_writes_opt_ NumCharacters PUSHORT _Inout_ PUSHORT _In_ UCHAR _In_opt_ USHORT LangID