ReactOS.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
List overview
Download
Ros-diffs
February 2007
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
ros-diffs@reactos.org
16 participants
265 discussions
Start a n
N
ew thread
[tretiakov] 25762: Add missing return
by tretiakov@svn.reactos.org
Author: tretiakov Date: Sat Feb 10 16:11:02 2007 New Revision: 25762 URL:
http://svn.reactos.org/svn/reactos?rev=25762&view=rev
Log: Add missing return Modified: trunk/reactos/subsystems/win32/win32k/ntuser/kbdlayout.c Modified: trunk/reactos/subsystems/win32/win32k/ntuser/kbdlayout.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/kbdlayout.c (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/kbdlayout.c Sat Feb 10 16:11:02 2007 @@ -283,6 +283,8 @@ if(pKbl->hkl == hKl) return pKbl; pKbl = (PKBL) pKbl->List.Flink; } while(pKbl != KBLList); + + return NULL; } static PKBL UserActivateKbl(PW32THREAD Thread, PKBL pKbl)
17 years, 10 months
1
0
0
0
[greatlrd] 25761: stub shall be in stub. file not in other files.
by greatlrd@svn.reactos.org
Author: greatlrd Date: Sat Feb 10 12:15:04 2007 New Revision: 25761 URL:
http://svn.reactos.org/svn/reactos?rev=25761&view=rev
Log: stub shall be in stub. file not in other files. Modified: trunk/reactos/subsystems/win32/win32k/ntuser/kbdlayout.c trunk/reactos/subsystems/win32/win32k/ntuser/ntstubs.c Modified: trunk/reactos/subsystems/win32/win32k/ntuser/kbdlayout.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/kbdlayout.c (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/kbdlayout.c Sat Feb 10 12:15:04 2007 @@ -462,14 +462,5 @@ return Ret; } -DWORD -STDCALL -NtUserUnloadKeyboardLayout( - DWORD Unknown0) -{ - UNIMPLEMENTED - - return 0; -} /* EOF */ Modified: trunk/reactos/subsystems/win32/win32k/ntuser/ntstubs.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/ntstubs.c (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/ntstubs.c Sat Feb 10 12:15:04 2007 @@ -616,6 +616,16 @@ return 0; } +DWORD +STDCALL +NtUserUnloadKeyboardLayout( + DWORD Unknown0) +{ + UNIMPLEMENTED + + return 0; +} + DWORD STDCALL
17 years, 10 months
1
0
0
0
[tretiakov] 25760: Fix a bug.
by tretiakov@svn.reactos.org
Author: tretiakov Date: Sat Feb 10 11:09:04 2007 New Revision: 25760 URL:
http://svn.reactos.org/svn/reactos?rev=25760&view=rev
Log: Fix a bug. Modified: trunk/reactos/subsystems/win32/win32k/ntuser/kbdlayout.c Modified: trunk/reactos/subsystems/win32/win32k/ntuser/kbdlayout.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/kbdlayout.c (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/kbdlayout.c Sat Feb 10 11:09:04 2007 @@ -158,34 +158,35 @@ *phModule = EngLoadImage(FullLayoutPath.Buffer); - if(!*phModule) - { - DPRINT1( "Failed to load %wZ\n", &FullLayoutPath ); - } - else - { - DPRINT( "Loaded Keyboard Layout: %wZ\n", &FullLayoutPath ); - } - - RtlInitAnsiString( &kbdProcedureName, "KbdLayerDescriptor" ); - LdrGetProcedureAddress((PVOID)*phModule, - &kbdProcedureName, - 0, - (PVOID*)&layerDescGetFn); - - if(layerDescGetFn) - { - *pKbdTables = layerDescGetFn(); + if(*phModule) + { + DPRINT("Loaded %wZ\n", &FullLayoutPath); + + RtlInitAnsiString( &kbdProcedureName, "KbdLayerDescriptor" ); + LdrGetProcedureAddress((PVOID)*phModule, + &kbdProcedureName, + 0, + (PVOID*)&layerDescGetFn); + + if(layerDescGetFn) + { + *pKbdTables = layerDescGetFn(); + } + else + { + DPRINT1("Error: %wZ has no KbdLayerDescriptor()\n", &FullLayoutPath); + } + + if(!layerDescGetFn || !*pKbdTables) + { + DPRINT1("Failed to load the keyboard layout.\n"); + EngUnloadImage(*phModule); + return FALSE; + } } else { - DPRINT1("Error: %wZ has no KbdLayerDescriptor()\n", &FullLayoutPath); - } - - if(!layerDescGetFn || !*pKbdTables) - { - DPRINT1("Failed to load the keyboard layout.\n"); - EngUnloadImage(*phModule); + DPRINT1("Failed to load dll %wZ\n", &FullLayoutPath); return FALSE; }
17 years, 10 months
1
0
0
0
[tretiakov] 25759: Add braces to if.
by tretiakov@svn.reactos.org
Author: tretiakov Date: Sat Feb 10 10:28:25 2007 New Revision: 25759 URL:
http://svn.reactos.org/svn/reactos?rev=25759&view=rev
Log: Add braces to if. Modified: trunk/reactos/subsystems/win32/win32k/ntuser/kbdlayout.c Modified: trunk/reactos/subsystems/win32/win32k/ntuser/kbdlayout.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/kbdlayout.c (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/kbdlayout.c Sat Feb 10 10:28:25 2007 @@ -158,8 +158,14 @@ *phModule = EngLoadImage(FullLayoutPath.Buffer); - if(!*phModule) DPRINT1( "Failed to load %wZ\n", &FullLayoutPath ); - else DPRINT( "Loaded Keyboard Layout: %wZ\n", &FullLayoutPath ); + if(!*phModule) + { + DPRINT1( "Failed to load %wZ\n", &FullLayoutPath ); + } + else + { + DPRINT( "Loaded Keyboard Layout: %wZ\n", &FullLayoutPath ); + } RtlInitAnsiString( &kbdProcedureName, "KbdLayerDescriptor" ); LdrGetProcedureAddress((PVOID)*phModule, @@ -204,7 +210,7 @@ if(!UserLoadKbdDll(NewKbl->Name, &NewKbl->hModule, &NewKbl->KBTables)) { - DPRINT1("%s: failed to load %x dll!\n", LocaleId); + DPRINT1("%s: failed to load %x dll!\n", __FUNCTION__, LocaleId); ExFreePool(NewKbl); return NULL; } @@ -240,7 +246,10 @@ { DPRINT1("Could not get default locale (%08lx).\n", Status); } - else DPRINT("DefaultLocale = %08lx\n", LocaleId); + else + { + DPRINT("DefaultLocale = %08lx\n", LocaleId); + } if(!NT_SUCCESS(Status) || !(DefaultKL = UserLoadDllAndCreateKbl(LocaleId))) {
17 years, 10 months
1
0
0
0
[tretiakov] 25758: Add multiple keyboard layout support. Implemented NtUserLoadKeyboardLayoutEx, NtUserActivateKeyboardLayout, NtUserGetKeyboardLayoutList, NtUserGetKeyboardLayoutName.
by tretiakov@svn.reactos.org
Author: tretiakov Date: Fri Feb 9 23:48:37 2007 New Revision: 25758 URL:
http://svn.reactos.org/svn/reactos?rev=25758&view=rev
Log: Add multiple keyboard layout support. Implemented NtUserLoadKeyboardLayoutEx, NtUserActivateKeyboardLayout, NtUserGetKeyboardLayoutList, NtUserGetKeyboardLayoutName. Added: trunk/reactos/subsystems/win32/win32k/ntuser/kbdlayout.c Modified: trunk/reactos/dll/win32/user32/user32.def trunk/reactos/dll/win32/user32/windows/input.c trunk/reactos/include/reactos/win32k/ntuser.h trunk/reactos/subsystems/win32/win32k/include/input.h trunk/reactos/subsystems/win32/win32k/include/win32.h trunk/reactos/subsystems/win32/win32k/ntuser/input.c trunk/reactos/subsystems/win32/win32k/ntuser/keyboard.c trunk/reactos/subsystems/win32/win32k/ntuser/ntstubs.c trunk/reactos/subsystems/win32/win32k/win32k.rbuild trunk/reactos/tools/nci/w32ksvc.db Modified: trunk/reactos/dll/win32/user32/user32.def URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/user32/user32.de…
============================================================================== --- trunk/reactos/dll/win32/user32/user32.def (original) +++ trunk/reactos/dll/win32/user32/user32.def Fri Feb 9 23:48:37 2007 @@ -1,7 +1,7 @@ LIBRARY user32.dll EXPORTS -ActivateKeyboardLayout@8 +ActivateKeyboardLayout@8=NtUserActivateKeyboardLayout@8 AdjustWindowRect@12 AdjustWindowRectEx@16 AlignRects@16 @@ -295,7 +295,7 @@ GetKeyNameTextW@12 GetKeyState@4 GetKeyboardLayout@4 -GetKeyboardLayoutList@8 +GetKeyboardLayoutList@8=NtUserGetKeyboardLayoutList@8 GetKeyboardLayoutNameA@4 GetKeyboardLayoutNameW@4 GetKeyboardState@4 Modified: trunk/reactos/dll/win32/user32/windows/input.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/user32/windows/i…
============================================================================== --- trunk/reactos/dll/win32/user32/windows/input.c (original) +++ trunk/reactos/dll/win32/user32/windows/input.c Fri Feb 9 23:48:37 2007 @@ -44,218 +44,6 @@ static _TRACKINGLIST tracking_info; static UINT_PTR timer; static const INT iTimerInterval = 50; /* msec for timer interval */ - - -/* LOCALE FUNCTIONS **********************************************************/ - -/* - * Utility function to read a value from the registry more easily. - * - * IN PUNICODE_STRING KeyName -> Name of key to open - * IN PUNICODE_STRING ValueName -> Name of value to open - * OUT PUNICODE_STRING ReturnedValue -> String contained in registry - * - * Returns NTSTATUS - */ - -static -NTSTATUS FASTCALL -ReadRegistryValue( PUNICODE_STRING KeyName, - PUNICODE_STRING ValueName, - PUNICODE_STRING ReturnedValue ) -{ - NTSTATUS Status; - HANDLE KeyHandle; - OBJECT_ATTRIBUTES KeyAttributes; - PKEY_VALUE_PARTIAL_INFORMATION KeyValuePartialInfo; - ULONG Length = 0; - ULONG ResLength = 0; - PWCHAR ReturnBuffer; - - InitializeObjectAttributes(&KeyAttributes, KeyName, OBJ_CASE_INSENSITIVE, - NULL, NULL); - - Status = ZwOpenKey(&KeyHandle, KEY_ALL_ACCESS, &KeyAttributes); - if( !NT_SUCCESS(Status) ) - { - return Status; - } - - Status = ZwQueryValueKey(KeyHandle, ValueName, KeyValuePartialInformation, - 0, - 0, - &ResLength); - - if( Status != STATUS_BUFFER_TOO_SMALL ) - { - NtClose(KeyHandle); - return Status; - } - - ResLength += sizeof( *KeyValuePartialInfo ); - KeyValuePartialInfo = LocalAlloc(LMEM_ZEROINIT, ResLength); - Length = ResLength; - - if( !KeyValuePartialInfo ) - { - NtClose(KeyHandle); - return STATUS_NO_MEMORY; - } - - Status = ZwQueryValueKey(KeyHandle, ValueName, KeyValuePartialInformation, - (PVOID)KeyValuePartialInfo, - Length, - &ResLength); - - if( !NT_SUCCESS(Status) ) - { - NtClose(KeyHandle); - LocalFree(KeyValuePartialInfo); - return Status; - } - - /* At this point, KeyValuePartialInfo->Data contains the key data */ - ReturnBuffer = LocalAlloc(0, KeyValuePartialInfo->DataLength); - if(!ReturnBuffer) - { - NtClose(KeyHandle); - LocalFree(KeyValuePartialInfo); - return STATUS_NO_MEMORY; - } - - RtlCopyMemory(ReturnBuffer, KeyValuePartialInfo->Data, KeyValuePartialInfo->DataLength); - RtlInitUnicodeString(ReturnedValue, ReturnBuffer); - - LocalFree(KeyValuePartialInfo); - NtClose(KeyHandle); - - return Status; -} - - -static -HKL FASTCALL -IntLoadKeyboardLayout( LPCWSTR pwszKLID, - UINT Flags) -{ - HANDLE Handle; - HINSTANCE KBModule = 0; - FARPROC pAddr = 0; - DWORD offTable = 0; - HKL hKL; - NTSTATUS Status; - WCHAR LocaleBuffer[16]; - UNICODE_STRING LayoutKeyName; - UNICODE_STRING LayoutValueName; - UNICODE_STRING DefaultLocale; - UNICODE_STRING LayoutFile; - UNICODE_STRING FullLayoutPath; - LCID LocaleId; - ULONG_PTR layout; - LANGID langid; - WCHAR FullPathBuffer[MAX_PATH]; - WCHAR LayoutKeyNameBuffer[128] = L"\\REGISTRY\\Machine\\SYSTEM\\CurrentControlSet" - L"\\Control\\KeyboardLayouts\\"; - - layout = (ULONG_PTR) wcstoul(pwszKLID, NULL, 16); - -// LocaleId = GetSystemDefaultLCID(); - - LocaleId = (LCID) layout; - - /* Create the HKL to be used by NtUserLoadKeyboardLayoutEx*/ - /* - * Microsoft Office expects this value to be something specific - * for Japanese and Korean Windows with an IME the value is 0xe001 - * We should probably check to see if an IME exists and if so then - * set this word properly. - */ - langid = PRIMARYLANGID(LANGIDFROMLCID(layout)); - if (langid == LANG_CHINESE || langid == LANG_JAPANESE || langid == LANG_KOREAN) - layout |= 0xe001 << 16; /* FIXME */ - else - layout |= layout << 16; - - DPRINT("Input = %S, DefaultLocale = %lx\n", pwszKLID, LocaleId ); - swprintf(LocaleBuffer, L"%08lx", LocaleId); - DPRINT("DefaultLocale = %S\n", LocaleBuffer); - RtlInitUnicodeString(&DefaultLocale, LocaleBuffer); - - RtlInitUnicodeString(&LayoutKeyName, LayoutKeyNameBuffer); - LayoutKeyName.MaximumLength = sizeof(LayoutKeyNameBuffer); - RtlAppendUnicodeStringToString(&LayoutKeyName, &DefaultLocale); - DPRINT("LayoutKeyName=%wZ\n", &LayoutKeyName); - RtlInitUnicodeString(&LayoutValueName, L"Layout File"); - Status = ReadRegistryValue(&LayoutKeyName,&LayoutValueName,&LayoutFile); - - if(!NT_SUCCESS(Status)) - { - DPRINT1("Failed to read registry value, %x\n", Status); - return NULL; - } - - DPRINT("Read registry and got %wZ\n", &LayoutFile); - - Status = GetSystemDirectory(FullPathBuffer, sizeof(FullPathBuffer)); - if(Status == 0 || Status > sizeof(FullPathBuffer)) - { - DPRINT1("GetSystemDirectory() failed! (%d)\n", GetLastError()); - RtlFreeUnicodeString(&LayoutFile); - return NULL; - } - - RtlInitUnicodeString(&FullLayoutPath, FullPathBuffer); - FullLayoutPath.MaximumLength = sizeof(FullPathBuffer); - if(FullLayoutPath.Length < FullLayoutPath.MaximumLength-1) - { - FullLayoutPath.Buffer[FullLayoutPath.Length/sizeof(WCHAR)] = '\\'; - FullLayoutPath.Buffer[FullLayoutPath.Length/sizeof(WCHAR)+1] = 0; - FullLayoutPath.Length+=sizeof(WCHAR); - } - Status = RtlAppendUnicodeStringToString(&FullLayoutPath, &LayoutFile); - DPRINT("Loading Keyboard DLL %wZ\n", &FullLayoutPath); - RtlFreeUnicodeString(&LayoutFile); - - if(!NT_SUCCESS(Status)) - { - DPRINT1("RtlAppendUnicodeStringToString() failed! (%x)\n", Status); - return NULL; - } - - KBModule = LoadLibraryEx(FullPathBuffer, NULL, LOAD_WITH_ALTERED_SEARCH_PATH); - - if(!KBModule ) - { - DPRINT1( "Failed to load %wZ, lasterror = %d\n", &FullLayoutPath, GetLastError() ); - return NULL; - } - - pAddr = GetProcAddress( KBModule, (LPCSTR) 1); - offTable = (DWORD) pAddr - (DWORD) KBModule; // Weeks to figure this out! - - DPRINT( "Load Keyboard Module Offset: %x\n", offTable ); - - FreeLibrary(KBModule); - - Handle = CreateFileW( FullPathBuffer, - GENERIC_READ, - FILE_SHARE_READ, - NULL, - OPEN_EXISTING, - 0, - NULL); - - hKL = NtUserLoadKeyboardLayoutEx( Handle, - offTable, - (HKL) layout, - &DefaultLocale, - (UINT) layout, - Flags); - - NtClose(Handle); - - return hKL; -} /* FUNCTIONS *****************************************************************/ @@ -314,18 +102,6 @@ /* - * @unimplemented - */ -HKL STDCALL -ActivateKeyboardLayout(HKL hkl, - UINT Flags) -{ - UNIMPLEMENTED; - return (HKL)0; -} - - -/* * @implemented */ BOOL STDCALL @@ -461,18 +237,6 @@ /* - * @unimplemented - */ -UINT STDCALL -GetKeyboardLayoutList(int nBuff, - HKL FAR *lpList) -{ - UNIMPLEMENTED; - return 0; -} - - -/* * @implemented */ BOOL STDCALL @@ -534,15 +298,9 @@ LoadKeyboardLayoutA(LPCSTR pwszKLID, UINT Flags) { - HKL ret; - UNICODE_STRING pwszKLIDW; - - if (pwszKLID) RtlCreateUnicodeStringFromAsciiz(&pwszKLIDW, pwszKLID); - else pwszKLIDW.Buffer = NULL; - - ret = LoadKeyboardLayoutW(pwszKLIDW.Buffer, Flags); - RtlFreeUnicodeString(&pwszKLIDW); - return ret; + return NtUserLoadKeyboardLayoutEx( + strtoul(pwszKLID, NULL, 16), + Flags); } @@ -553,7 +311,11 @@ LoadKeyboardLayoutW(LPCWSTR pwszKLID, UINT Flags) { - return IntLoadKeyboardLayout( pwszKLID, Flags); + // Look at revision 25596 to see how it's done in windows. + // We will do things our own way. + return NtUserLoadKeyboardLayoutEx( + wcstoul(pwszKLID, NULL, 16), + Flags); } Modified: trunk/reactos/include/reactos/win32k/ntuser.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/win32k/ntu…
============================================================================== --- trunk/reactos/include/reactos/win32k/ntuser.h (original) +++ trunk/reactos/include/reactos/win32k/ntuser.h Fri Feb 9 23:48:37 2007 @@ -299,11 +299,11 @@ NtUserAcquireOrReleaseInputOwnership( BOOLEAN Release); -DWORD +HKL NTAPI NtUserActivateKeyboardLayout( - DWORD Unknown0, - DWORD Unknown1); + HKL hKl, + ULONG Flags); DWORD NTAPI @@ -1008,11 +1008,11 @@ NtUserGetKeyboardLayout( DWORD dwThreadid); -DWORD +UINT NTAPI NtUserGetKeyboardLayoutList( - DWORD Unknown0, - DWORD Unknown1); + INT nItems, + HKL *pHklBuff); BOOL NTAPI @@ -1219,11 +1219,7 @@ HKL NTAPI NtUserLoadKeyboardLayoutEx( - HANDLE Handle, - DWORD offTable, - HKL hKL, - PUNICODE_STRING puszKLID, - UINT KLayoutLangID, + LCID LocaleId, UINT Flags); BOOL Modified: trunk/reactos/subsystems/win32/win32k/include/input.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/in…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/include/input.h (original) +++ trunk/reactos/subsystems/win32/win32k/include/input.h Fri Feb 9 23:48:37 2007 @@ -3,19 +3,16 @@ #include <internal/kbd.h> -typedef struct _KBDRVFILE -{ - PSINGLE_LIST_ENTRY pkbdfChain; - WCHAR wcKBDF[9]; // used w GetKeyboardLayoutName same as wszKLID. - struct _KBDTABLES* KBTables; // KBDTABLES in ntoskrnl/include/internal/kbd.h -} KBDRVFILE, *PKBDRVFILE; - typedef struct _KBL { - PLIST_ENTRY pklChain; - DWORD dwKBLFlags; + LIST_ENTRY List; + DWORD Flags; + WCHAR Name[9]; // used w GetKeyboardLayoutName same as wszKLID. + struct _KBDTABLES* KBTables; // KBDTABLES in ntoskrnl/include/internal/kbd.h + HANDLE hModule; + ULONG RefCount; HKL hkl; - PKBDRVFILE pkbdf; + LCID lcid; } KBL, *PKBL; #define KBL_UNLOADED 0x20000000 @@ -27,12 +24,14 @@ InitKeyboardImpl(VOID); PUSER_MESSAGE_QUEUE W32kGetPrimitiveMessageQueue(VOID); VOID W32kUnregisterPrimitiveMessageQueue(VOID); -PKBDTABLES W32kGetDefaultKeyLayout(VOID); +PKBL W32kGetDefaultKeyLayout(VOID); VOID FASTCALL W32kKeyProcessMessage(LPMSG Msg, PKBDTABLES KeyLayout, BYTE Prefix); BOOL FASTCALL IntBlockInput(PW32THREAD W32Thread, BOOL BlockIt); BOOL FASTCALL IntMouseInput(MOUSEINPUT *mi); BOOL FASTCALL IntKeyboardInput(KEYBDINPUT *ki); +BOOL UserInitDefaultKeyboardLayout(); + #define ThreadHasInputAccess(W32Thread) \ (TRUE) Modified: trunk/reactos/subsystems/win32/win32k/include/win32.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/in…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/include/win32.h (original) +++ trunk/reactos/subsystems/win32/win32k/include/win32.h Fri Feb 9 23:48:37 2007 @@ -8,7 +8,7 @@ struct _USER_MESSAGE_QUEUE* MessageQueue; LIST_ENTRY WindowListHead; LIST_ENTRY W32CallbackListHead; - struct _KBDTABLES* KeyboardLayout; + struct _KBL* KeyboardLayout; struct _DESKTOP_OBJECT* Desktop; HANDLE hDesktop; DWORD MessagePumpHookValue; @@ -36,7 +36,7 @@ LIST_ENTRY PrivateFontListHead; FAST_MUTEX DriverObjListLock; LIST_ENTRY DriverObjListHead; - struct _KBDTABLES* KeyboardLayout; + struct _KBL* KeyboardLayout; ULONG Flags; LONG GDIObjects; LONG UserObjects; Modified: trunk/reactos/subsystems/win32/win32k/ntuser/input.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/input.c (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/input.c Fri Feb 9 23:48:37 2007 @@ -529,8 +529,8 @@ KernelMode, TRUE, NULL); + DPRINT( "Keyboard Input Thread Starting...\n" ); - /* * Receive and process keyboard input. */ @@ -754,7 +754,7 @@ * keyboard layout in use. */ W32kKeyProcessMessage(&msg, - ((PW32THREAD)FocusThread->Tcb.Win32Thread)->KeyboardLayout, + ((PW32THREAD)FocusThread->Tcb.Win32Thread)->KeyboardLayout->KBTables, KeyInput.Flags & KEY_E0 ? 0xE0 : (KeyInput.Flags & KEY_E1 ? 0xE1 : 0)); @@ -816,8 +816,10 @@ } /* Initialize the default keyboard layout */ - (VOID)W32kGetDefaultKeyLayout(); - + if(!UserInitDefaultKeyboardLayout()) + { + DPRINT1("Failed to initialize default keyboard layout!\n"); + } Status = PsCreateSystemThread(&MouseThreadHandle, THREAD_ALL_ACCESS, Added: trunk/reactos/subsystems/win32/win32k/ntuser/kbdlayout.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/kbdlayout.c (added) +++ trunk/reactos/subsystems/win32/win32k/ntuser/kbdlayout.c Fri Feb 9 23:48:37 2007 @@ -1,0 +1,465 @@ + +/* + * PROJECT: ReactOS Kernel + * LICENSE: GPL - See COPYING in the top level directory + * FILE: subsystems/win32/win32k/ntuser/kbdlayout.c + * PURPOSE: Keyboard layout management + * COPYRIGHT: Copyright 2007 Saveliy Tretiakov + * + */ + + +/* INCLUDES ******************************************************************/ + +#include <w32k.h> + +#define NDEBUG +#include <debug.h> + +PKBL KBLList = NULL; // Keyboard layout list. +PKBL DefaultKL = NULL; + +typedef PVOID (*KbdLayerDescriptor)(VOID); +NTSTATUS STDCALL LdrGetProcedureAddress(PVOID module, + PANSI_STRING import_name, + DWORD flags, + PVOID *func_addr); + + + +/* PRIVATE FUNCTIONS ******************************************************/ + + +/* + * Utility function to read a value from the registry more easily. + * + * IN PUNICODE_STRING KeyName -> Name of key to open + * IN PUNICODE_STRING ValueName -> Name of value to open + * OUT PUNICODE_STRING ReturnedValue -> String contained in registry + * + * Returns NTSTATUS + */ + +static NTSTATUS NTAPI ReadRegistryValue( PUNICODE_STRING KeyName, + PUNICODE_STRING ValueName, + PUNICODE_STRING ReturnedValue ) +{ + NTSTATUS Status; + HANDLE KeyHandle; + OBJECT_ATTRIBUTES KeyAttributes; + PKEY_VALUE_PARTIAL_INFORMATION KeyValuePartialInfo; + ULONG Length = 0; + ULONG ResLength = 0; + PWCHAR ReturnBuffer; + + InitializeObjectAttributes(&KeyAttributes, KeyName, OBJ_CASE_INSENSITIVE, + NULL, NULL); + Status = ZwOpenKey(&KeyHandle, KEY_ALL_ACCESS, &KeyAttributes); + if( !NT_SUCCESS(Status) ) + { + return Status; + } + + Status = ZwQueryValueKey(KeyHandle, ValueName, KeyValuePartialInformation, + 0, + 0, + &ResLength); + + if( Status != STATUS_BUFFER_TOO_SMALL ) + { + NtClose(KeyHandle); + return Status; + } + + ResLength += sizeof( *KeyValuePartialInfo ); + KeyValuePartialInfo = + ExAllocatePoolWithTag(PagedPool, ResLength, TAG_STRING); + Length = ResLength; + + if( !KeyValuePartialInfo ) + { + NtClose(KeyHandle); + return STATUS_NO_MEMORY; + } + + Status = ZwQueryValueKey(KeyHandle, + ValueName, + KeyValuePartialInformation, + (PVOID)KeyValuePartialInfo, + Length, + &ResLength); + + if( !NT_SUCCESS(Status) ) + { + NtClose(KeyHandle); + ExFreePool(KeyValuePartialInfo); + return Status; + } + + /* At this point, KeyValuePartialInfo->Data contains the key data */ + ReturnBuffer = ExAllocatePoolWithTag(PagedPool, + KeyValuePartialInfo->DataLength, + TAG_STRING); + + if(!ReturnBuffer) + { + NtClose(KeyHandle); + ExFreePool(KeyValuePartialInfo); + return STATUS_NO_MEMORY; + } + + RtlCopyMemory(ReturnBuffer, + KeyValuePartialInfo->Data, + KeyValuePartialInfo->DataLength); + RtlInitUnicodeString(ReturnedValue, ReturnBuffer); + + ExFreePool(KeyValuePartialInfo); + NtClose(KeyHandle); + + return Status; +} + +static BOOL UserLoadKbdDll(WCHAR *wsKLID, + HANDLE *phModule, + PKBDTABLES *pKbdTables) +{ + NTSTATUS Status; + KbdLayerDescriptor layerDescGetFn; + ANSI_STRING kbdProcedureName; + UNICODE_STRING LayoutKeyName; + UNICODE_STRING LayoutValueName; + UNICODE_STRING LayoutFile; + UNICODE_STRING FullLayoutPath; + UNICODE_STRING klid; + WCHAR LayoutPathBuffer[MAX_PATH] = L"\\SystemRoot\\System32\\"; + WCHAR KeyNameBuffer[MAX_PATH] = L"\\REGISTRY\\Machine\\SYSTEM\\" + L"CurrentControlSet\\Control\\KeyboardLayouts\\"; + + RtlInitUnicodeString(&klid, wsKLID); + RtlInitUnicodeString(&LayoutValueName,L"Layout File"); + RtlInitUnicodeString(&LayoutKeyName, KeyNameBuffer); + LayoutKeyName.MaximumLength = sizeof(KeyNameBuffer); + + RtlAppendUnicodeStringToString(&LayoutKeyName, &klid); + Status = ReadRegistryValue(&LayoutKeyName, &LayoutValueName, &LayoutFile); + + if(!NT_SUCCESS(Status)) + { + DPRINT1("Can't get layout filename for %wZ. (%08lx)\n", klid, Status); + return FALSE; + } + + DPRINT("Read registry and got %wZ\n", &LayoutFile); + RtlInitUnicodeString(&FullLayoutPath, LayoutPathBuffer); + FullLayoutPath.MaximumLength = sizeof(LayoutPathBuffer); + RtlAppendUnicodeStringToString(&FullLayoutPath, &LayoutFile); + DPRINT("Loading Keyboard DLL %wZ\n", &FullLayoutPath); + RtlFreeUnicodeString(&LayoutFile); + + *phModule = EngLoadImage(FullLayoutPath.Buffer); + + if(!*phModule) DPRINT1( "Failed to load %wZ\n", &FullLayoutPath ); + else DPRINT( "Loaded Keyboard Layout: %wZ\n", &FullLayoutPath ); + + RtlInitAnsiString( &kbdProcedureName, "KbdLayerDescriptor" ); + LdrGetProcedureAddress((PVOID)*phModule, + &kbdProcedureName, + 0, + (PVOID*)&layerDescGetFn); + + if(layerDescGetFn) + { + *pKbdTables = layerDescGetFn(); + } + else + { + DPRINT1("Error: %wZ has no KbdLayerDescriptor()\n", &FullLayoutPath); + } + + if(!layerDescGetFn || !*pKbdTables) + { + DPRINT1("Failed to load the keyboard layout.\n"); + EngUnloadImage(*phModule); + return FALSE; + } + + return TRUE; +} + +static PKBL UserLoadDllAndCreateKbl(LCID LocaleId) +{ + PKBL NewKbl; + ULONG hKl; + LANGID langid; + + NewKbl = ExAllocatePool(PagedPool, sizeof(NewKbl)); + + if(!NewKbl) + { + DPRINT1("%s: Can't allocate memory!\n", __FUNCTION__); + return NULL; + } + + swprintf(NewKbl->Name, L"%08lx", LocaleId); + + if(!UserLoadKbdDll(NewKbl->Name, &NewKbl->hModule, &NewKbl->KBTables)) + { + DPRINT1("%s: failed to load %x dll!\n", LocaleId); + ExFreePool(NewKbl); + return NULL; + } + + /* Microsoft Office expects this value to be something specific + * for Japanese and Korean Windows with an IME the value is 0xe001 + * We should probably check to see if an IME exists and if so then + * set this word properly. + */ + langid = PRIMARYLANGID(LANGIDFROMLCID(LocaleId)); + hKl = LocaleId; + + if (langid == LANG_CHINESE || langid == LANG_JAPANESE || langid == LANG_KOREAN) + hKl |= 0xe001 << 16; /* FIXME */ + else hKl |= hKl << 16; + + NewKbl->hkl = (HKL) hKl; + NewKbl->lcid = LocaleId; + NewKbl->Flags = 0; + NewKbl->RefCount = 0; + + return NewKbl; +} + +BOOL UserInitDefaultKeyboardLayout() +{ + + LCID LocaleId; + NTSTATUS Status; + + Status = ZwQueryDefaultLocale(FALSE, &LocaleId); + if (!NT_SUCCESS(Status)) + { + DPRINT1("Could not get default locale (%08lx).\n", Status); + } + else DPRINT("DefaultLocale = %08lx\n", LocaleId); + + if(!NT_SUCCESS(Status) || !(DefaultKL = UserLoadDllAndCreateKbl(LocaleId))) + { + DPRINT1("Trying to load US Keyboard Layout.\n"); + LocaleId = 0x409; + + if(!(DefaultKL = UserLoadDllAndCreateKbl(LocaleId))) + { + DPRINT1("Failed to load any Keyboard Layout\n"); + return FALSE; + } + } + + InitializeListHead(&DefaultKL->List); + KBLList = DefaultKL; + return TRUE; +} + + +PKBL W32kGetDefaultKeyLayout(VOID) +{ + return DefaultKL; +} + +static PKBL UserHklToKbl(HKL hKl) +{ + PKBL pKbl = KBLList; + do + { + if(pKbl->hkl == hKl) return pKbl; + pKbl = (PKBL) pKbl->List.Flink; + } while(pKbl != KBLList); +} + +static PKBL UserActivateKbl(PW32THREAD Thread, PKBL pKbl) +{ + PKBL Prev; + + Prev = Thread->KeyboardLayout; + Prev->RefCount--; + Thread->KeyboardLayout = pKbl; + pKbl->RefCount++; + + return Prev; +} + +HKL FASTCALL +UserGetKeyboardLayout( + DWORD dwThreadId) +{ + NTSTATUS Status; + PETHREAD Thread; + PW32THREAD W32Thread; + HKL Ret; + + if(!dwThreadId) + { + W32Thread = PsGetCurrentThreadWin32Thread(); + return W32Thread->KeyboardLayout->hkl; + } + + Status = PsLookupThreadByThreadId((HANDLE)dwThreadId, &Thread); + if(!NT_SUCCESS(Status)) + { + SetLastWin32Error(ERROR_INVALID_PARAMETER); + return NULL; + } + + W32Thread = PsGetThreadWin32Thread(Thread); + Ret = W32Thread->KeyboardLayout->hkl; + ObDereferenceObject(Thread); + return Ret; +} + +/* EXPORTS *******************************************************************/ + +UINT +STDCALL +NtUserGetKeyboardLayoutList( + INT nItems, + HKL* pHklBuff) +{ + UINT Ret = 0; + PKBL pKbl; + + UserEnterShared(); + pKbl = KBLList; + + if(nItems == 0) + { + do + { + Ret++; + pKbl = (PKBL) pKbl->List.Flink; + } while(pKbl != KBLList); + } + else + { + _SEH_TRY + { + ProbeForWrite(pHklBuff, nItems*sizeof(HKL), 4); + + while(Ret < nItems) + { + pHklBuff[Ret] = pKbl->hkl; + Ret++; + pKbl = (PKBL) pKbl->List.Flink; + if(pKbl == KBLList) break; + } + + } + _SEH_HANDLE + { + SetLastNtError(_SEH_GetExceptionCode()); + Ret = 0; + } + _SEH_END; + } + + UserLeave(); + return Ret; +} + +BOOL +STDCALL +NtUserGetKeyboardLayoutName( + LPWSTR lpszName) +{ + BOOL ret = FALSE; + PKBL pKbl; + + UserEnterShared(); + + _SEH_TRY + { + ProbeForWrite(lpszName, 9*sizeof(WCHAR), 1); + pKbl = PsGetCurrentThreadWin32Thread()->KeyboardLayout; + RtlCopyMemory(lpszName, pKbl->Name, 9*sizeof(WCHAR)); + ret = TRUE; + } + _SEH_HANDLE + { + SetLastNtError(_SEH_GetExceptionCode()); + ret = FALSE; + } + _SEH_END; + + UserLeave(); + return ret; +} + + +HKL +STDCALL +NtUserLoadKeyboardLayoutEx( + IN LCID LocaleId, + IN UINT Flags) +{ + HKL Ret = NULL; + PKBL pKbl; + + UserEnterExclusive(); + + pKbl = KBLList; + do + { + if(pKbl->lcid == LocaleId) + { + Ret = pKbl->hkl; + goto the_end; + } + + pKbl = (PKBL) pKbl->List.Flink; + } while(pKbl != KBLList); + + pKbl = UserLoadDllAndCreateKbl(LocaleId); + InsertTailList(&KBLList->List, &pKbl->List); + Ret = pKbl->hkl; + + //FIXME: Respect Flags! + +the_end: + UserLeave(); + return Ret; +} + +HKL +STDCALL +NtUserActivateKeyboardLayout( + HKL hKl, + ULONG Flags) +{ + PKBL pKbl; + HKL Ret = NULL; + + UserEnterExclusive(); + + pKbl = UserHklToKbl(hKl); + + if(pKbl) + { + pKbl = UserActivateKbl(PsGetCurrentThreadWin32Thread(), pKbl); + Ret = pKbl->hkl; + + //FIXME: Respect flags! + } + + UserLeave(); + return Ret; +} + +DWORD +STDCALL +NtUserUnloadKeyboardLayout( + DWORD Unknown0) +{ + UNIMPLEMENTED + + return 0; +} + +/* EOF */ Modified: trunk/reactos/subsystems/win32/win32k/ntuser/keyboard.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/keyboard.c (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/keyboard.c Fri Feb 9 23:48:37 2007 @@ -33,8 +33,7 @@ #define NDEBUG #include <debug.h> -/* Directory to load key layouts from */ -#define SYSTEMROOT_DIR L"\\SystemRoot\\System32\\" + /* Lock modifiers */ #define CAPITAL_BIT 0x80000000 #define NUMLOCK_BIT 0x40000000 @@ -52,8 +51,6 @@ BYTE gQueueKeyStateTable[256]; - -PKBDRVFILE KBLList = NULL; // Keyboard layout list. /* FUNCTIONS *****************************************************************/ @@ -434,7 +431,7 @@ cchBuff, wFlags, PsGetCurrentThreadWin32Thread() ? - PsGetCurrentThreadWin32Thread()->KeyboardLayout : 0 ); + PsGetCurrentThreadWin32Thread()->KeyboardLayout->KBTables : 0 ); } return ToUnicodeResult; @@ -456,255 +453,6 @@ 0 ); } -/* - * Utility to copy and append two unicode strings. - * - * IN OUT PUNICODE_STRING ResultFirst -> First string and result - * IN PUNICODE_STRING Second -> Second string to append - * IN BOOL Deallocate -> TRUE: Deallocate First string before - * overwriting. - * - * Returns NTSTATUS. - */ - -NTSTATUS NTAPI AppendUnicodeString(PUNICODE_STRING ResultFirst, - PUNICODE_STRING Second, - BOOL Deallocate) -{ - NTSTATUS Status; - PWSTR new_string = - ExAllocatePoolWithTag(PagedPool, - (ResultFirst->Length + Second->Length + sizeof(WCHAR)), - TAG_STRING); - if( !new_string ) - { - return STATUS_NO_MEMORY; - } - memcpy( new_string, ResultFirst->Buffer, - ResultFirst->Length ); - memcpy( new_string + ResultFirst->Length / sizeof(WCHAR), - Second->Buffer, - Second->Length ); - if( Deallocate ) - RtlFreeUnicodeString(ResultFirst); - ResultFirst->Length += Second->Length; - ResultFirst->MaximumLength = ResultFirst->Length; - new_string[ResultFirst->Length / sizeof(WCHAR)] = 0; - Status = RtlCreateUnicodeString(ResultFirst,new_string) ? - STATUS_SUCCESS : STATUS_NO_MEMORY; - ExFreePool(new_string); - return Status; -} - -/* - * Utility function to read a value from the registry more easily. - * - * IN PUNICODE_STRING KeyName -> Name of key to open - * IN PUNICODE_STRING ValueName -> Name of value to open - * OUT PUNICODE_STRING ReturnedValue -> String contained in registry - * - * Returns NTSTATUS - */ - -static NTSTATUS NTAPI ReadRegistryValue( PUNICODE_STRING KeyName, - PUNICODE_STRING ValueName, - PUNICODE_STRING ReturnedValue ) -{ - NTSTATUS Status; - HANDLE KeyHandle; - OBJECT_ATTRIBUTES KeyAttributes; - PKEY_VALUE_PARTIAL_INFORMATION KeyValuePartialInfo; - ULONG Length = 0; - ULONG ResLength = 0; - UNICODE_STRING Temp; - - InitializeObjectAttributes(&KeyAttributes, KeyName, OBJ_CASE_INSENSITIVE, - NULL, NULL); - Status = ZwOpenKey(&KeyHandle, KEY_ALL_ACCESS, &KeyAttributes); - if( !NT_SUCCESS(Status) ) - { - return Status; - } - - Status = ZwQueryValueKey(KeyHandle, ValueName, KeyValuePartialInformation, - 0, - 0, - &ResLength); - - if( Status != STATUS_BUFFER_TOO_SMALL ) - { - NtClose(KeyHandle); - return Status; - } - - ResLength += sizeof( *KeyValuePartialInfo ); - KeyValuePartialInfo = - ExAllocatePoolWithTag(PagedPool, ResLength, TAG_STRING); - Length = ResLength; - - if( !KeyValuePartialInfo ) - { - NtClose(KeyHandle); - return STATUS_NO_MEMORY; - } - - Status = ZwQueryValueKey(KeyHandle, ValueName, KeyValuePartialInformation, - (PVOID)KeyValuePartialInfo, - Length, - &ResLength); - - if( !NT_SUCCESS(Status) ) - { - NtClose(KeyHandle); - ExFreePool(KeyValuePartialInfo); - return Status; - } - - Temp.Length = Temp.MaximumLength = KeyValuePartialInfo->DataLength; - Temp.Buffer = (PWCHAR)KeyValuePartialInfo->Data; - - /* At this point, KeyValuePartialInfo->Data contains the key data */ - RtlInitUnicodeString(ReturnedValue,L""); - AppendUnicodeString(ReturnedValue,&Temp,FALSE); - - ExFreePool(KeyValuePartialInfo); - NtClose(KeyHandle); - - return Status; -} - -typedef PVOID (*KbdLayerDescriptor)(VOID); -NTSTATUS STDCALL LdrGetProcedureAddress(PVOID module, - PANSI_STRING import_name, - DWORD flags, - PVOID *func_addr); - -void InitKbdLayout( PVOID *pkKeyboardLayout ) -{ - WCHAR LocaleBuffer[16]; - UNICODE_STRING LayoutKeyName; - UNICODE_STRING LayoutValueName; - UNICODE_STRING DefaultLocale; - UNICODE_STRING LayoutFile; - UNICODE_STRING FullLayoutPath; - LCID LocaleId; - PWCHAR KeyboardLayoutWSTR; - HMODULE kbModule = 0; - NTSTATUS Status; - ANSI_STRING kbdProcedureName; - KbdLayerDescriptor layerDescGetFn; - -#define XX_STATUS(x) if (!NT_SUCCESS(Status = (x))) continue; - - do - { - Status = ZwQueryDefaultLocale(FALSE, &LocaleId); - if (!NT_SUCCESS(Status)) - { - DPRINT1("Could not get default locale (%08lx).\n", Status); - } - else - { - DPRINT("DefaultLocale = %lx\n", LocaleId); - swprintf(LocaleBuffer, L"%08lx", LocaleId); - DPRINT("DefaultLocale = %S\n", LocaleBuffer); - RtlInitUnicodeString(&DefaultLocale, LocaleBuffer); - - RtlInitUnicodeString(&LayoutKeyName, - L"\\REGISTRY\\Machine\\SYSTEM\\CurrentControlSet" - L"\\Control\\KeyboardLayouts\\"); - - AppendUnicodeString(&LayoutKeyName,&DefaultLocale,FALSE); - - RtlInitUnicodeString(&LayoutValueName,L"Layout File"); - - Status = ReadRegistryValue(&LayoutKeyName,&LayoutValueName,&LayoutFile); - - RtlFreeUnicodeString(&LayoutKeyName); - - if( !NT_SUCCESS(Status) ) - { - DPRINT1("Got default locale but not layout file. (%08lx)\n", - Status); - } - else - { - DPRINT("Read registry and got %wZ\n", &LayoutFile); - - - RtlInitUnicodeString(&FullLayoutPath,SYSTEMROOT_DIR); - AppendUnicodeString(&FullLayoutPath,&LayoutFile,FALSE); - - DPRINT("Loading Keyboard DLL %wZ\n", &FullLayoutPath); - - RtlFreeUnicodeString(&LayoutFile); - - KeyboardLayoutWSTR = - ExAllocatePoolWithTag(PagedPool, - FullLayoutPath.Length + sizeof(WCHAR), - TAG_STRING); - - if( !KeyboardLayoutWSTR ) - { - DPRINT1("Couldn't allocate a string for the keyboard layout name.\n"); - RtlFreeUnicodeString(&FullLayoutPath); - return; - } - memcpy(KeyboardLayoutWSTR,FullLayoutPath.Buffer, - FullLayoutPath.Length); - KeyboardLayoutWSTR[FullLayoutPath.Length / sizeof(WCHAR)] = 0; - - kbModule = EngLoadImage(KeyboardLayoutWSTR); - DPRINT( "Load Keyboard Layout: %S\n", KeyboardLayoutWSTR ); - - if( !kbModule ) - DPRINT1( "Load Keyboard Layout: No %wZ\n", &FullLayoutPath ); - - ExFreePool(KeyboardLayoutWSTR); - RtlFreeUnicodeString(&FullLayoutPath); - } - } - - if( !kbModule ) - { - DPRINT1("Trying to load US Keyboard Layout\n"); - kbModule = EngLoadImage(L"\\SystemRoot\\system32\\kbdus.dll"); - - if (!kbModule) - { - DPRINT1("Failed to load any Keyboard Layout\n"); - return; - } - } - - RtlInitAnsiString( &kbdProcedureName, "KbdLayerDescriptor" ); - - LdrGetProcedureAddress((PVOID)kbModule, - &kbdProcedureName, - 0, - (PVOID*)&layerDescGetFn); - - if( layerDescGetFn ) - { - *pkKeyboardLayout = layerDescGetFn(); - } - } - while (FALSE); - - if( !*pkKeyboardLayout ) - { - DPRINT1("Failed to load the keyboard layout.\n"); - } - -#undef XX_STATUS -} - -PKBDTABLES W32kGetDefaultKeyLayout(VOID) -{ - PKBDTABLES pkKeyboardLayout = 0; - InitKbdLayout( (PVOID) &pkKeyboardLayout ); - return pkKeyboardLayout; -} BOOL FASTCALL IntTranslateKbdMessage(LPMSG lpMsg, @@ -719,7 +467,7 @@ DWORD ScanCode = 0; - keyLayout = PsGetCurrentThreadWin32Thread()->KeyboardLayout; + keyLayout = PsGetCurrentThreadWin32Thread()->KeyboardLayout->KBTables; if( !keyLayout ) return FALSE; @@ -960,7 +708,7 @@ DPRINT("Enter NtUserMapVirtualKeyEx\n"); UserEnterExclusive(); - keyLayout = PsGetCurrentThreadWin32Thread() ? PsGetCurrentThreadWin32Thread()->KeyboardLayout : 0; + keyLayout = PsGetCurrentThreadWin32Thread() ? PsGetCurrentThreadWin32Thread()->KeyboardLayout->KBTables : 0; if( !keyLayout ) RETURN(0); @@ -1053,7 +801,7 @@ UserEnterShared(); keyLayout = PsGetCurrentThreadWin32Thread() ? - PsGetCurrentThreadWin32Thread()->KeyboardLayout : 0; + PsGetCurrentThreadWin32Thread()->KeyboardLayout->KBTables : 0; if( !keyLayout || nSize < 1 ) RETURN(0); @@ -1150,7 +898,7 @@ { VK_UP, VK_NUMPAD8 }, { VK_PRIOR, VK_NUMPAD9 }, { 0,0 } }; - PVSC_VK VscVkTable = NULL; + PVSC_VK VscVkTable = NULL; if( !KeyboardLayout || !Msg || (Msg->message != WM_KEYDOWN && Msg->message != WM_SYSKEYDOWN && @@ -1247,101 +995,6 @@ } -DWORD -STDCALL -NtUserGetKeyboardLayoutList( - DWORD Items, - DWORD pHklBuff) -{ - UNIMPLEMENTED - - return 0; -} - -BOOL -STDCALL -NtUserGetKeyboardLayoutName( - LPWSTR lpszName) -{ - BOOL ret = FALSE; - LCID LocaleId; - WCHAR LocaleBuffer[16]; - NTSTATUS Status; - - - UserEnterExclusive(); - - DPRINT("Enter NtUserGetKeyboardLayoutName\n"); - - Status = ZwQueryDefaultLocale(FALSE, &LocaleId); - if (NT_SUCCESS(Status)) - { - swprintf(LocaleBuffer, L"%08lx", LocaleId); - DPRINT("LocaleId : %08lx\n",LocaleId); - _SEH_TRY - { - ProbeForWrite(lpszName, 16, 1); - RtlCopyMemory(lpszName,LocaleBuffer,16); - ret = TRUE; - } - _SEH_HANDLE - { - SetLastNtError(_SEH_GetExceptionCode()); - ret = FALSE; - } - _SEH_END; - } - UserLeave(); - return ret; -} - - -HKL FASTCALL -UserGetKeyboardLayout( - DWORD dwThreadId) -{ - NTSTATUS Status; - PETHREAD Thread; - PW32THREAD W32Thread; - PKBDTABLES layout; - - if (!dwThreadId) - W32Thread = PsGetCurrentThreadWin32Thread(); - else - { - Status = PsLookupThreadByThreadId((HANDLE)dwThreadId, &Thread);//fixme: deref thread - if(!NT_SUCCESS(Status)) - { - SetLastWin32Error(ERROR_INVALID_PARAMETER); - return 0; - } - W32Thread = Thread->Tcb.Win32Thread; /* Wrong, but returning the pointer to - the table. */ - } - layout = W32Thread->KeyboardLayout; - if(!layout) - return 0; - return (HKL)layout; -} - - -HKL -STDCALL -NtUserGetKeyboardLayout( - DWORD dwThreadId) -{ - DECLARE_RETURN(HKL); - - UserEnterShared(); - DPRINT("Enter NtUserGetKeyboardLayout\n"); - - RETURN( UserGetKeyboardLayout(dwThreadId)); - -CLEANUP: - DPRINT("Leave NtUserGetKeyboardLayout, ret=%i\n",_ret_); - UserLeave(); - END_CLEANUP; -} DWORD FASTCALL @@ -1360,22 +1013,6 @@ DPRINT1("Unknown type!\n"); return 0; /* The book says 0 here, so 0 */ } -} - - -HKL -STDCALL -NtUserLoadKeyboardLayoutEx( - IN HANDLE Handle, - IN DWORD offTable, - IN HKL hKL, - IN PUNICODE_STRING puszKLID, - IN UINT KLayoutLangID, - IN UINT Flags) -{ - UNIMPLEMENTED - - return 0; } Modified: trunk/reactos/subsystems/win32/win32k/ntuser/ntstubs.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/ntstubs.c (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/ntstubs.c Fri Feb 9 23:48:37 2007 @@ -12,17 +12,6 @@ #define NDEBUG #include <debug.h> - -DWORD -STDCALL -NtUserActivateKeyboardLayout( - DWORD Unknown0, - DWORD Unknown1) -{ - UNIMPLEMENTED - - return 0; -} DWORD STDCALL @@ -627,15 +616,6 @@ return 0; } -DWORD -STDCALL -NtUserUnloadKeyboardLayout( - DWORD Unknown0) -{ - UNIMPLEMENTED - - return 0; -} DWORD STDCALL Modified: trunk/reactos/subsystems/win32/win32k/win32k.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/wi…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/win32k.rbuild (original) +++ trunk/reactos/subsystems/win32/win32k/win32k.rbuild Fri Feb 9 23:48:37 2007 @@ -120,6 +120,7 @@ <file>hotkey.c</file> <file>input.c</file> <file>keyboard.c</file> + <file>kbdlayout.c</file> <file>menu.c</file> <file>message.c</file> <file>metric.c</file> Modified: trunk/reactos/tools/nci/w32ksvc.db URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/tools/nci/w32ksvc.db?rev=2…
============================================================================== --- trunk/reactos/tools/nci/w32ksvc.db (original) +++ trunk/reactos/tools/nci/w32ksvc.db Fri Feb 9 23:48:37 2007 @@ -428,7 +428,7 @@ NtUserIsClipboardFormatAvailable 1 NtUserKillSystemTimer 2 NtUserKillTimer 2 -NtUserLoadKeyboardLayoutEx 6 +NtUserLoadKeyboardLayoutEx 2 NtUserLockWindowStation 1 NtUserLockWindowUpdate 1 NtUserLockWorkStation 0
17 years, 10 months
1
0
0
0
[fireball] 25757: 30 seconds screensaver timeout is just simply wrong. Developers should have test-settings inside *their* working copies, not trunk/release branches. Set it to 10 minutes (default value in WinXP, iirc).
by fireball@svn.reactos.org
Author: fireball Date: Fri Feb 9 13:46:13 2007 New Revision: 25757 URL:
http://svn.reactos.org/svn/reactos?rev=25757&view=rev
Log: 30 seconds screensaver timeout is just simply wrong. Developers should have test-settings inside *their* working copies, not trunk/release branches. Set it to 10 minutes (default value in WinXP, iirc). Modified: branches/ros-branch-0_3_1/reactos/subsystems/win32/win32k/ntuser/winsta.c Modified: branches/ros-branch-0_3_1/reactos/subsystems/win32/win32k/ntuser/winsta.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-branch-0_3_1/reactos/subsys…
============================================================================== --- branches/ros-branch-0_3_1/reactos/subsystems/win32/win32k/ntuser/winsta.c (original) +++ branches/ros-branch-0_3_1/reactos/subsystems/win32/win32k/ntuser/winsta.c Fri Feb 9 13:46:13 2007 @@ -485,9 +485,9 @@ /* * Initialize the new window station object */ - WindowStationObject->ScreenSaverRunning = FALSE; - WindowStationObject->ScreenSaverTimeOut = 30; - WindowStationObject->FlatMenu = FALSE; + WindowStationObject->ScreenSaverRunning = FALSE; + WindowStationObject->ScreenSaverTimeOut = 10 * 60; + WindowStationObject->FlatMenu = FALSE; if(!(CurInfo = ExAllocatePool(PagedPool, sizeof(SYSTEM_CURSORINFO)))) {
17 years, 10 months
1
0
0
0
[fireball] 25756: 30 seconds screensaver timeout is just simply wrong. Developers should have test-settings inside *their* working copies, not trunk/release branches. Set it to 10 minutes (default value in WinXP, iirc).
by fireball@svn.reactos.org
Author: fireball Date: Fri Feb 9 13:45:54 2007 New Revision: 25756 URL:
http://svn.reactos.org/svn/reactos?rev=25756&view=rev
Log: 30 seconds screensaver timeout is just simply wrong. Developers should have test-settings inside *their* working copies, not trunk/release branches. Set it to 10 minutes (default value in WinXP, iirc). Modified: trunk/reactos/subsystems/win32/win32k/ntuser/winsta.c Modified: trunk/reactos/subsystems/win32/win32k/ntuser/winsta.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/winsta.c (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/winsta.c Fri Feb 9 13:45:54 2007 @@ -485,9 +485,9 @@ /* * Initialize the new window station object */ - WindowStationObject->ScreenSaverRunning = FALSE; - WindowStationObject->ScreenSaverTimeOut = 30; - WindowStationObject->FlatMenu = FALSE; + WindowStationObject->ScreenSaverRunning = FALSE; + WindowStationObject->ScreenSaverTimeOut = 10 * 60; + WindowStationObject->FlatMenu = FALSE; if(!(CurInfo = ExAllocatePool(PagedPool, sizeof(SYSTEM_CURSORINFO)))) {
17 years, 10 months
1
0
0
0
[tkreuzer] 25755: A gdi handle viewer. There's currently a hack, to make it work on ROS, OpenProcess() crashes ROS, so currently you will not see the processes names.
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Fri Feb 9 02:29:24 2007 New Revision: 25755 URL:
http://svn.reactos.org/svn/reactos?rev=25755&view=rev
Log: A gdi handle viewer. There's currently a hack, to make it work on ROS, OpenProcess() crashes ROS, so currently you will not see the processes names. Added: trunk/rosapps/devutils/gdihv/ trunk/rosapps/devutils/gdihv/gdi.h trunk/rosapps/devutils/gdihv/gdihv.c trunk/rosapps/devutils/gdihv/gdihv.cbp trunk/rosapps/devutils/gdihv/gdihv.h trunk/rosapps/devutils/gdihv/gdihv.rbuild trunk/rosapps/devutils/gdihv/gdihv.rc trunk/rosapps/devutils/gdihv/handlelist.c trunk/rosapps/devutils/gdihv/handlelist.h trunk/rosapps/devutils/gdihv/mainwnd.c trunk/rosapps/devutils/gdihv/mainwnd.h trunk/rosapps/devutils/gdihv/proclist.c trunk/rosapps/devutils/gdihv/proclist.h trunk/rosapps/devutils/gdihv/resource.h trunk/rosapps/devutils/gdihv/system.ico (with props) Added: trunk/rosapps/devutils/gdihv/gdi.h URL:
http://svn.reactos.org/svn/reactos/trunk/rosapps/devutils/gdihv/gdi.h?rev=2…
============================================================================== --- trunk/rosapps/devutils/gdihv/gdi.h (added) +++ trunk/rosapps/devutils/gdihv/gdi.h Fri Feb 9 02:29:24 2007 @@ -1,0 +1,64 @@ +typedef struct _GDI_TABLE_ENTRY +{ + PVOID KernelData; /* Points to the kernel mode structure */ + HANDLE ProcessId; /* process id that created the object, 0 for stock objects */ + LONG Type; /* the first 16 bit is the object type including the stock obj flag, the last 16 bits is just the object type */ + PVOID UserData; /* Points to the user mode structure, usually NULL though */ +} GDI_TABLE_ENTRY, *PGDI_TABLE_ENTRY; + +typedef PGDI_TABLE_ENTRY (CALLBACK * GDIQUERYPROC) (void); + +/* GDI handle table can hold 0x4000 handles */ +#define GDI_HANDLE_COUNT 0x4000 +#define GDI_GLOBAL_PROCESS (0x0) + +/* Handle Masks and shifts */ +#define GDI_HANDLE_INDEX_MASK (GDI_HANDLE_COUNT - 1) +#define GDI_HANDLE_TYPE_MASK 0x007f0000 +#define GDI_HANDLE_STOCK_MASK 0x00800000 +#define GDI_HANDLE_REUSE_MASK 0xff000000 +#define GDI_HANDLE_REUSECNT_SHIFT 24 +#define GDI_HANDLE_UPPER_MASK 0xffff0000 + +/* Handle macros */ +#define GDI_HANDLE_CREATE(i, t) \ + ((HANDLE)(((i) & GDI_HANDLE_INDEX_MASK) | ((t) & GDI_HANDLE_UPPER_MASK))) + +#define GDI_HANDLE_GET_INDEX(h) \ + (((ULONG_PTR)(h)) & GDI_HANDLE_INDEX_MASK) + +#define GDI_HANDLE_GET_TYPE(h) \ + (((ULONG_PTR)(h)) & GDI_HANDLE_TYPE_MASK) + +#define GDI_HANDLE_IS_TYPE(h, t) \ + ((t) == (((ULONG_PTR)(h)) & GDI_HANDLE_TYPE_MASK)) + +#define GDI_HANDLE_IS_STOCKOBJ(h) \ + (0 != (((ULONG_PTR)(h)) & GDI_HANDLE_STOCK_MASK)) + +#define GDI_HANDLE_SET_STOCKOBJ(h) \ + ((h) = (HANDLE)(((ULONG_PTR)(h)) | GDI_HANDLE_STOCK_MASK)) + +#define GDI_HANDLE_GET_UPPER(h) \ + (((ULONG_PTR)(h)) & GDI_HANDLE_UPPER_MASK) + +#define GDI_OBJECT_TYPE_DC 0x00010000 +#define GDI_OBJECT_TYPE_REGION 0x00040000 +#define GDI_OBJECT_TYPE_BITMAP 0x00050000 +#define GDI_OBJECT_TYPE_PALETTE 0x00080000 +#define GDI_OBJECT_TYPE_FONT 0x000a0000 +#define GDI_OBJECT_TYPE_BRUSH 0x00100000 +#define GDI_OBJECT_TYPE_EMF 0x00210000 +#define GDI_OBJECT_TYPE_PEN 0x00300000 +#define GDI_OBJECT_TYPE_EXTPEN 0x00500000 +#define GDI_OBJECT_TYPE_COLORSPACE 0x00090000 +#define GDI_OBJECT_TYPE_METADC 0x00660000 +#define GDI_OBJECT_TYPE_METAFILE 0x00260000 +#define GDI_OBJECT_TYPE_ENHMETAFILE 0x00460000 +/* Following object types made up for ROS */ +#define GDI_OBJECT_TYPE_ENHMETADC 0x00740000 +#define GDI_OBJECT_TYPE_MEMDC 0x00750000 +#define GDI_OBJECT_TYPE_DCE 0x00770000 +#define GDI_OBJECT_TYPE_DONTCARE 0x007f0000 +/** Not really an object type. Forces GDI_FreeObj to be silent. */ +#define GDI_OBJECT_TYPE_SILENT 0x80000000 Added: trunk/rosapps/devutils/gdihv/gdihv.c URL:
http://svn.reactos.org/svn/reactos/trunk/rosapps/devutils/gdihv/gdihv.c?rev…
============================================================================== --- trunk/rosapps/devutils/gdihv/gdihv.c (added) +++ trunk/rosapps/devutils/gdihv/gdihv.c Fri Feb 9 02:29:24 2007 @@ -1,0 +1,50 @@ +/* + * Gdi handle viewer + * + * gdihv.c + * + * Copyright (C) 2007 Timo kreuzer <timo <dot> kreuzer <at> web.de> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "gdihv.h" + +HINSTANCE g_hInstance; +GDIQUERYPROC GdiQueryHandleTable; +PGDI_TABLE_ENTRY GdiHandleTable = 0; + +int WINAPI WinMain (HINSTANCE hThisInstance, + HINSTANCE hPrevInstance, + LPSTR lpszArgument, + int nStyle) + +{ + g_hInstance = hThisInstance; + + InitCommonControls(); + + GdiQueryHandleTable = (GDIQUERYPROC)GetProcAddress(GetModuleHandle(L"GDI32.DLL"), "GdiQueryTable"); + if(!GdiQueryHandleTable) + { + return -1; + } + GdiHandleTable = GdiQueryHandleTable(); + + DialogBoxParam(g_hInstance, MAKEINTRESOURCE(IDD_MAINWND), HWND_DESKTOP, MainWindow_WndProc, 0); + + /* The program return value is 0 */ + return 0; +} Added: trunk/rosapps/devutils/gdihv/gdihv.cbp URL:
http://svn.reactos.org/svn/reactos/trunk/rosapps/devutils/gdihv/gdihv.cbp?r…
============================================================================== --- trunk/rosapps/devutils/gdihv/gdihv.cbp (added) +++ trunk/rosapps/devutils/gdihv/gdihv.cbp Fri Feb 9 02:29:24 2007 @@ -1,0 +1,120 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<CodeBlocks_project_file> + <FileVersion major="1" minor="5" /> + <Project> + <Option title="gdihv" /> + <Option pch_mode="2" /> + <Option default_target="" /> + <Option compiler="gcc" /> + <Build> + <Target title="Debug"> + <Option output="..\..\..\..\output-i386\modules\rosapps\devutils\gdihv\gdihv.exe" /> + <Option working_dir="..\..\..\..\output-i386\modules\rosapps\devutils\gdihv" /> + <Option object_output="..\..\..\..\obj-i386\modules\rosapps\devutils\gdihv" /> + <Option type="0" /> + <Option compiler="gcc" /> + <Compiler> + <Add option="-g" /> + <Add option="-D__USE_W32API" /> + <Add option="-D_WIN32_IE=0x0501" /> + <Add option="-D_WIN32_WINNT=0x0501" /> + <Add directory="..\..\..\..\include" /> + <Add directory="..\..\..\..\include\crt" /> + <Add directory="..\..\..\..\include\psdk" /> + <Add directory="..\..\..\..\include\ndk" /> + <Add directory="..\..\..\..\include\ddk" /> + </Compiler> + <Linker> + <Add library="user32" /> + <Add library="kernel32" /> + <Add library="comctl32" /> + <Add library="psapi" /> + </Linker> + </Target> + </Build> + <Compiler> + <Add option="-Wall" /> + </Compiler> + <Linker> + <Add library="gdi32" /> + <Add library="user32" /> + <Add library="kernel32" /> + </Linker> + <Unit filename="gdi.h"> + <Option compilerVar="CPP" /> + <Option compile="0" /> + <Option link="0" /> + <Option virtualFolder="header\" /> + <Option target="Debug" /> + </Unit> + <Unit filename="gdihv.c"> + <Option compilerVar="CC" /> + <Option virtualFolder="source\" /> + <Option target="Debug" /> + </Unit> + <Unit filename="gdihv.h"> + <Option compilerVar="CPP" /> + <Option compile="0" /> + <Option link="0" /> + <Option virtualFolder="header\" /> + <Option target="Debug" /> + </Unit> + <Unit filename="gdihv.rbuild"> + <Option compilerVar="CPP" /> + <Option compile="0" /> + <Option link="0" /> + <Option virtualFolder="header\" /> + <Option target="Debug" /> + </Unit> + <Unit filename="gdihv.rc"> + <Option compilerVar="WINDRES" /> + <Option virtualFolder="resources\" /> + <Option objectName="gdihv.res" /> + <Option target="Debug" /> + </Unit> + <Unit filename="handlelist.c"> + <Option compilerVar="CC" /> + <Option virtualFolder="source\" /> + <Option target="Debug" /> + </Unit> + <Unit filename="handlelist.h"> + <Option compilerVar="CPP" /> + <Option compile="0" /> + <Option link="0" /> + <Option virtualFolder="header\" /> + <Option target="Debug" /> + </Unit> + <Unit filename="mainwnd.c"> + <Option compilerVar="CC" /> + <Option virtualFolder="source\" /> + <Option target="Debug" /> + </Unit> + <Unit filename="mainwnd.h"> + <Option compilerVar="CPP" /> + <Option compile="0" /> + <Option link="0" /> + <Option virtualFolder="header\" /> + <Option target="Debug" /> + </Unit> + <Unit filename="proclist.c"> + <Option compilerVar="CC" /> + <Option virtualFolder="source\" /> + <Option target="Debug" /> + </Unit> + <Unit filename="proclist.h"> + <Option compilerVar="CPP" /> + <Option compile="0" /> + <Option link="0" /> + <Option virtualFolder="header\" /> + <Option target="Debug" /> + </Unit> + <Unit filename="resource.h"> + <Option compilerVar="CPP" /> + <Option compile="0" /> + <Option link="0" /> + <Option virtualFolder="header\" /> + <Option target="Debug" /> + </Unit> + <Extensions /> + </Project> +</CodeBlocks_project_file> Added: trunk/rosapps/devutils/gdihv/gdihv.h URL:
http://svn.reactos.org/svn/reactos/trunk/rosapps/devutils/gdihv/gdihv.h?rev…
============================================================================== --- trunk/rosapps/devutils/gdihv/gdihv.h (added) +++ trunk/rosapps/devutils/gdihv/gdihv.h Fri Feb 9 02:29:24 2007 @@ -1,0 +1,22 @@ +#ifndef _GDIHV_H +#define _GDIHV_H + +#define UNICODE + +#define WIN32_NO_STATUS +#include <windows.h> +#include <commctrl.h> +#include <ndk/ntndk.h> +#include <psapi.h> + +#include "gdi.h" +#include "mainwnd.h" +#include "proclist.h" +#include "handlelist.h" + +#include "resource.h" + +extern PGDI_TABLE_ENTRY GdiHandleTable; +extern HINSTANCE g_hInstance; + +#endif //_GDIHV_H Added: trunk/rosapps/devutils/gdihv/gdihv.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/rosapps/devutils/gdihv/gdihv.rbuil…
============================================================================== --- trunk/rosapps/devutils/gdihv/gdihv.rbuild (added) +++ trunk/rosapps/devutils/gdihv/gdihv.rbuild Fri Feb 9 02:29:24 2007 @@ -1,0 +1,15 @@ +<module name="gdihv" type="win32gui" installbase="system32" installname="gdihv.exe"> + <include base="gdihv">.</include> + <define name="__USE_W32API" /> + <define name="_WIN32_IE">0x0501</define> + <define name="_WIN32_WINNT">0x0501</define> + <library>user32</library> + <library>kernel32</library> + <library>comctl32</library> + <library>psapi</library> + <file>gdihv.c</file> + <file>gdihv.rc</file> + <file>mainwnd.c</file> + <file>handlelist.c</file> + <file>proclist.c</file> +</module> Added: trunk/rosapps/devutils/gdihv/gdihv.rc URL:
http://svn.reactos.org/svn/reactos/trunk/rosapps/devutils/gdihv/gdihv.rc?re…
============================================================================== --- trunk/rosapps/devutils/gdihv/gdihv.rc (added) +++ trunk/rosapps/devutils/gdihv/gdihv.rc Fri Feb 9 02:29:24 2007 @@ -1,0 +1,18 @@ +#include <windows.h> +#include "resource.h" + +IDI_MAIN ICON "system.ico" + +IDD_MAINWND DIALOGEX 0, 0, 260, 250 +STYLE WS_CAPTION | WS_POPUP | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | WS_THICKFRAME | WS_SYSMENU | WS_MAXIMIZEBOX | WS_MINIMIZEBOX +CAPTION "HandleView" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "Tasks", IDC_PROCESSLIST, "SysListView32", WS_BORDER | WS_TABSTOP | 0x00000001 | LVS_REPORT, 5, 5, 100, 200 + CONTROL "Tasks", IDC_HANDLELIST, "SysListView32", WS_BORDER | WS_TABSTOP | 0x00000001 | LVS_REPORT, 110, 5, 150, 200 + PUSHBUTTON "Refresh handles", IDC_REFRESHHANDLE, 200, 230, 80, 14, WS_CLIPSIBLINGS | WS_TABSTOP + PUSHBUTTON "Refresh processes", IDC_REFRESHPROCESS, 50, 230, 80, 14, WS_CLIPSIBLINGS | WS_TABSTOP + +END + + Added: trunk/rosapps/devutils/gdihv/handlelist.c URL:
http://svn.reactos.org/svn/reactos/trunk/rosapps/devutils/gdihv/handlelist.…
============================================================================== --- trunk/rosapps/devutils/gdihv/handlelist.c (added) +++ trunk/rosapps/devutils/gdihv/handlelist.c Fri Feb 9 02:29:24 2007 @@ -1,0 +1,177 @@ +/* + * Gdi handle viewer + * + * handlelist.c + * + * Copyright (C) 2007 Timo kreuzer <timo <dot> kreuzer <at> web.de> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "gdihv.h" + +VOID +HandleList_Create(HWND hListCtrl) +{ + LVCOLUMN column; + + column.mask = LVCF_TEXT|LVCF_FMT|LVCF_WIDTH; + column.fmt = LVCFMT_LEFT; + + column.pszText = L"Number"; + column.cx = 50; + ListView_InsertColumn(hListCtrl, 0, &column); + + column.pszText = L"Index"; + column.cx = 50; + ListView_InsertColumn(hListCtrl, 1, &column); + + column.pszText = L"Handle"; + column.cx = 90; + ListView_InsertColumn(hListCtrl, 2, &column); + + column.pszText = L"Type"; + column.cx = 90; + ListView_InsertColumn(hListCtrl, 3, &column); + + column.pszText = L"Process"; + column.cx = 90; + ListView_InsertColumn(hListCtrl, 4, &column); + + column.pszText = L"KernelData"; + column.cx = 90; + ListView_InsertColumn(hListCtrl, 5, &column); + + column.pszText = L"UserData"; + column.cx = 90; + ListView_InsertColumn(hListCtrl, 6, &column); + + HandleList_Update(hListCtrl, 0); +} + +VOID +HandleList_Update(HWND hHandleListCtrl, HANDLE ProcessId) +{ + INT i, index; + PGDI_TABLE_ENTRY pEntry; + LV_ITEM item; + TCHAR strText[80]; + TCHAR* str2; + + ListView_DeleteAllItems(hHandleListCtrl); + item.mask = LVIF_TEXT|LVIF_PARAM; + item.pszText = strText; + item.cchTextMax = 80; + for (i = 0; i<= GDI_HANDLE_COUNT; i++) + { + pEntry = &GdiHandleTable[i]; + if (pEntry->KernelData) + { + if (ProcessId == (HANDLE)-1 || ProcessId == pEntry->ProcessId) + { + index = ListView_GetItemCount(hHandleListCtrl); + item.iItem = index; + item.iSubItem = 0; + + wsprintf(strText, L"%d", index); + ListView_InsertItem(hHandleListCtrl, &item); + + wsprintf(strText, L"%d", i); + ListView_SetItemText(hHandleListCtrl, index, 1, strText); + + wsprintf(strText, L"%#08x", GDI_HANDLE_CREATE(i, pEntry->Type)); + ListView_SetItemText(hHandleListCtrl, index, 2, strText); + + str2 = GetTypeName(pEntry->Type & GDI_HANDLE_TYPE_MASK); + ListView_SetItemText(hHandleListCtrl, index, 3, str2); + + wsprintf(strText, L"%#08x", (UINT)pEntry->ProcessId); + ListView_SetItemText(hHandleListCtrl, index, 4, strText); + + wsprintf(strText, L"%#08x", (UINT)pEntry->KernelData); + ListView_SetItemText(hHandleListCtrl, index, 5, strText); + + wsprintf(strText, L"%#08x", (UINT)pEntry->UserData); + ListView_SetItemText(hHandleListCtrl, index, 6, strText); + } + } + } +} + +TCHAR* +GetTypeName(UINT Type) +{ + TCHAR* strText; + + switch (Type) + { + case GDI_OBJECT_TYPE_DC: + strText = L"DC"; + break; + case GDI_OBJECT_TYPE_REGION: + strText = L"Region"; + break; + case GDI_OBJECT_TYPE_BITMAP: + strText = L"Bitmap"; + break; + case GDI_OBJECT_TYPE_PALETTE: + strText = L"Palette"; + break; + case GDI_OBJECT_TYPE_FONT: + strText = L"Font"; + break; + case GDI_OBJECT_TYPE_BRUSH: + strText = L"Brush"; + break; + case GDI_OBJECT_TYPE_EMF: + strText = L"EMF"; + break; + case GDI_OBJECT_TYPE_PEN: + strText = L"Pen"; + break; + case GDI_OBJECT_TYPE_EXTPEN: + strText = L"ExtPen"; + break; + case GDI_OBJECT_TYPE_COLORSPACE: + strText = L"ColSpace"; + break; + case GDI_OBJECT_TYPE_METADC: + strText = L"MetaDC"; + break; + case GDI_OBJECT_TYPE_METAFILE: + strText = L"Metafile"; + break; + case GDI_OBJECT_TYPE_ENHMETAFILE: + strText = L"EMF"; + break; + case GDI_OBJECT_TYPE_ENHMETADC: + strText = L"EMDC"; + break; + case GDI_OBJECT_TYPE_MEMDC: + strText = L"MemDC"; + break; + case GDI_OBJECT_TYPE_DCE: + strText = L"DCE"; + break; + case GDI_OBJECT_TYPE_DONTCARE: + strText = L"anything"; + break; + case GDI_OBJECT_TYPE_SILENT: + default: + strText = L"unknown"; + break; + } + return strText; +} Added: trunk/rosapps/devutils/gdihv/handlelist.h URL:
http://svn.reactos.org/svn/reactos/trunk/rosapps/devutils/gdihv/handlelist.…
============================================================================== --- trunk/rosapps/devutils/gdihv/handlelist.h (added) +++ trunk/rosapps/devutils/gdihv/handlelist.h Fri Feb 9 02:29:24 2007 @@ -1,0 +1,4 @@ + +VOID HandleList_Create(HWND hListCtrl); +VOID HandleList_Update(HWND hHandleListCtrl, HANDLE ProcessID); +TCHAR* GetTypeName(UINT Type); Added: trunk/rosapps/devutils/gdihv/mainwnd.c URL:
http://svn.reactos.org/svn/reactos/trunk/rosapps/devutils/gdihv/mainwnd.c?r…
============================================================================== --- trunk/rosapps/devutils/gdihv/mainwnd.c (added) +++ trunk/rosapps/devutils/gdihv/mainwnd.c Fri Feb 9 02:29:24 2007 @@ -1,0 +1,126 @@ +/* + * Gdi handle viewer + * + * mainwnd.c + * + * Copyright (C) 2007 Timo kreuzer <timo <dot> kreuzer <at> web.de> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "gdihv.h" + +INT g_Separator; + +INT_PTR CALLBACK +MainWindow_WndProc(HWND hMainWnd, UINT message, WPARAM wParam, LPARAM lParam) +{ + switch (message) + { + case WM_INITDIALOG: + { + RECT rect; + + SendMessage(hMainWnd, WM_SETICON, ICON_BIG, (LPARAM)LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_MAIN))); + GetClientRect(hMainWnd, &rect); + g_Separator = (rect.right / 2); + HandleList_Create(GetDlgItem(hMainWnd, IDC_HANDLELIST)); + ProcessList_Create(GetDlgItem(hMainWnd, IDC_PROCESSLIST)); + MainWindow_OnSize(hMainWnd); + + break; + } + case WM_SIZE: + { + MainWindow_OnSize(hMainWnd); + break; + } + case WM_COMMAND: + { + switch (LOWORD(wParam)) + { + case IDOK: + case IDCANCEL: + { + EndDialog(hMainWnd, IDOK); + break; + } + case IDC_REFRESHHANDLE: + { + LV_ITEM item; + HWND hProcessListCtrl = GetDlgItem(hMainWnd, IDC_PROCESSLIST); + memset(&item, 0, sizeof(LV_ITEM)); + item.mask = LVIF_PARAM; + item.iItem = ListView_GetSelectionMark(hProcessListCtrl); + ListView_GetItem(hProcessListCtrl, &item); + HandleList_Update(GetDlgItem(hMainWnd, IDC_HANDLELIST), (HANDLE)item.lParam); + break; + } + case IDC_REFRESHPROCESS: + { + ProcessList_Update(GetDlgItem(hMainWnd, IDC_PROCESSLIST)); + break; + } + default: + { + return FALSE; + } + } + break; + } + case WM_NOTIFY: + { + if (((LPNMLISTVIEW)lParam)->hdr.code == LVN_ITEMCHANGED + && (((LPNMLISTVIEW)lParam)->uNewState & LVIS_SELECTED) + && !(((LPNMLISTVIEW)lParam)->uOldState & LVIS_SELECTED)) + { + LV_ITEM item; + memset(&item, 0, sizeof(LV_ITEM)); + item.mask = LVIF_PARAM; + item.iItem = ((LPNMLISTVIEW)lParam)->iItem; + ListView_GetItem(GetDlgItem(hMainWnd, IDC_PROCESSLIST), &item); + HandleList_Update(GetDlgItem(hMainWnd, IDC_HANDLELIST), (HANDLE)item.lParam); + return TRUE; + break; + } + } + default: + { + return FALSE; + } + } + return TRUE; +} + +VOID +MainWindow_OnSize(HWND hMainWnd) +{ + HWND hProcessListctrl, hHandleListCtrl, hProcessRefresh, hHandleRefresh; + RECT rect; + + hProcessListctrl = GetDlgItem(hMainWnd, IDC_PROCESSLIST); + hHandleListCtrl = GetDlgItem(hMainWnd, IDC_HANDLELIST); + hProcessRefresh = GetDlgItem(hMainWnd, IDC_REFRESHPROCESS); + hHandleRefresh = GetDlgItem(hMainWnd, IDC_REFRESHHANDLE); + + GetClientRect(hMainWnd, &rect); + +//g_Separator = (rect.right / 2); + MoveWindow(hProcessListctrl, 5, 5, g_Separator - 5, rect.bottom - 40, TRUE); + MoveWindow(hHandleListCtrl, g_Separator + 5, 5, rect.right - g_Separator - 5, rect.bottom - 40, TRUE); + MoveWindow(hProcessRefresh, g_Separator - 90, rect.bottom - 30, 90, 25, TRUE); + MoveWindow(hHandleRefresh, rect.right - 90, rect.bottom - 30, 90, 25, TRUE); + return; +} Added: trunk/rosapps/devutils/gdihv/mainwnd.h URL:
http://svn.reactos.org/svn/reactos/trunk/rosapps/devutils/gdihv/mainwnd.h?r…
============================================================================== --- trunk/rosapps/devutils/gdihv/mainwnd.h (added) +++ trunk/rosapps/devutils/gdihv/mainwnd.h Fri Feb 9 02:29:24 2007 @@ -1,0 +1,3 @@ + +INT_PTR CALLBACK MainWindow_WndProc(HWND, UINT, WPARAM, LPARAM); +VOID MainWindow_OnSize(HWND hMainWnd); Added: trunk/rosapps/devutils/gdihv/proclist.c URL:
http://svn.reactos.org/svn/reactos/trunk/rosapps/devutils/gdihv/proclist.c?…
============================================================================== --- trunk/rosapps/devutils/gdihv/proclist.c (added) +++ trunk/rosapps/devutils/gdihv/proclist.c Fri Feb 9 02:29:24 2007 @@ -1,0 +1,94 @@ +/* + * Gdi handle viewer + * + * proclist.c + * + * Copyright (C) 2007 Timo kreuzer <timo <dot> kreuzer <at> web.de> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "gdihv.h" + +VOID +ProcessList_Create(HWND hListCtrl) +{ + LVCOLUMN column; + + column.mask = LVCF_TEXT|LVCF_FMT|LVCF_WIDTH; + column.fmt = LVCFMT_LEFT; + + column.pszText = L"Process"; + column.cx = 90; + ListView_InsertColumn(hListCtrl, 0, &column); + + column.pszText = L"ProcessID"; + column.cx = 90; + ListView_InsertColumn(hListCtrl, 1, &column); + ProcessList_Update(hListCtrl); +} + +VOID +ProcessList_Update(HWND hListCtrl) +{ + LV_ITEM item; + DWORD ProcessIds[1024], BytesReturned, cProcesses; + HANDLE hProcess; + WCHAR strText[MAX_PATH] = L"<unknown>"; + INT i; + + ListView_DeleteAllItems(hListCtrl); + memset(&item, 0, sizeof(LV_ITEM)); + item.mask = LVIF_TEXT|LVIF_PARAM; + item.pszText = strText; + + /* Insert "kernel" */ + item.iItem = 0; + item.lParam = 0; + item.pszText = L"<Kernel>"; + ListView_InsertItem(hListCtrl, &item); + item.pszText = strText; + wsprintf(strText, L"%#08x", 0); + ListView_SetItemText(hListCtrl, 0, 1, strText); + + if (!EnumProcesses(ProcessIds, sizeof(ProcessIds), &BytesReturned )) + { + return; + } + cProcesses = BytesReturned / sizeof(DWORD); + if (cProcesses == 0) + { + return; + } + for (i = 0; i < cProcesses; i++) + { + wsprintf(strText, L"<unknown>"); + item.lParam = ProcessIds[i]; + item.iItem = ListView_GetItemCount(hListCtrl); + + hProcess = 0; + /* FIXME: HACK: ROS crashes when using OpenProcess with PROCESS_VM_READ */ +// hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, ProcessIds[i]); + if (hProcess) + { + GetModuleBaseName(hProcess, NULL, (LPWSTR)strText, MAX_PATH ); + CloseHandle(hProcess); + } + ListView_InsertItem(hListCtrl, &item); + + wsprintf(strText, L"%#08x", ProcessIds[i]); + ListView_SetItemText(hListCtrl, item.iItem, 1, strText); + } +} Added: trunk/rosapps/devutils/gdihv/proclist.h URL:
http://svn.reactos.org/svn/reactos/trunk/rosapps/devutils/gdihv/proclist.h?…
============================================================================== --- trunk/rosapps/devutils/gdihv/proclist.h (added) +++ trunk/rosapps/devutils/gdihv/proclist.h Fri Feb 9 02:29:24 2007 @@ -1,0 +1,3 @@ + +VOID ProcessList_Create(HWND hListCtrl); +VOID ProcessList_Update(HWND hListCtrl); Added: trunk/rosapps/devutils/gdihv/resource.h URL:
http://svn.reactos.org/svn/reactos/trunk/rosapps/devutils/gdihv/resource.h?…
============================================================================== --- trunk/rosapps/devutils/gdihv/resource.h (added) +++ trunk/rosapps/devutils/gdihv/resource.h Fri Feb 9 02:29:24 2007 @@ -1,0 +1,8 @@ + +#define IDD_MAINWND 1000 +#define IDC_PROCESSLIST 1001 +#define IDC_HANDLELIST 1002 +#define IDC_REFRESHHANDLE 1010 +#define IDC_REFRESHPROCESS 1011 +#define IDI_MAIN 2000 +#define IDI_ARROW 2001 Added: trunk/rosapps/devutils/gdihv/system.ico URL:
http://svn.reactos.org/svn/reactos/trunk/rosapps/devutils/gdihv/system.ico?…
============================================================================== Binary file - no diff available. Propchange: trunk/rosapps/devutils/gdihv/system.ico ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream
17 years, 10 months
1
0
0
0
[spetreolle] 25754: add msacm32.drv to bootcd
by spetreolle@svn.reactos.org
Author: spetreolle Date: Thu Feb 8 20:06:48 2007 New Revision: 25754 URL:
http://svn.reactos.org/svn/reactos?rev=25754&view=rev
Log: add msacm32.drv to bootcd Modified: trunk/reactos/boot/bootdata/packages/reactos.dff Modified: trunk/reactos/boot/bootdata/packages/reactos.dff URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/bootdata/packages/rea…
============================================================================== --- trunk/reactos/boot/bootdata/packages/reactos.dff (original) +++ trunk/reactos/boot/bootdata/packages/reactos.dff Thu Feb 8 20:06:48 2007 @@ -231,6 +231,7 @@ dll\win32\vdmdbg\vdmdbg.dll 1 dll\win32\wininet\wininet.dll 1 dll\win32\winmm\winmm.dll 1 +dll\win32\winmm\wavemap\msacm32.drv 1 dll\win32\winspool\winspool.drv 1 dll\win32\wintrust\wintrust.dll 1 dll\win32\ws2_32\ws2_32.dll 1
17 years, 10 months
1
0
0
0
[spetreolle] 25753: try to load actual names for midimap.dll and msacm32.drv
by spetreolle@svn.reactos.org
Author: spetreolle Date: Thu Feb 8 20:05:15 2007 New Revision: 25753 URL:
http://svn.reactos.org/svn/reactos?rev=25753&view=rev
Log: try to load actual names for midimap.dll and msacm32.drv Modified: trunk/reactos/dll/win32/winmm/wavemap/wavemap.rbuild trunk/reactos/dll/win32/winmm/winemm.h Modified: trunk/reactos/dll/win32/winmm/wavemap/wavemap.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/winmm/wavemap/wa…
============================================================================== --- trunk/reactos/dll/win32/winmm/wavemap/wavemap.rbuild (original) +++ trunk/reactos/dll/win32/winmm/wavemap/wavemap.rbuild Thu Feb 8 20:05:15 2007 @@ -1,4 +1,4 @@ -<module name="wavemap" type="win32dll" entrypoint="0" baseaddress="${BASEADDRESS_WAVEMAP}" installbase="system32" installname="wavemap.dll" allowwarnings="true"> +<module name="wavemap" type="win32dll" entrypoint="0" extension=".drv" baseaddress="${BASEADDRESS_WAVEMAP}" installbase="system32" installname="msacm32.drv" allowwarnings="true"> <importlibrary definition="msacm.spec.def" /> <include base="wavemap">.</include> <include base="ReactOS">include/reactos/wine</include> Modified: trunk/reactos/dll/win32/winmm/winemm.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/winmm/winemm.h?r…
============================================================================== --- trunk/reactos/dll/win32/winmm/winemm.h (original) +++ trunk/reactos/dll/win32/winmm/winemm.h Thu Feb 8 20:05:15 2007 @@ -30,7 +30,7 @@ #define WINE_DEFAULT_WINMM_DRIVER "oss" #define WINE_DEFAULT_WINMM_MAPPER "msacm.drv" -#define WINE_DEFAULT_WINMM_MIDI "midimap.drv" +#define WINE_DEFAULT_WINMM_MIDI "midimap.dll" typedef DWORD (WINAPI *MessageProc16)(UINT16 wDevID, UINT16 wMsg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2); typedef DWORD (WINAPI *MessageProc32)(UINT wDevID, UINT wMsg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2);
17 years, 10 months
1
0
0
0
← Newer
1
...
15
16
17
18
19
20
21
...
27
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Results per page:
10
25
50
100
200