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
2025
April
March
February
January
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 2008
----- 2025 -----
April 2025
March 2025
February 2025
January 2025
----- 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
21 participants
460 discussions
Start a n
N
ew thread
[dchapyshev] 32344: - Synced wine head
by dchapyshev@svn.reactos.org
Author: dchapyshev Date: Wed Feb 13 18:37:13 2008 New Revision: 32344 URL:
http://svn.reactos.org/svn/reactos?rev=32344&view=rev
Log: - Synced wine head Modified: trunk/reactos/dll/win32/atl/atl_ax.c Modified: trunk/reactos/dll/win32/atl/atl_ax.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/atl/atl_ax.c?rev…
============================================================================== --- trunk/reactos/dll/win32/atl/atl_ax.c (original) +++ trunk/reactos/dll/win32/atl/atl_ax.c Wed Feb 13 18:37:13 2008 @@ -343,9 +343,9 @@ TRACE("(%p,%p,%p,%p,%p,%p)\n", This, ppFrame, ppDoc, lprcPosRect, lprcClipRect, lpFrameInfo); if ( lprcClipRect ) - memcpy(lprcClipRect, &This->size, sizeof(RECT)); + *lprcClipRect = This->size; if ( lprcPosRect ) - memcpy(lprcPosRect, &This->size, sizeof(RECT)); + *lprcPosRect = This->size; if ( ppFrame ) { @@ -958,7 +958,7 @@ else { /* FIXME - check for MSHTML: prefix! */ content = IsURL; - memcpy( &controlId, &CLSID_WebBrowser, sizeof(controlId) ); + controlId = CLSID_WebBrowser; } hRes = CoCreateInstance( &controlId, 0, CLSCTX_ALL, &IID_IOleObject,
17 years, 2 months
1
0
0
0
[dchapyshev] 32343: - Update Russian translation - Fix typos
by dchapyshev@svn.reactos.org
Author: dchapyshev Date: Wed Feb 13 18:34:50 2008 New Revision: 32343 URL:
http://svn.reactos.org/svn/reactos?rev=32343&view=rev
Log: - Update Russian translation - Fix typos Modified: trunk/reactos/dll/cpl/desk/general.c trunk/reactos/dll/cpl/desk/lang/ru-RU.rc Modified: trunk/reactos/dll/cpl/desk/general.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/general.c?rev…
============================================================================== --- trunk/reactos/dll/cpl/desk/general.c (original) +++ trunk/reactos/dll/cpl/desk/general.c Wed Feb 13 18:34:50 2008 @@ -23,9 +23,9 @@ if (hInf != INVALID_HANDLE_VALUE) { - if (SetupFindFirstLine(hInf, L"Font Sizes", NULL, &Context)) + if (SetupFindFirstLine(hInf, _T("Font Sizes"), NULL, &Context)) { - if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\FontDPI", + if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\FontDPI"), 0, KEY_READ, &hKey) == ERROR_SUCCESS) for (;;) { @@ -34,14 +34,14 @@ if (SetupGetStringField(&Context, 0, Desc, sizeof(Desc), NULL) && SetupGetIntField(&Context, 1, &ci)) { - _stprintf(Desc, L"%s (%d DPI)", Desc, ci); + _stprintf(Desc, _T("%s (%d DPI)"), Desc, ci); i = SendMessage(hFontSize, CB_ADDSTRING, 0, (LPARAM)Desc); if (i != CB_ERR) SendMessage(hFontSize, CB_SETITEMDATA, (WPARAM)i, (LPARAM)ci); DWORD dwSize = MAX_PATH, dwValue, dwType = REG_DWORD; - if (RegQueryValueEx(hKey, L"LogPixels", NULL, + if (RegQueryValueEx(hKey, _T("LogPixels"), NULL, &dwType, (LPBYTE)&dwValue, &dwSize) == ERROR_SUCCESS) { if ((int)dwValue == ci) @@ -69,13 +69,13 @@ { HKEY hKey; - if (RegOpenKeyEx(HKEY_CURRENT_USER, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Controls Folder\\Display", + if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Controls Folder\\Display"), 0, KEY_READ, &hKey) == ERROR_SUCCESS) { TCHAR szBuf[64]; DWORD dwSize = 64; - if (RegQueryValueEx(hKey, L"DynaSettingsChange", 0, NULL, + if (RegQueryValueEx(hKey, _T("DynaSettingsChange"), 0, NULL, (LPBYTE)szBuf, &dwSize) == ERROR_SUCCESS); switch (_ttoi(szBuf)) Modified: trunk/reactos/dll/cpl/desk/lang/ru-RU.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/lang/ru-RU.rc…
============================================================================== --- trunk/reactos/dll/cpl/desk/lang/ru-RU.rc (original) +++ trunk/reactos/dll/cpl/desk/lang/ru-RU.rc Wed Feb 13 18:34:50 2008 @@ -52,7 +52,7 @@ CONTROL "", IDC_APPEARANCE_PREVIEW, "PreviewWndClass", WS_VISIBLE | WS_BORDER, 7, 7, 232, 120 LTEXT "Öâåòîâàÿ ñõåìà:", IDC_STATIC, 7, 139, 154, 10 - COMBOBOX IDC_APPEARANCE_COLORSCHEME, 7, 150, 155, 90 , CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_APPEARANCE_COLORSCHEME, 7, 150, 155, 200 , CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP PUSHBUTTON "Äîïîëíèòåëüíî", IDC_APPEARANCE_ADVANCED, 168, 150, 70, 14 END @@ -66,7 +66,7 @@ WS_VISIBLE | WS_BORDER, 7, 7, 232, 120 LTEXT "Ýëåìåíò:", 8, 5, 160, 50, 9 - COMBOBOX IDC_ADVAPPEARANCE_ELEMENT, 5, 170, 130, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_CHILD | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_ADVAPPEARANCE_ELEMENT, 5, 170, 130, 200, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_CHILD | WS_VSCROLL | WS_TABSTOP LTEXT "&Ðàçìåð:", IDC_ADVAPPEARANCE_SIZE_T, 142, 160, 39, 9 EDITTEXT IDC_ADVAPPEARANCE_SIZE_E, 142, 170, 38, 13, ES_RIGHT | WS_GROUP @@ -143,19 +143,19 @@ BEGIN POPUP "" BEGIN - MENUITEM "&Attached", ID_MENU_ATTACHED - MENUITEM "&Primary", ID_MENU_PRIMARY + MENUITEM "&Ïðèñîåäèíåííûé", ID_MENU_ATTACHED + MENUITEM "&Îñíîâíîé", ID_MENU_PRIMARY MENUITEM SEPARATOR - MENUITEM "&Identify", ID_MENU_IDENTIFY - MENUITEM "&Ñâîéñòâà", ID_MENU_PROPERTIES + MENUITEM "Îïð&åäåëåíèå", ID_MENU_IDENTIFY + MENUITEM "Ñâî&éñòâà", ID_MENU_PROPERTIES END END STRINGTABLE BEGIN - IDS_MULTIPLEMONITORS "(Íåñêîëüêî ýêðàíîâ)" - IDS_UNKNOWNMONITOR "(Íåèçâåñòíûé ýêðàí)" - IDS_ADVANCEDTITLEFMT "%s è %s" + IDS_MULTIPLEMONITORS "(íåñêîëüêî ýêðàíîâ)" + IDS_UNKNOWNMONITOR "(íåèçâåñòíûé ýêðàí)" + IDS_ADVANCEDTITLEFMT "%s è %s" END STRINGTABLE @@ -181,7 +181,7 @@ STRINGTABLE DISCARDABLE BEGIN IDS_BACKGROUND_COMDLG_FILTER "Èçîáðàæåíèÿ (*.bmp;*.dib)\000*.bmp;*.dib" - IDS_SUPPORTED_EXT "*.bmp;*.dib" + IDS_SUPPORTED_EXT "*.bmp;*.dib" END STRINGTABLE DISCARDABLE @@ -197,25 +197,25 @@ STRINGTABLE DISCARDABLE BEGIN IDS_ELEMENT_1 "Ðàáî÷èé ñòîë" - IDS_ELEMENT_2 "Çàãîëîâîê àêòèâíîãî îêíà" - IDS_ELEMENT_3 "Ãðàíèöà íåàêòèâíîãî îêíà" - IDS_ELEMENT_4 "Ãðàíèöà àêòèâíîãî îêíà" - IDS_ELEMENT_5 "Ãðàíèöà àêòèâíîãî îêíà" + IDS_ELEMENT_2 "Çàãîëîâîê íåàêòèâíûõ îêîí" + IDS_ELEMENT_3 "Ãðàíèöà íåàêòèâíûõ îêîí" + IDS_ELEMENT_4 "Çàãîëîâîê àêòèâíûõ îêîí" + IDS_ELEMENT_5 "Ãðàíèöà àêòèâíûõ îêîí" IDS_ELEMENT_6 "Ìåíþ" - IDS_ELEMENT_7 "Âñïëûâàþùàÿ ïîäñêàçêà" + IDS_ELEMENT_7 "Âûëåäåííûå ýëåìåíòû" IDS_ELEMENT_8 "Îêíà" IDS_ELEMENT_9 "Ïîëîñà ïðîêðóòêè" IDS_ELEMENT_10 "Ðåëüåôíûå îáúåêòû" IDS_ELEMENT_11 "Öâåò çàãîëîâêà" - IDS_ELEMENT_12 "Çíà÷îê çàãîëîâêà" - IDS_ELEMENT_13 "Captionbar" - IDS_ELEMENT_14 "Âûäåëåííûé ïóíêò ìåíþ" + IDS_ELEMENT_12 "Èêîíêà çàãîëîâêà" + IDS_ELEMENT_13 "Ñòðîêà çàãîëîâêà" + IDS_ELEMENT_14 "Íåàêòèâíûå ïóíêòû ìåíþ" IDS_ELEMENT_15 "Äèàëîã" IDS_ELEMENT_16 "Scrollbar controls" IDS_ELEMENT_17 "Ðàáî÷àÿ îáëàñòü ïðèëîæåíèÿ" IDS_ELEMENT_18 "Small captionbar" IDS_ELEMENT_19 "Èíòåðâàë ìåæäó çíà÷êàìè (ãîð.)" IDS_ELEMENT_20 "Èíòåðâàë ìåæäó çíà÷êàìè (âåðò.)" - IDS_ELEMENT_21 "Quickinfo" + IDS_ELEMENT_21 "Âñïëûâàþùàÿ ïîäñêàçêà" IDS_ELEMENT_22 "Çíà÷îê" END
17 years, 2 months
1
0
0
0
[ros-arm-bringup] 32342: Convert all Mm ASM stubs to C stubs in mm/arm/stubs.c. Now we can see what functions are called.
by ros-arm-bringup@svn.reactos.org
Author: ros-arm-bringup Date: Wed Feb 13 09:43:36 2008 New Revision: 32342 URL:
http://svn.reactos.org/svn/reactos?rev=32342&view=rev
Log: Convert all Mm ASM stubs to C stubs in mm/arm/stubs.c. Now we can see what functions are called. Modified: trunk/reactos/ntoskrnl/ke/arm/stubs_asm.s trunk/reactos/ntoskrnl/mm/arm/stubs.c Modified: trunk/reactos/ntoskrnl/ke/arm/stubs_asm.s URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/arm/stubs_asm.…
============================================================================== --- trunk/reactos/ntoskrnl/ke/arm/stubs_asm.s (original) +++ trunk/reactos/ntoskrnl/ke/arm/stubs_asm.s Wed Feb 13 09:43:36 2008 @@ -145,39 +145,6 @@ GENERATE_ARM_STUB KiComputeTimerTableIndex GENERATE_ARM_STUB CmpInitializeMachineDependentConfiguration - -// -// Memory Manager Arch-Specific -// -GENERATE_ARM_STUB MmGetPhysicalAddress -GENERATE_ARM_STUB MmSetDirtyPage -GENERATE_ARM_STUB MmSetCleanPage -GENERATE_ARM_STUB MmIsDirtyPage -GENERATE_ARM_STUB MmEnableVirtualMapping -GENERATE_ARM_STUB MmCreatePageFileMapping -GENERATE_ARM_STUB MmDeleteVirtualMapping -GENERATE_ARM_STUB MmDisableVirtualMapping -GENERATE_ARM_STUB MmIsPageSwapEntry -GENERATE_ARM_STUB MmSetPageProtect -GENERATE_ARM_STUB MmIsPagePresent -GENERATE_ARM_STUB MmCreateHyperspaceMapping -GENERATE_ARM_STUB MmDeleteHyperspaceMapping -GENERATE_ARM_STUB MmDeletePageFileMapping -GENERATE_ARM_STUB MmRawDeleteVirtualMapping -GENERATE_ARM_STUB MmCreateVirtualMappingUnsafe -GENERATE_ARM_STUB MmInitializeHandBuiltProcess -GENERATE_ARM_STUB MmCreateProcessAddressSpace -GENERATE_ARM_STUB Mmi386ReleaseMmInfo -GENERATE_ARM_STUB MmGetPfnForProcess -GENERATE_ARM_STUB MmCreateVirtualMapping -GENERATE_ARM_STUB MiInitPageDirectoryMap -GENERATE_ARM_STUB MmGetPageDirectory -GENERATE_ARM_STUB MmInitGlobalKernelPageDirectory -GENERATE_ARM_STUB MmDeletePageTable -GENERATE_ARM_STUB MmGetPageProtect -GENERATE_ARM_STUB MmCreateVirtualMappingForKernel -GENERATE_ARM_STUB MiGetUserPageDirectoryCount - // // Traps, Debugging and Execeptions // Modified: trunk/reactos/ntoskrnl/mm/arm/stubs.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/arm/stubs.c?re…
============================================================================== --- trunk/reactos/ntoskrnl/mm/arm/stubs.c (original) +++ trunk/reactos/ntoskrnl/mm/arm/stubs.c Wed Feb 13 09:43:36 2008 @@ -31,3 +31,355 @@ UNIMPLEMENTED; return; } + +NTSTATUS +NTAPI +Mmi386ReleaseMmInfo(IN PEPROCESS Process) +{ + // + // TODO + // + UNIMPLEMENTED; + return 0; +} + +NTSTATUS +NTAPI +MmInitializeHandBuiltProcess(IN PEPROCESS Process, + IN PLARGE_INTEGER DirectoryTableBase) +{ + // + // Share the directory base with the idle process + // + *DirectoryTableBase = PsGetCurrentProcess()->Pcb.DirectoryTableBase; + + // + // Initialize the Addresss Space + // + MmInitializeAddressSpace(Process, (PMADDRESS_SPACE)&Process->VadRoot); + + // + // The process now has an address space + // + Process->HasAddressSpace = TRUE; + return STATUS_SUCCESS; +} + +PULONG +MmGetPageDirectory(VOID) +{ + // + // TODO + // + UNIMPLEMENTED; + return 0; +} + + +BOOLEAN +NTAPI +MmCreateProcessAddressSpace(IN ULONG MinWs, + IN PEPROCESS Process, + IN PLARGE_INTEGER DirectoryTableBase) +{ + // + // TODO + // + UNIMPLEMENTED; + return 0; +} + +VOID +NTAPI +MmDeletePageTable(IN PEPROCESS Process, + IN PVOID Address) +{ + // + // TODO + // + UNIMPLEMENTED; +} + +PFN_TYPE +NTAPI +MmGetPfnForProcess(IN PEPROCESS Process, + IN PVOID Address) +{ + PFN_TYPE Pfn = {0}; + + // + // TODO + // + UNIMPLEMENTED; + return Pfn; +} + +VOID +NTAPI +MmDisableVirtualMapping(IN PEPROCESS Process, + IN PVOID Address, + OUT PBOOLEAN WasDirty, + OUT PPFN_TYPE Page) +{ + // + // TODO + // + UNIMPLEMENTED; +} + +VOID +NTAPI +MmRawDeleteVirtualMapping(IN PVOID Address) +{ + // + // TODO + // + UNIMPLEMENTED; +} + +VOID +NTAPI +MmDeleteVirtualMapping(IN PEPROCESS Process, + IN PVOID Address, + IN BOOLEAN FreePage, + OUT PBOOLEAN WasDirty, + OUT PPFN_TYPE Page) +{ + // + // TODO + // + UNIMPLEMENTED; +} + +VOID +NTAPI +MmDeletePageFileMapping(IN PEPROCESS Process, + IN PVOID Address, + IN SWAPENTRY *SwapEntry) +{ + // + // TODO + // + UNIMPLEMENTED; +} + +BOOLEAN +NTAPI +MmIsDirtyPage(IN PEPROCESS Process, + IN PVOID Address) +{ + // + // TODO + // + UNIMPLEMENTED; + return 0; +} + +VOID +NTAPI +MmSetCleanPage(IN PEPROCESS Process, + IN PVOID Address) +{ + // + // TODO + // + UNIMPLEMENTED; +} + +VOID +NTAPI +MmSetDirtyPage(IN PEPROCESS Process, + IN PVOID Address) +{ + // + // TODO + // + UNIMPLEMENTED; +} + +VOID +NTAPI +MmEnableVirtualMapping(IN PEPROCESS Process, + IN PVOID Address) +{ + // + // TODO + // + UNIMPLEMENTED; +} + +BOOLEAN +NTAPI +MmIsPagePresent(IN PEPROCESS Process, + IN PVOID Address) +{ + // + // TODO + // + UNIMPLEMENTED; + return 0; +} + +BOOLEAN +NTAPI +MmIsPageSwapEntry(IN PEPROCESS Process, + IN PVOID Address) +{ + // + // TODO + // + UNIMPLEMENTED; + return 0; +} + +NTSTATUS +NTAPI +MmCreateVirtualMappingForKernel(IN PVOID Address, + IN ULONG flProtect, + IN PPFN_TYPE Pages, + IN ULONG PageCount) +{ + // + // TODO + // + UNIMPLEMENTED; + return 0; +} + +NTSTATUS +NTAPI +MmCreatePageFileMapping(IN PEPROCESS Process, + IN PVOID Address, + IN SWAPENTRY SwapEntry) +{ + // + // TODO + // + UNIMPLEMENTED; + return 0; +} + +NTSTATUS +NTAPI +MmCreateVirtualMappingUnsafe(IN PEPROCESS Process, + IN PVOID Address, + IN ULONG flProtect, + IN PPFN_TYPE Pages, + IN ULONG PageCount) +{ + // + // TODO + // + UNIMPLEMENTED; + return 0; +} + +NTSTATUS +NTAPI +MmCreateVirtualMapping(IN PEPROCESS Process, + IN PVOID Address, + IN ULONG flProtect, + IN PPFN_TYPE Pages, + IN ULONG PageCount) +{ + // + // TODO + // + UNIMPLEMENTED; + return 0; +} + +ULONG +NTAPI +MmGetPageProtect(IN PEPROCESS Process, + IN PVOID Address) +{ + // + // TODO + // + UNIMPLEMENTED; + return 0; +} + +VOID +NTAPI +MmSetPageProtect(IN PEPROCESS Process, + IN PVOID Address, + IN ULONG flProtect) +{ + // + // TODO + // + UNIMPLEMENTED; +} + +/* + * @implemented + */ +PHYSICAL_ADDRESS +NTAPI +MmGetPhysicalAddress(IN PVOID vaddr) +{ + PHYSICAL_ADDRESS p; + + // + // TODO + // + UNIMPLEMENTED; + return p; +} + +PVOID +NTAPI +MmCreateHyperspaceMapping(IN PFN_TYPE Page) +{ + // + // TODO + // + UNIMPLEMENTED; + return 0; +} + +PFN_TYPE +NTAPI +MmDeleteHyperspaceMapping(IN PVOID Address) +{ + PFN_TYPE Pfn = {0}; + + // + // TODO + // + UNIMPLEMENTED; + return Pfn; +} + +VOID +NTAPI +MmInitGlobalKernelPageDirectory(VOID) +{ + // + // TODO + // + UNIMPLEMENTED; +} + +ULONG +NTAPI +MiGetUserPageDirectoryCount(VOID) +{ + // + // TODO + // + UNIMPLEMENTED; + return 0; +} + +VOID +NTAPI +MiInitPageDirectoryMap(VOID) +{ + // + // TODO + // + UNIMPLEMENTED; +}
17 years, 2 months
1
0
0
0
[ros-arm-bringup] 32341: Add /arm tree for Memory Manager and stub MmUpdatePageDir in C. Add exp.c for ARM. Stub out KeContextToTrapFrame in C. Add thrdini.c for ARM and implement KeArmInitThreadWithContext -- may require changes if the exception frame structure isn't preserving all we need. Stub out KiThreadStartup in C.
by ros-arm-bringup@svn.reactos.org
Author: ros-arm-bringup Date: Wed Feb 13 08:16:14 2008 New Revision: 32341 URL:
http://svn.reactos.org/svn/reactos?rev=32341&view=rev
Log: Add /arm tree for Memory Manager and stub MmUpdatePageDir in C. Add exp.c for ARM. Stub out KeContextToTrapFrame in C. Add thrdini.c for ARM and implement KeArmInitThreadWithContext -- may require changes if the exception frame structure isn't preserving all we need. Stub out KiThreadStartup in C. Added: trunk/reactos/ntoskrnl/ke/arm/exp.c (with props) trunk/reactos/ntoskrnl/ke/arm/thrdini.c (with props) trunk/reactos/ntoskrnl/mm/arm/ trunk/reactos/ntoskrnl/mm/arm/stubs.c (with props) Modified: trunk/reactos/ntoskrnl/ke/arm/stubs_asm.s trunk/reactos/ntoskrnl/ntoskrnl.rbuild Added: trunk/reactos/ntoskrnl/ke/arm/exp.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/arm/exp.c?rev=…
============================================================================== --- trunk/reactos/ntoskrnl/ke/arm/exp.c (added) +++ trunk/reactos/ntoskrnl/ke/arm/exp.c Wed Feb 13 08:16:14 2008 @@ -1,0 +1,30 @@ +/* + * PROJECT: ReactOS Kernel + * LICENSE: GPL - See COPYING in the top level directory + * FILE: ntoskrnl/ke/arm/exp.c + * PURPOSE: Implements exception helper routines for ARM machines + * PROGRAMMERS: ReactOS Portable Systems Group + */ + +/* INCLUDES *******************************************************************/ + +#include <ntoskrnl.h> +#define NDEBUG +#include <debug.h> + +/* GLOBALS ********************************************************************/ + + +/* FUNCTIONS ******************************************************************/ + +VOID +NTAPI +KeContextToTrapFrame(IN PCONTEXT Context, + IN OUT PKEXCEPTION_FRAME ExceptionFrame, + IN OUT PKTRAP_FRAME TrapFrame, + IN ULONG ContextFlags, + IN KPROCESSOR_MODE PreviousMode) +{ + UNIMPLEMENTED; + return; +} Propchange: trunk/reactos/ntoskrnl/ke/arm/exp.c ------------------------------------------------------------------------------ svn:eol-style = native Propchange: trunk/reactos/ntoskrnl/ke/arm/exp.c ------------------------------------------------------------------------------ svn:eol-type = native Propchange: trunk/reactos/ntoskrnl/ke/arm/exp.c ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: trunk/reactos/ntoskrnl/ke/arm/stubs_asm.s URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/arm/stubs_asm.…
============================================================================== --- trunk/reactos/ntoskrnl/ke/arm/stubs_asm.s (original) +++ trunk/reactos/ntoskrnl/ke/arm/stubs_asm.s Wed Feb 13 08:16:14 2008 @@ -1,7 +1,8 @@ #include <internal/arm/asmmacro.S> -GENERATE_ARM_STUB KiSwapContext -GENERATE_ARM_STUB DbgBreakPointWithStatus +// +// Interlocked APIs +// GENERATE_ARM_STUB ExInterlockedAddLargeInteger GENERATE_ARM_STUB ExInterlockedAddLargeStatistic GENERATE_ARM_STUB ExInterlockedAddUlong @@ -37,6 +38,66 @@ GENERATE_ARM_STUB InterlockedIncrement GENERATE_ARM_STUB InterlockedPopEntrySList GENERATE_ARM_STUB InterlockedPushEntrySList + +// +// Port I/O and Register Access +// +GENERATE_ARM_STUB READ_REGISTER_BUFFER_UCHAR +GENERATE_ARM_STUB READ_REGISTER_BUFFER_ULONG +GENERATE_ARM_STUB READ_REGISTER_BUFFER_USHORT +GENERATE_ARM_STUB READ_REGISTER_UCHAR +GENERATE_ARM_STUB READ_REGISTER_ULONG +GENERATE_ARM_STUB READ_REGISTER_USHORT +GENERATE_ARM_STUB WRITE_REGISTER_BUFFER_UCHAR +GENERATE_ARM_STUB WRITE_REGISTER_BUFFER_ULONG +GENERATE_ARM_STUB WRITE_REGISTER_BUFFER_USHORT +GENERATE_ARM_STUB WRITE_REGISTER_UCHAR +GENERATE_ARM_STUB WRITE_REGISTER_ULONG +GENERATE_ARM_STUB WRITE_REGISTER_USHORT + +// +// CRT APIs implemented in ASM +// +GENERATE_ARM_STUB _alldiv +GENERATE_ARM_STUB _alldvrm +GENERATE_ARM_STUB _allmul +GENERATE_ARM_STUB _alloca_probe +GENERATE_ARM_STUB _allrem +GENERATE_ARM_STUB _allshl +GENERATE_ARM_STUB _allshr +GENERATE_ARM_STUB _aulldiv +GENERATE_ARM_STUB _aulldvrm +GENERATE_ARM_STUB _aullrem +GENERATE_ARM_STUB _aullshr + +// +// RTL CRT-like APIs implemented in ASM +// +GENERATE_ARM_STUB RtlCompareMemory +GENERATE_ARM_STUB RtlCompareMemoryUlong +GENERATE_ARM_STUB RtlFillMemory +GENERATE_ARM_STUB RtlFillMemoryUlong +GENERATE_ARM_STUB RtlMoveMemory +GENERATE_ARM_STUB RtlPrefetchMemoryNonTemporal +GENERATE_ARM_STUB RtlUlongByteSwap +GENERATE_ARM_STUB RtlUlonglongByteSwap +GENERATE_ARM_STUB RtlUshortByteSwap +GENERATE_ARM_STUB RtlZeroMemory + +// +// Exceptions +// +GENERATE_ARM_STUB _abnormal_termination +GENERATE_ARM_STUB _except_handler2 +GENERATE_ARM_STUB _except_handler3 +GENERATE_ARM_STUB _global_unwind2 +GENERATE_ARM_STUB _local_unwind2 + +// +// Exported Ke Arch-Specific APIs +// +GENERATE_ARM_STUB KiSwapContext +GENERATE_ARM_STUB DbgBreakPointWithStatus GENERATE_ARM_STUB Ke386CallBios GENERATE_ARM_STUB KeConnectInterrupt GENERATE_ARM_STUB KeDcacheFlushCount @@ -62,69 +123,33 @@ GENERATE_ARM_STUB Kei386EoiHelper GENERATE_ARM_STUB KiCoprocessorError GENERATE_ARM_STUB KiDispatchInterrupt -GENERATE_ARM_STUB KiApcInterrupt -GENERATE_ARM_STUB KiPassiveRelease -GENERATE_ARM_STUB KiInterruptTemplate -GENERATE_ARM_STUB KiUnexpectedInterrupt -GENERATE_ARM_STUB MmGetPhysicalAddress -GENERATE_ARM_STUB NtVdmControl -GENERATE_ARM_STUB READ_REGISTER_BUFFER_UCHAR -GENERATE_ARM_STUB READ_REGISTER_BUFFER_ULONG -GENERATE_ARM_STUB READ_REGISTER_BUFFER_USHORT -GENERATE_ARM_STUB READ_REGISTER_UCHAR -GENERATE_ARM_STUB READ_REGISTER_ULONG -GENERATE_ARM_STUB READ_REGISTER_USHORT -GENERATE_ARM_STUB RtlCaptureContext -GENERATE_ARM_STUB RtlCompareMemory -GENERATE_ARM_STUB RtlCompareMemoryUlong -GENERATE_ARM_STUB RtlFillMemory -GENERATE_ARM_STUB RtlFillMemoryUlong -GENERATE_ARM_STUB RtlGetCallersAddress -GENERATE_ARM_STUB RtlMoveMemory -GENERATE_ARM_STUB RtlPrefetchMemoryNonTemporal -GENERATE_ARM_STUB RtlUlongByteSwap -GENERATE_ARM_STUB RtlUlonglongByteSwap -GENERATE_ARM_STUB RtlUnwind -GENERATE_ARM_STUB RtlUshortByteSwap -GENERATE_ARM_STUB RtlZeroMemory -GENERATE_ARM_STUB WRITE_REGISTER_BUFFER_UCHAR -GENERATE_ARM_STUB WRITE_REGISTER_BUFFER_ULONG -GENERATE_ARM_STUB WRITE_REGISTER_BUFFER_USHORT -GENERATE_ARM_STUB WRITE_REGISTER_UCHAR -GENERATE_ARM_STUB WRITE_REGISTER_ULONG -GENERATE_ARM_STUB WRITE_REGISTER_USHORT -GENERATE_ARM_STUB _abnormal_termination -GENERATE_ARM_STUB _alldiv -GENERATE_ARM_STUB _alldvrm -GENERATE_ARM_STUB _allmul -GENERATE_ARM_STUB _alloca_probe -GENERATE_ARM_STUB _allrem -GENERATE_ARM_STUB _allshl -GENERATE_ARM_STUB _allshr -GENERATE_ARM_STUB _aulldiv -GENERATE_ARM_STUB _aulldvrm -GENERATE_ARM_STUB _aullrem -GENERATE_ARM_STUB _aullshr -GENERATE_ARM_STUB _except_handler2 -GENERATE_ARM_STUB _except_handler3 -GENERATE_ARM_STUB _global_unwind2 -GENERATE_ARM_STUB _local_unwind2 -GENERATE_ARM_STUB KiSaveProcessorControlState -GENERATE_ARM_STUB KiInitializeUserApc -GENERATE_ARM_STUB KeDisableInterrupts -GENERATE_ARM_STUB KeContextToTrapFrame -GENERATE_ARM_STUB KiDispatchException GENERATE_ARM_STUB NtSetLdtEntries GENERATE_ARM_STUB NtRaiseException GENERATE_ARM_STUB NtCallbackReturn GENERATE_ARM_STUB NtContinue +GENERATE_ARM_STUB NtVdmControl +GENERATE_ARM_STUB RtlCreateUserThread +GENERATE_ARM_STUB RtlInitializeContext + +// +// Internal Ke Arch-Specific Helpers +// +GENERATE_ARM_STUB KiSaveProcessorControlState +GENERATE_ARM_STUB KiInitializeUserApc +GENERATE_ARM_STUB KeDisableInterrupts +GENERATE_ARM_STUB KiDispatchException GENERATE_ARM_STUB KiSwapProcess -GENERATE_ARM_STUB MmUpdatePageDir -GENERATE_ARM_STUB KeArmInitThreadWithContext -GENERATE_ARM_STUB MmGetPfnForProcess -GENERATE_ARM_STUB MmCreateVirtualMapping +GENERATE_ARM_STUB KeI386VdmInitialize +GENERATE_ARM_STUB KeSwitchKernelStack +GENERATE_ARM_STUB KiInitMachineDependent +GENERATE_ARM_STUB KiComputeTimerTableIndex GENERATE_ARM_STUB CmpInitializeMachineDependentConfiguration -GENERATE_ARM_STUB KeI386VdmInitialize + + +// +// Memory Manager Arch-Specific +// +GENERATE_ARM_STUB MmGetPhysicalAddress GENERATE_ARM_STUB MmSetDirtyPage GENERATE_ARM_STUB MmSetCleanPage GENERATE_ARM_STUB MmIsDirtyPage @@ -143,13 +168,8 @@ GENERATE_ARM_STUB MmInitializeHandBuiltProcess GENERATE_ARM_STUB MmCreateProcessAddressSpace GENERATE_ARM_STUB Mmi386ReleaseMmInfo -GENERATE_ARM_STUB RtlCreateUserThread -GENERATE_ARM_STUB RtlInitializeContext -GENERATE_ARM_STUB RtlpGetExceptionAddress -GENERATE_ARM_STUB RtlDispatchException -GENERATE_ARM_STUB DebugService2 -GENERATE_ARM_STUB KdpGdbStubInit -GENERATE_ARM_STUB KeSwitchKernelStack +GENERATE_ARM_STUB MmGetPfnForProcess +GENERATE_ARM_STUB MmCreateVirtualMapping GENERATE_ARM_STUB MiInitPageDirectoryMap GENERATE_ARM_STUB MmGetPageDirectory GENERATE_ARM_STUB MmInitGlobalKernelPageDirectory @@ -157,12 +177,20 @@ GENERATE_ARM_STUB MmGetPageProtect GENERATE_ARM_STUB MmCreateVirtualMappingForKernel GENERATE_ARM_STUB MiGetUserPageDirectoryCount + +// +// Traps, Debugging and Execeptions +// +GENERATE_ARM_STUB KiApcInterrupt +GENERATE_ARM_STUB KiPassiveRelease +GENERATE_ARM_STUB KiInterruptTemplate +GENERATE_ARM_STUB KiUnexpectedInterrupt +GENERATE_ARM_STUB RtlCaptureContext +GENERATE_ARM_STUB RtlGetCallersAddress +GENERATE_ARM_STUB RtlUnwind +GENERATE_ARM_STUB RtlpGetExceptionAddress +GENERATE_ARM_STUB RtlDispatchException +GENERATE_ARM_STUB DebugService2 GENERATE_ARM_STUB RtlpGetStackLimits -GENERATE_ARM_STUB KiInitMachineDependent -GENERATE_ARM_STUB KiComputeTimerTableIndex -GENERATE_ARM_STUB _SEHCurrentRegistration -GENERATE_ARM_STUB _SEHUnregisterFrame -GENERATE_ARM_STUB _SEHRegisterFrame -GENERATE_ARM_STUB _SEHCleanHandlerEnvironment -GENERATE_ARM_STUB _SEHGlobalUnwind +GENERATE_ARM_STUB KdpGdbStubInit Added: trunk/reactos/ntoskrnl/ke/arm/thrdini.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/arm/thrdini.c?…
============================================================================== --- trunk/reactos/ntoskrnl/ke/arm/thrdini.c (added) +++ trunk/reactos/ntoskrnl/ke/arm/thrdini.c Wed Feb 13 08:16:14 2008 @@ -1,0 +1,141 @@ +/* + * PROJECT: ReactOS Kernel + * LICENSE: GPL - See COPYING in the top level directory + * FILE: ntoskrnl/ke/arm/thrdini.c + * PURPOSE: Implements thread context setup and startup for ARM machines + * PROGRAMMERS: ReactOS Portable Systems Group + */ + +/* INCLUDES *******************************************************************/ + +#include <ntoskrnl.h> +#define NDEBUG +#include <debug.h> + +/* GLOBALS ********************************************************************/ + +typedef struct _KUINIT_FRAME +{ + KEXCEPTION_FRAME CtxSwitchFrame; + KEXCEPTION_FRAME ExceptionFrame; + KTRAP_FRAME TrapFrame; +} KUINIT_FRAME, *PKUINIT_FRAME; + +typedef struct _KKINIT_FRAME +{ + KEXCEPTION_FRAME CtxSwitchFrame; +} KKINIT_FRAME, *PKKINIT_FRAME; + +/* FUNCTIONS ******************************************************************/ + +VOID +NTAPI +KiThreadStartup(IN PKSYSTEM_ROUTINE SystemRoutine, + IN PKSTART_ROUTINE StartRoutine, + IN PVOID StartContext, + IN BOOLEAN UserThread, + IN KTRAP_FRAME TrapFrame) +{ + UNIMPLEMENTED; + return; +} + +VOID +NTAPI +KeArmInitThreadWithContext(IN PKTHREAD Thread, + IN PKSYSTEM_ROUTINE SystemRoutine, + IN PKSTART_ROUTINE StartRoutine, + IN PVOID StartContext, + IN PCONTEXT ContextPointer) +{ + PKTRAP_FRAME TrapFrame; + PKEXCEPTION_FRAME ExceptionFrame = NULL, CtxSwitchFrame; + + // + // Check if this is a user thread + // + if (ContextPointer) + { + // + // Setup the initial frame + // + PKUINIT_FRAME InitFrame; + InitFrame = (PKUINIT_FRAME)((ULONG_PTR)Thread->InitialStack - + sizeof(KUINIT_FRAME)); + + // + // Setup the Trap Frame and Exception frame + // + TrapFrame = &InitFrame->TrapFrame; + ExceptionFrame = &InitFrame->ExceptionFrame; + + /// + // Zero out the trap frame and exception frame + // + RtlZeroMemory(TrapFrame, sizeof(KTRAP_FRAME)); + RtlZeroMemory(ExceptionFrame, sizeof(KEXCEPTION_FRAME)); + + // + // Set up a trap frame from the context + // + KeContextToTrapFrame(ContextPointer, + ExceptionFrame, + TrapFrame, + ContextPointer->ContextFlags | CONTEXT_CONTROL, + UserMode); + + // + // Set the previous mode as user + // + TrapFrame->PreviousMode = UserMode; + Thread->PreviousMode = UserMode; + + // + // Clear the return address + // + ExceptionFrame->Lr = 0; + + // + // Context switch frame to setup below + // + CtxSwitchFrame = &InitFrame->CtxSwitchFrame; + } + else + { + // + // Set up the Initial Frame for the system thread + // + PKKINIT_FRAME InitFrame; + InitFrame = (PKKINIT_FRAME)((ULONG_PTR)Thread->InitialStack - + sizeof(KKINIT_FRAME)); + + // + // Set the previous mode as kernel + // + Thread->PreviousMode = KernelMode; + + // + // Context switch frame to setup below + // + CtxSwitchFrame = &InitFrame->CtxSwitchFrame; + } + + // + // Now setup the context switch frame + // + CtxSwitchFrame->SwapReturn = (ULONG)KiThreadStartup; + CtxSwitchFrame->R11 = (ULONG)(ExceptionFrame ? ExceptionFrame : CtxSwitchFrame); + + // + // Set the parameters + // + CtxSwitchFrame->R4 = (ULONG)ContextPointer; + CtxSwitchFrame->R5 = (ULONG)StartContext; + CtxSwitchFrame->R6 = (ULONG)StartRoutine; + CtxSwitchFrame->R7 = (ULONG)SystemRoutine; + + // + // Save back the new value of the kernel stack + // + Thread->KernelStack = (PVOID)CtxSwitchFrame; +} Propchange: trunk/reactos/ntoskrnl/ke/arm/thrdini.c ------------------------------------------------------------------------------ svn:eol-style = native Propchange: trunk/reactos/ntoskrnl/ke/arm/thrdini.c ------------------------------------------------------------------------------ svn:eol-type = native Propchange: trunk/reactos/ntoskrnl/ke/arm/thrdini.c ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: trunk/reactos/ntoskrnl/mm/arm/stubs.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/arm/stubs.c?re…
============================================================================== --- trunk/reactos/ntoskrnl/mm/arm/stubs.c (added) +++ trunk/reactos/ntoskrnl/mm/arm/stubs.c Wed Feb 13 08:16:14 2008 @@ -1,0 +1,33 @@ +/* + * PROJECT: ReactOS Kernel + * LICENSE: GPL - See COPYING in the top level directory + * FILE: ntoskrnl/mm/arm/stubs.c + * PURPOSE: ARM Memory Manager + * PROGRAMMERS: ReactOS Portable Systems Group + */ + +/* INCLUDES *******************************************************************/ + +#include <ntoskrnl.h> +#define NDEBUG +#include <debug.h> +/* GLOBALS ********************************************************************/ + +// +// METAFIXME: We need to stop using 1MB Section Entry TTEs! +// + +/* FUNCTIONS ******************************************************************/ + +VOID +NTAPI +MmUpdatePageDir(IN PEPROCESS Process, + IN PVOID Address, + IN ULONG Size) +{ + // + // Nothing to do + // + UNIMPLEMENTED; + return; +} Propchange: trunk/reactos/ntoskrnl/mm/arm/stubs.c ------------------------------------------------------------------------------ svn:eol-style = native Propchange: trunk/reactos/ntoskrnl/mm/arm/stubs.c ------------------------------------------------------------------------------ svn:eol-type = native Propchange: trunk/reactos/ntoskrnl/mm/arm/stubs.c ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: trunk/reactos/ntoskrnl/ntoskrnl.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ntoskrnl.rbuild?r…
============================================================================== --- trunk/reactos/ntoskrnl/ntoskrnl.rbuild (original) +++ trunk/reactos/ntoskrnl/ntoskrnl.rbuild Wed Feb 13 08:16:14 2008 @@ -62,9 +62,11 @@ <file first="true">boot.s</file> <file>arm_kprintf.c</file> <file>cpu.c</file> + <file>exp.c</file> <file>kiinit.c</file> <file>stubs_asm.s</file> <file>stubs.c</file> + <file>thrdini.c</file> </directory> </if> <if property="ARCH" value="powerpc"> @@ -332,6 +334,11 @@ <file>page.c</file> </directory> </if> + <if property="ARCH" value="arm"> + <directory name="arm"> + <file>stubs.c</file> + </directory> + </if> <if property="ARCH" value="powerpc"> <directory name="powerpc"> <file>pfault.c</file>
17 years, 2 months
1
0
0
0
[ros-arm-bringup] 32340: HalInitializeProcessor has no work to do on ARM
by ros-arm-bringup@svn.reactos.org
Author: ros-arm-bringup Date: Wed Feb 13 08:11:35 2008 New Revision: 32340 URL:
http://svn.reactos.org/svn/reactos?rev=32340&view=rev
Log: HalInitializeProcessor has no work to do on ARM Modified: trunk/reactos/hal/halarm/generic/hal.c Modified: trunk/reactos/hal/halarm/generic/hal.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halarm/generic/hal.c?r…
============================================================================== --- trunk/reactos/hal/halarm/generic/hal.c (original) +++ trunk/reactos/hal/halarm/generic/hal.c Wed Feb 13 08:11:35 2008 @@ -381,10 +381,13 @@ VOID NTAPI -HalInitializeProcessor(ULONG ProcessorNumber, - PLOADER_PARAMETER_BLOCK LoaderBlock) -{ - UNIMPLEMENTED; +HalInitializeProcessor(IN ULONG ProcessorNumber, + IN PLOADER_PARAMETER_BLOCK LoaderBlock) +{ + // + // Nothing to do + // + return; }
17 years, 2 months
1
0
0
0
[ros-arm-bringup] 32339: Kill PSEH on ARM
by ros-arm-bringup@svn.reactos.org
Author: ros-arm-bringup Date: Wed Feb 13 08:11:12 2008 New Revision: 32339 URL:
http://svn.reactos.org/svn/reactos?rev=32339&view=rev
Log: Kill PSEH on ARM Modified: trunk/reactos/include/reactos/libs/pseh/framebased.h Modified: trunk/reactos/include/reactos/libs/pseh/framebased.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/libs/pseh/…
============================================================================== --- trunk/reactos/include/reactos/libs/pseh/framebased.h (original) +++ trunk/reactos/include/reactos/libs/pseh/framebased.h Wed Feb 13 08:11:12 2008 @@ -171,6 +171,74 @@ \ STMT_; \ } + +#ifdef _ARM_ + +#define _SEH_TRY \ + for(;;) \ + { \ + \ + { \ + \ + for(;;) \ + { \ + if(1) \ + { \ + for(;;) \ + { \ + { + +#define _SEH_EXCEPT(FILTER_) \ + } \ + \ + break; \ + } \ + \ + break; \ + } \ + else \ + { \ + { \ + break; \ + } \ + } \ + \ + break; \ + } \ + \ + \ + if(0) \ + { + +#define _SEH_FINALLY(FINALLY_) \ + } \ + \ + break; \ + } \ + \ + break; \ + } \ + else \ + { \ + } \ + \ + break; \ + } \ + \ + (FINALLY_)(&_SEHFrame.SEH_Header); \ + \ + if(0) \ + { + +#define _SEH_END \ + } \ + } \ + \ + \ + break; \ + } + +#else #define _SEH_TRY \ for(;;) \ @@ -296,6 +364,8 @@ break; \ } +#endif + #define _SEH_HANDLE _SEH_EXCEPT(_SEH_STATIC_FILTER(_SEH_EXECUTE_HANDLER)) #define _SEH_EnableTracing(LEVEL_) ((void)(_SEHPortableFrame->SPF_Tracing = (LEVEL_)))
17 years, 2 months
1
0
0
0
[ros-arm-bringup] 32338: First attempt at ARM Exception Frame structure definition
by ros-arm-bringup@svn.reactos.org
Author: ros-arm-bringup Date: Wed Feb 13 08:10:45 2008 New Revision: 32338 URL:
http://svn.reactos.org/svn/reactos?rev=32338&view=rev
Log: First attempt at ARM Exception Frame structure definition Modified: trunk/reactos/include/ndk/arm/ketypes.h Modified: trunk/reactos/include/ndk/arm/ketypes.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ndk/arm/ketypes.h?…
============================================================================== --- trunk/reactos/include/ndk/arm/ketypes.h (original) +++ trunk/reactos/include/ndk/arm/ketypes.h Wed Feb 13 08:10:45 2008 @@ -92,7 +92,19 @@ // typedef struct _KEXCEPTION_FRAME { - ULONG PlaceHolder; + ULONG R4; + ULONG R5; + ULONG R6; + ULONG R7; + ULONG R8; + ULONG R9; + ULONG R10; + ULONG R11; + ULONG R12; +// ULONG Sp; +// ULONG Psr; + ULONG Lr; + ULONG SwapReturn; } KEXCEPTION_FRAME, *PKEXCEPTION_FRAME; //
17 years, 2 months
1
0
0
0
[ros-arm-bringup] 32337: Just return FALSE in KDCOM on ARM, instead of freezing.
by ros-arm-bringup@svn.reactos.org
Author: ros-arm-bringup Date: Wed Feb 13 07:58:43 2008 New Revision: 32337 URL:
http://svn.reactos.org/svn/reactos?rev=32337&view=rev
Log: Just return FALSE in KDCOM on ARM, instead of freezing. Modified: trunk/reactos/drivers/base/kdcom/kdbg.c Modified: trunk/reactos/drivers/base/kdcom/kdbg.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/base/kdcom/kdbg.c?…
============================================================================== --- trunk/reactos/drivers/base/kdcom/kdbg.c (original) +++ trunk/reactos/drivers/base/kdcom/kdbg.c Wed Feb 13 07:58:43 2008 @@ -252,7 +252,7 @@ #ifdef _ARM_ UNIMPLEMENTED; - while (TRUE); + return FALSE; #endif if (PortInformation->BaudRate == 0)
17 years, 2 months
1
0
0
0
[tkreuzer] 32336: Big ntuser fix: - rename ObmXxx functions to UserXxx functions - remove some macros - move prototypes to object.h - implement UserreferenceObjectByHandle creating a reference to the object, used for cursoricon stuff so far - rewrite object manager functions to reasonably handle references - dereference cursoricons correctly, so they will really get deleted -> fixes a cursoricon leak - destroy submenus in NtUserDestroyMenu -> fixes a big menu leak - free the buffer of the menu t
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Wed Feb 13 03:46:23 2008 New Revision: 32336 URL:
http://svn.reactos.org/svn/reactos?rev=32336&view=rev
Log: Big ntuser fix: - rename ObmXxx functions to UserXxx functions - remove some macros - move prototypes to object.h - implement UserreferenceObjectByHandle creating a reference to the object, used for cursoricon stuff so far - rewrite object manager functions to reasonably handle references - dereference cursoricons correctly, so they will really get deleted -> fixes a cursoricon leak - destroy submenus in NtUserDestroyMenu -> fixes a big menu leak - free the buffer of the menu text -> fixes a mem leak - delete old bitmaps in NtUserSetCursorContent -> fixes a bitmap leak - delete monitor object on failure Now taskmgr doesn't leak memory anymore. we still leak some user handles here and there even after terminating a process, but it's much better now. Modified: trunk/reactos/subsystems/win32/win32k/include/cursoricon.h trunk/reactos/subsystems/win32/win32k/include/menu.h trunk/reactos/subsystems/win32/win32k/include/object.h trunk/reactos/subsystems/win32/win32k/include/userfuncs.h trunk/reactos/subsystems/win32/win32k/main/dllmain.c trunk/reactos/subsystems/win32/win32k/ntuser/accelerator.c trunk/reactos/subsystems/win32/win32k/ntuser/callproc.c trunk/reactos/subsystems/win32/win32k/ntuser/cursoricon.c trunk/reactos/subsystems/win32/win32k/ntuser/hook.c trunk/reactos/subsystems/win32/win32k/ntuser/input.c trunk/reactos/subsystems/win32/win32k/ntuser/menu.c trunk/reactos/subsystems/win32/win32k/ntuser/message.c trunk/reactos/subsystems/win32/win32k/ntuser/monitor.c trunk/reactos/subsystems/win32/win32k/ntuser/msgqueue.c trunk/reactos/subsystems/win32/win32k/ntuser/ntuser.c trunk/reactos/subsystems/win32/win32k/ntuser/object.c trunk/reactos/subsystems/win32/win32k/ntuser/window.c trunk/reactos/subsystems/win32/win32k/ntuser/winpos.c Modified: trunk/reactos/subsystems/win32/win32k/include/cursoricon.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/in…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/include/cursoricon.h (original) +++ trunk/reactos/subsystems/win32/win32k/include/cursoricon.h Wed Feb 13 03:46:23 2008 @@ -81,7 +81,7 @@ (PSYSTEM_CURSORINFO)((WinStaObj)->SystemCursor) #define IntReleaseCurIconObject(CurIconObj) \ - ObmDereferenceObject(CurIconObj) + UserDereferenceObject(CurIconObj) #endif /* _WIN32K_CURSORICON_H */ Modified: trunk/reactos/subsystems/win32/win32k/include/menu.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/in…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/include/menu.h (original) +++ trunk/reactos/subsystems/win32/win32k/include/menu.h Wed Feb 13 03:46:23 2008 @@ -47,7 +47,7 @@ IntGetMenuObject(HMENU hMenu); #define IntReleaseMenuObject(MenuObj) \ - ObmDereferenceObject(MenuObj) + UserDereferenceObject(MenuObj) BOOL FASTCALL IntFreeMenuItem(PMENU_OBJECT MenuObject, PMENU_ITEM MenuItem, Modified: trunk/reactos/subsystems/win32/win32k/include/object.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/in…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/include/object.h (original) +++ trunk/reactos/subsystems/win32/win32k/include/object.h Wed Feb 13 03:46:23 2008 @@ -102,8 +102,20 @@ #undef USER_ASSERT -VOID FASTCALL ObmReferenceObject(PVOID obj); -BOOL FASTCALL ObmDereferenceObject2(PVOID obj); +extern PUSER_HANDLE_TABLE gHandleTable; +VOID FASTCALL UserReferenceObject(PVOID obj); +PVOID FASTCALL UserReferenceObjectByHandle(HANDLE handle, USER_OBJECT_TYPE type); +BOOL FASTCALL UserDereferenceObject(PVOID obj); +PVOID FASTCALL UserCreateObject(PUSER_HANDLE_TABLE ht, HANDLE* h,USER_OBJECT_TYPE type , ULONG size); +BOOL FASTCALL UserDeleteObject(HANDLE h, USER_OBJECT_TYPE type ); +PVOID UserGetObject(PUSER_HANDLE_TABLE ht, HANDLE handle, USER_OBJECT_TYPE type ); +HANDLE UserAllocHandle(PUSER_HANDLE_TABLE ht, PVOID object, USER_OBJECT_TYPE type ); +BOOL UserFreeHandle(PUSER_HANDLE_TABLE ht, HANDLE handle ); +PVOID UserGetNextHandle(PUSER_HANDLE_TABLE ht, HANDLE* handle, USER_OBJECT_TYPE type ); +PUSER_HANDLE_ENTRY handle_to_entry(PUSER_HANDLE_TABLE ht, HANDLE handle ); +BOOL FASTCALL UserCreateHandleTable(); +VOID UserInitHandleTable(PUSER_HANDLE_TABLE ht, PVOID mem, ULONG bytes); + static __inline VOID UserRefObjectCo(PVOID obj, PUSER_REFERENCE_ENTRY UserReferenceEntry) @@ -114,7 +126,7 @@ ASSERT(W32Thread != NULL); ASSERT(UserReferenceEntry != NULL); UserReferenceEntry->obj = obj; - ObmReferenceObject(obj); + UserReferenceObject(obj); PushEntryList(&W32Thread->ReferencesList, &UserReferenceEntry->Entry); } @@ -134,10 +146,10 @@ ASSERT(UserReferenceEntry != NULL); ASSERT(obj == UserReferenceEntry->obj); - ObmDereferenceObject2(obj); + UserDereferenceObject(obj); } -HANDLE FASTCALL ObmObjectToHandle(PVOID obj); +HANDLE FASTCALL UserObjectToHandle(PVOID obj); VOID FASTCALL CreateStockObjects (VOID); VOID FASTCALL CreateSysColorObjects (VOID); Modified: trunk/reactos/subsystems/win32/win32k/include/userfuncs.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/in…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/include/userfuncs.h (original) +++ trunk/reactos/subsystems/win32/win32k/include/userfuncs.h Wed Feb 13 03:46:23 2008 @@ -6,22 +6,6 @@ PMENU_OBJECT FASTCALL UserGetMenuObject(HMENU hMenu); - - -#if 0 -#define ObmDereferenceObject(_obj_) \ -{ \ - DPRINT1("obj 0x%x dereffed to %i refs\n",_obj_, USER_BODY_TO_HEADER(_obj_)->RefCount-1); \ - ObmDereferenceObject2(_obj_); \ -} - -#endif - -#define ObmDereferenceObject(_obj_) ObmDereferenceObject2(_obj_) - - - - #define ASSERT_REFS_CO(_obj_) \ { \ @@ -56,33 +40,7 @@ #define DUMP_REFS(obj) DPRINT1("obj 0x%x, refs %i\n",obj, USER_BODY_TO_HEADER(obj)->RefCount) - - - -VOID FASTCALL ObmReferenceObject(PVOID obj); -BOOL FASTCALL ObmDereferenceObject2(PVOID obj); - PWINDOW_OBJECT FASTCALL IntGetWindowObject(HWND hWnd); -PVOID FASTCALL -ObmCreateObject(PUSER_HANDLE_TABLE ht, HANDLE* h,USER_OBJECT_TYPE type , ULONG size); - -BOOL FASTCALL -ObmDeleteObject(HANDLE h, USER_OBJECT_TYPE type ); - -#define UserRefObject(o) ObmReferenceObject(o) -#define UserDerefObject(o) ObmDereferenceObject(o) -BOOL FASTCALL ObmCreateHandleTable(); - -/******************** HANDLE.C ***************/ - -extern PUSER_HANDLE_TABLE gHandleTable; - -PUSER_HANDLE_ENTRY handle_to_entry(PUSER_HANDLE_TABLE ht, HANDLE handle ); -VOID UserInitHandleTable(PUSER_HANDLE_TABLE ht, PVOID mem, ULONG bytes); -HANDLE UserAllocHandle(PUSER_HANDLE_TABLE ht, PVOID object, USER_OBJECT_TYPE type ); -PVOID UserGetObject(PUSER_HANDLE_TABLE ht, HANDLE handle, USER_OBJECT_TYPE type ); -PVOID UserFreeHandle(PUSER_HANDLE_TABLE ht, HANDLE handle ); -PVOID UserGetNextHandle(PUSER_HANDLE_TABLE ht, HANDLE* handle, USER_OBJECT_TYPE type ); /*************** WINSTA.C ***************/ Modified: trunk/reactos/subsystems/win32/win32k/main/dllmain.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ma…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/main/dllmain.c (original) +++ trunk/reactos/subsystems/win32/win32k/main/dllmain.c Wed Feb 13 03:46:23 2008 @@ -289,7 +289,7 @@ { PUSER_REFERENCE_ENTRY ref = CONTAINING_RECORD(e, USER_REFERENCE_ENTRY, Entry); DPRINT("thread clean: remove reference obj 0x%x\n",ref->obj); - ObmDereferenceObject(ref->obj); + UserDereferenceObject(ref->obj); e = PopEntryList(&Win32Thread->ReferencesList); } Modified: trunk/reactos/subsystems/win32/win32k/ntuser/accelerator.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/accelerator.c (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/accelerator.c Wed Feb 13 03:46:23 2008 @@ -348,7 +348,7 @@ RETURN( (HACCEL) 0 ); } - Accel = ObmCreateObject(gHandleTable, (PHANDLE)&hAccel, otAccel, sizeof(ACCELERATOR_TABLE)); + Accel = UserCreateObject(gHandleTable, (PHANDLE)&hAccel, otAccel, sizeof(ACCELERATOR_TABLE)); if (Accel == NULL) { @@ -362,7 +362,8 @@ Accel->Table = ExAllocatePoolWithTag(PagedPool, EntriesCount * sizeof(ACCEL), TAG_ACCEL); if (Accel->Table == NULL) { - ObmDeleteObject(hAccel, otAccel); + UserDereferenceObject(Accel); + UserDeleteObject(hAccel, otAccel); SetLastNtError(STATUS_NO_MEMORY); RETURN( (HACCEL) 0); } @@ -371,7 +372,8 @@ if (!NT_SUCCESS(Status)) { ExFreePool(Accel->Table); - ObmDeleteObject(hAccel, otAccel); + UserDereferenceObject(Accel); + UserDeleteObject(hAccel, otAccel); SetLastNtError(Status); RETURN((HACCEL) 0); } @@ -411,12 +413,13 @@ RETURN( FALSE); } - ObmDeleteObject(hAccel, otAccel); - if (Accel->Table != NULL) { ExFreePool(Accel->Table); - } + Accel->Table = NULL; + } + + UserDeleteObject(hAccel, otAccel); RETURN( TRUE); Modified: trunk/reactos/subsystems/win32/win32k/ntuser/callproc.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/callproc.c (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/callproc.c Wed Feb 13 03:46:23 2008 @@ -39,7 +39,7 @@ GetCallProcHandle(IN PCALLPROC CallProc) { /* FIXME - check for 64 bit architectures... */ - return (WNDPROC)((ULONG_PTR)ObmObjectToHandle(CallProc) | 0xFFFF0000); + return (WNDPROC)((ULONG_PTR)UserObjectToHandle(CallProc) | 0xFFFF0000); } VOID @@ -47,9 +47,9 @@ IN OUT PCALLPROC CallProc) { /* FIXME - use new object manager! */ - HANDLE Handle = ObmObjectToHandle(CallProc); + HANDLE Handle = UserObjectToHandle(CallProc); - ObmDeleteObject(Handle, + UserDeleteObject(Handle, otCallProc); } @@ -61,7 +61,7 @@ HANDLE Handle; /* FIXME - use new object manager! */ - NewCallProc = (PCALLPROC)ObmCreateObject(gHandleTable, + NewCallProc = (PCALLPROC)UserCreateObject(gHandleTable, &Handle, otCallProc, sizeof(CALLPROC)); @@ -87,7 +87,7 @@ HANDLE Handle; /* FIXME - use new object manager! */ - NewCallProc = (PCALLPROC)ObmCreateObject(gHandleTable, + NewCallProc = (PCALLPROC)UserCreateObject(gHandleTable, &Handle, otCallProc, sizeof(CALLPROC)); Modified: trunk/reactos/subsystems/win32/win32k/ntuser/cursoricon.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/cursoricon.c (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/cursoricon.c Wed Feb 13 03:46:23 2008 @@ -71,7 +71,7 @@ return TRUE; } - +/* This function creates a reference for the object! */ PCURICON_OBJECT FASTCALL UserGetCurIconObject(HCURSOR hCurIcon) { PCURICON_OBJECT CurIcon; @@ -82,7 +82,7 @@ return NULL; } - CurIcon = (PCURICON_OBJECT)UserGetObject(gHandleTable, hCurIcon, otCursorIcon); + CurIcon = (PCURICON_OBJECT)UserReferenceObjectByHandle(hCurIcon, otCursorIcon); if (!CurIcon) { /* we never set ERROR_INVALID_ICON_HANDLE. lets hope noone ever checks for it */ @@ -90,7 +90,7 @@ return NULL; } - ASSERT(USER_BODY_TO_HEADER(CurIcon)->RefCount >= 0); + ASSERT(USER_BODY_TO_HEADER(CurIcon)->RefCount >= 1); return CurIcon; } @@ -151,10 +151,14 @@ if (!NewCursor && (CurInfo->CurrentCursorObject || ForceChange)) { - if (NULL != CurInfo->CurrentCursorObject && CurInfo->ShowingCursor) - { - /* Remove the cursor if it was displayed */ - IntEngMovePointer(SurfObj, -1, -1, &GDIDEV(SurfObj)->Pointer.Exclude); + if (NULL != CurInfo->CurrentCursorObject) + { + UserDereferenceObject(CurInfo->CurrentCursorObject); + if (CurInfo->ShowingCursor) + { + /* Remove the cursor if it was displayed */ + IntEngMovePointer(SurfObj, -1, -1, &GDIDEV(SurfObj)->Pointer.Exclude); + } } GDIDEV(SurfObj)->Pointer.Status = SPS_ACCEPT_NOEXCLUDE; @@ -239,6 +243,7 @@ } CurInfo->ShowingCursor = CURSOR_SHOWING; CurInfo->CurrentCursorObject = NewCursor; + UserReferenceObject(NewCursor); } else { @@ -365,14 +370,14 @@ LIST_FOR_EACH(CurIcon, &gCurIconList, CURICON_OBJECT, ListEntry) { - // if(NT_SUCCESS(ObmReferenceObjectByPointer(Object, otCursorIcon))) //<- huh???? -// ObmReferenceObject( CurIcon); + // if(NT_SUCCESS(UserReferenceObjectByPointer(Object, otCursorIcon))) //<- huh???? +// UserReferenceObject( CurIcon); // { if((CurIcon->hModule == hModule) && (CurIcon->hRsrc == hRsrc)) { if(cx && ((cx != CurIcon->Size.cx) || (cy != CurIcon->Size.cy))) { -// ObmDereferenceObject(CurIcon); +// UserDereferenceObject(CurIcon); continue; } if (! ReferenceCurIconByProcess(CurIcon)) @@ -383,7 +388,7 @@ return CurIcon; } // } -// ObmDereferenceObject(CurIcon); +// UserDereferenceObject(CurIcon); } @@ -396,7 +401,7 @@ PCURICON_OBJECT CurIcon; HANDLE hCurIcon; - CurIcon = ObmCreateObject(gHandleTable, &hCurIcon, otCursorIcon, sizeof(CURICON_OBJECT)); + CurIcon = UserCreateObject(gHandleTable, &hCurIcon, otCursorIcon, sizeof(CURICON_OBJECT)); if(!CurIcon) { @@ -410,14 +415,12 @@ if (! ReferenceCurIconByProcess(CurIcon)) { DPRINT1("Failed to add process\n"); - ObmDeleteObject(hCurIcon, otCursorIcon); - ObmDereferenceObject(CurIcon); + UserDeleteObject(hCurIcon, otCursorIcon); + UserDereferenceObject(CurIcon); return NULL; } InsertHeadList(&gCurIconList, &CurIcon->ListEntry); - - ObmDereferenceObject(CurIcon); return CurIcon; } @@ -484,19 +487,23 @@ bmpMask = CurIcon->IconInfo.hbmMask; bmpColor = CurIcon->IconInfo.hbmColor; - Ret = ObmDeleteObject(CurIcon->Self, otCursorIcon); - /* delete bitmaps */ if(bmpMask) { GDIOBJ_SetOwnership(GdiHandleTable, bmpMask, PsGetCurrentProcess()); NtGdiDeleteObject(bmpMask); + CurIcon->IconInfo.hbmMask = NULL; } if(bmpColor) { GDIOBJ_SetOwnership(GdiHandleTable, bmpColor, PsGetCurrentProcess()); NtGdiDeleteObject(bmpColor); - } + CurIcon->IconInfo.hbmColor = NULL; + } + + /* We were given a pointer, no need to keep the reference anylonger! */ + UserDereferenceObject(CurIcon); + Ret = UserDeleteObject(CurIcon->Self, otCursorIcon); return Ret; } @@ -516,8 +523,8 @@ LIST_FOR_EACH_SAFE(CurIcon, tmp, &gCurIconList, CURICON_OBJECT, ListEntry) { -// ObmReferenceObject(CurIcon); - // if(NT_SUCCESS(ObmReferenceObjectByPointer(Object, otCursorIcon))) +// UserReferenceObject(CurIcon); + // if(NT_SUCCESS(UserReferenceObjectByPointer(Object, otCursorIcon))) { LIST_FOR_EACH(ProcessData, &CurIcon->ProcessList, CURICON_PROCESS, ListEntry) { @@ -529,7 +536,7 @@ } } -// ObmDereferenceObject(Object); +// UserDereferenceObject(Object); } @@ -607,6 +614,7 @@ } } + UserDereferenceObject(CurIcon); ObDereferenceObject(WinSta); RETURN( Ret); @@ -698,6 +706,7 @@ else SetLastNtError(Status); + UserDereferenceObject(CurIcon); ObDereferenceObject(WinSta); RETURN( Ret); @@ -749,6 +758,8 @@ else SetLastNtError(Status); // maybe not, test this + UserDereferenceObject(CurIcon); + cleanup: DPRINT("Leave NtUserGetIconSize, ret=%i\n", bRet); UserLeave(); @@ -950,6 +961,7 @@ } ret = IntDestroyCurIconObject(WinSta, CurIcon, FALSE); + /* Note: IntDestroyCurIconObject will remove our reference for us! */ ObDereferenceObject(WinSta); RETURN(ret); @@ -1099,6 +1111,7 @@ OldCursor = IntSetCursor(WinSta, CurIcon, FALSE); + UserDereferenceObject(CurIcon); ObDereferenceObject(WinSta); RETURN(OldCursor); @@ -1117,9 +1130,10 @@ STDCALL NtUserSetCursorContents( HANDLE hCurIcon, - PICONINFO IconInfo) + PICONINFO UnsafeIconInfo) { PCURICON_OBJECT CurIcon; + ICONINFO IconInfo; PBITMAPOBJ bmp; PWINSTATION_OBJECT WinSta; NTSTATUS Status; @@ -1142,12 +1156,25 @@ } /* Copy fields */ - Status = MmCopyFromCaller(&CurIcon->IconInfo, IconInfo, sizeof(ICONINFO)); + Status = MmCopyFromCaller(&IconInfo, UnsafeIconInfo, sizeof(ICONINFO)); if(!NT_SUCCESS(Status)) { SetLastNtError(Status); goto done; } + + /* Delete old bitmaps */ + if (CurIcon->IconInfo.hbmColor != IconInfo.hbmColor) + { + NtGdiDeleteObject(CurIcon->IconInfo.hbmColor); + } + if (CurIcon->IconInfo.hbmMask != IconInfo.hbmMask) + { + NtGdiDeleteObject(CurIcon->IconInfo.hbmMask); + } + + /* Copy new IconInfo field */ + CurIcon->IconInfo = IconInfo; bmp = BITMAPOBJ_LockBitmap(CurIcon->IconInfo.hbmColor); if(bmp) @@ -1174,6 +1201,10 @@ done: + if (CurIcon) + { + UserDereferenceObject(CurIcon); + } ObDereferenceObject(WinSta); RETURN( Ret); @@ -1265,6 +1296,7 @@ else Ret = TRUE; + UserDereferenceObject(CurIcon); ObDereferenceObject(WinSta); RETURN( Ret); @@ -1346,6 +1378,7 @@ } done: + UserDereferenceObject(CurIcon); ObDereferenceObject(WinSta); RETURN( Ret); @@ -1764,6 +1797,8 @@ hbrFlickerFreeDraw, diFlags); + UserDereferenceObject(pIcon); + UserLeave(); return Ret; } Modified: trunk/reactos/subsystems/win32/win32k/ntuser/hook.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/hook.c (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/hook.c Wed Feb 13 03:46:23 2008 @@ -112,7 +112,7 @@ } } - Hook = ObmCreateObject(gHandleTable, &Handle, otHook, sizeof(HOOK)); + Hook = UserCreateObject(gHandleTable, &Handle, otHook, sizeof(HOOK)); if (NULL == Hook) { return NULL; @@ -215,7 +215,7 @@ } /* Close handle */ - ObmDeleteObject(Hook->Self, otHook); + UserDeleteObject(Hook->Self, otHook); } /* remove a hook, freeing it if the chain is not in use */ @@ -441,7 +441,7 @@ RETURN( FALSE); } - //Status = ObmReferenceObjectByHandle(gHandleTable, Hook, + //Status = UserReferenceObjectByHandle(gHandleTable, Hook, // otHookProc, (PVOID *) &HookObj); ObDereferenceObject(WinStaObj); @@ -462,13 +462,13 @@ if (NULL != HookObj->Thread && (HookObj->Thread != PsGetCurrentThread())) { DPRINT1("Thread mismatch\n"); - ObmDereferenceObject(HookObj); + UserDereferenceObject(HookObj); SetLastWin32Error(ERROR_INVALID_HANDLE); RETURN( 0); } NextObj = IntGetNextHook(HookObj); - ObmDereferenceObject(HookObj); + UserDereferenceObject(HookObj); if (NULL != NextObj) { DPRINT1("Calling next hook not implemented\n"); @@ -637,7 +637,7 @@ Status = MmCopyFromCaller(&ModuleName, UnsafeModuleName, sizeof(UNICODE_STRING)); if (! NT_SUCCESS(Status)) { - ObmDereferenceObject(Hook); + UserDereferenceObject(Hook); IntRemoveHook(Hook, WinStaObj, FALSE); if (NULL != Thread) { @@ -652,7 +652,7 @@ TAG_HOOK); if (NULL == Hook->ModuleName.Buffer) { - ObmDereferenceObject(Hook); + UserDereferenceObject(Hook); IntRemoveHook(Hook, WinStaObj, FALSE); if (NULL != Thread) { @@ -669,7 +669,7 @@ if (! NT_SUCCESS(Status)) { ExFreePool(Hook->ModuleName.Buffer); - ObmDereferenceObject(Hook); + UserDereferenceObject(Hook); IntRemoveHook(Hook, WinStaObj, FALSE); if (NULL != Thread) { @@ -686,7 +686,7 @@ Hook->Ansi = Ansi; Handle = Hook->Self; - ObmDereferenceObject(Hook); + UserDereferenceObject(Hook); ObDereferenceObject(WinStaObj); RETURN( Handle); @@ -738,7 +738,7 @@ RETURN( FALSE); } - // Status = ObmReferenceObjectByHandle(gHandleTable, Hook, + // Status = UserReferenceObjectByHandle(gHandleTable, Hook, // otHookProc, (PVOID *) &HookObj); if (!(HookObj = IntGetHookObject(Hook))) { @@ -751,7 +751,7 @@ IntRemoveHook(HookObj, WinStaObj, FALSE); - ObmDereferenceObject(HookObj); + UserDereferenceObject(HookObj); ObDereferenceObject(WinStaObj); RETURN( TRUE); 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 Wed Feb 13 03:46:23 2008 @@ -1058,7 +1058,7 @@ MousePos.x = DesktopWindow->Wnd->ClientRect.right - 1; if(MousePos.y >= DesktopWindow->Wnd->ClientRect.bottom) MousePos.y = DesktopWindow->Wnd->ClientRect.bottom - 1; - ObmDereferenceObject(DesktopWindow); + UserDereferenceObject(DesktopWindow); } if(MousePos.x < 0) Modified: trunk/reactos/subsystems/win32/win32k/ntuser/menu.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/menu.c (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/menu.c Wed Feb 13 03:46:23 2008 @@ -238,6 +238,7 @@ } /* Free memory */ + ExFreePool(MenuItem->Text.Buffer); ExFreePool(MenuItem); return TRUE; @@ -317,9 +318,10 @@ Window->Wnd->IDMenu = 0; } } - ObmDeleteObject(Menu->MenuInfo.Self, otMenu); +// UserDereferenceObject(Menu); + BOOL ret = UserDeleteObject(Menu->MenuInfo.Self, otMenu); ObDereferenceObject(WindowStation); - return TRUE; + return ret; } } return FALSE; @@ -330,7 +332,7 @@ { PMENU_OBJECT Menu; - Menu = (PMENU_OBJECT)ObmCreateObject( + Menu = (PMENU_OBJECT)UserCreateObject( gHandleTable, Handle, otMenu, sizeof(MENU_OBJECT)); @@ -438,7 +440,7 @@ if(!Source) return NULL; - Menu = (PMENU_OBJECT)ObmCreateObject( + Menu = (PMENU_OBJECT)UserCreateObject( gHandleTable, &hMenu, otMenu, sizeof(MENU_OBJECT)); @@ -1457,6 +1459,7 @@ { PWINSTATION_OBJECT WinStaObject; HANDLE Handle; + PMENU_OBJECT Menu; NTSTATUS Status; PEPROCESS CurrentProcess = PsGetCurrentProcess(); @@ -1479,12 +1482,14 @@ SetLastNtError(Status); return (HMENU)0; } - IntCreateMenu(&Handle, !PopupMenu); + Menu = IntCreateMenu(&Handle, !PopupMenu); + UserDereferenceObject(Menu); ObDereferenceObject(WinStaObject); } else { - IntCreateMenu(&Handle, !PopupMenu); + Menu = IntCreateMenu(&Handle, !PopupMenu); + UserDereferenceObject(Menu); } return (HMENU)Handle; @@ -1566,7 +1571,7 @@ RETURN( FALSE); } - RETURN( IntDestroyMenuObject(Menu, FALSE, TRUE)); + RETURN( IntDestroyMenuObject(Menu, TRUE, TRUE)); CLEANUP: DPRINT("Leave NtUserDestroyMenu, ret=%i\n",_ret_); Modified: trunk/reactos/subsystems/win32/win32k/ntuser/message.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/message.c (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/message.c Wed Feb 13 03:46:23 2008 @@ -582,12 +582,12 @@ } /* eat the message */ - UserDerefObject(Wnd); + UserDereferenceObject(Wnd); UserDerefObjectCo(DesktopWindow); UserDerefObjectCo(Window); return TRUE; } - UserDerefObject(Wnd); + UserDereferenceObject(Wnd); } UserDerefObjectCo(DesktopWindow); @@ -800,7 +800,7 @@ // if(MsgWindow) // { -// UserDerefObject(MsgWindow); +// UserDereferenceObject(MsgWindow); // } return TRUE; @@ -1584,7 +1584,7 @@ /* Must be handled by other thread */ // if (HWND_BROADCAST != hWnd) // { -// UserDerefObject(Window); +// UserDereferenceObject(Window); // } Info.HandledByKernel = TRUE; UserModeMsg.hwnd = hWnd; Modified: trunk/reactos/subsystems/win32/win32k/ntuser/monitor.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/monitor.c (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/monitor.c Wed Feb 13 03:46:23 2008 @@ -89,7 +89,7 @@ HANDLE Handle; PMONITOR_OBJECT Monitor; - Monitor = ObmCreateObject(gHandleTable, &Handle, otMonitor, sizeof (MONITOR_OBJECT)); + Monitor = UserCreateObject(gHandleTable, &Handle, otMonitor, sizeof (MONITOR_OBJECT)); if (Monitor == NULL) { return NULL; @@ -116,7 +116,7 @@ IntDestroyMonitorObject(IN PMONITOR_OBJECT pMonitor) { RtlFreeUnicodeString(&pMonitor->DeviceName); - ObmDereferenceObject(pMonitor); + UserDereferenceObject(pMonitor); } @@ -178,6 +178,8 @@ if (!RtlCreateUnicodeString(&Monitor->DeviceName, Buffer)) { DPRINT("Couldn't duplicate monitor name!\n"); + UserDereferenceObject(Monitor); + UserDeleteObject(Monitor->Handle, otMonitor); return STATUS_INSUFFICIENT_RESOURCES; } @@ -199,6 +201,7 @@ } Monitor->Prev = p; } + UserDereferenceObject(Monitor); return STATUS_SUCCESS; } Modified: trunk/reactos/subsystems/win32/win32k/ntuser/msgqueue.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/msgqueue.c (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/msgqueue.c Wed Feb 13 03:46:23 2008 @@ -282,7 +282,7 @@ if(Msg == WM_MOUSEWHEEL) { Window = UserGetWindowObject(IntGetFocusWindow()); - if (Window) UserRefObject(Window); + if (Window) UserReferenceObject(Window); } else { @@ -290,7 +290,7 @@ if(Window == NULL) { Window = ScopeWin; - if (Window) UserRefObject(Window); + if (Window) UserReferenceObject(Window); } else { @@ -304,7 +304,7 @@ /* FIXME - window messages should go to the right window if no buttons are pressed */ Window = UserGetWindowObject(hCaptureWin); - if (Window) UserRefObject(Window); + if (Window) UserReferenceObject(Window); } @@ -377,7 +377,7 @@ IntUnLockHardwareMessageQueue(Window->MessageQueue); *Freed = FALSE; - UserDerefObject(Window); + UserDereferenceObject(Window); return(FALSE); } @@ -420,7 +420,7 @@ IntUnLockHardwareMessageQueue(Window->MessageQueue); } - UserDerefObject(Window); + UserDereferenceObject(Window); *Freed = FALSE; return(FALSE); } @@ -459,7 +459,7 @@ } } - UserDerefObject(Window); + UserDereferenceObject(Window); *Freed = FALSE; return(TRUE); } @@ -783,7 +783,7 @@ Mesg.time = MsqCalculateMessageTime(&LargeTickCount); IntGetCursorLocation(WinSta, &Mesg.pt); MsqPostMessage(Window->MessageQueue, &Mesg, FALSE, QS_HOTKEY); - ObmDereferenceObject(Window); + UserDereferenceObject(Window); ObDereferenceObject (Thread); // InsertHeadList(&pThread->MessageQueue->PostedMessagesListHead, Modified: trunk/reactos/subsystems/win32/win32k/ntuser/ntuser.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/ntuser.c (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/ntuser.c Wed Feb 13 03:46:23 2008 @@ -44,7 +44,7 @@ ExInitializeResourceLite(&UserLock); - if (!ObmCreateHandleTable()) + if (!UserCreateHandleTable()) { DPRINT1("Failed creating handle table\n"); return STATUS_INSUFFICIENT_RESOURCES; Modified: trunk/reactos/subsystems/win32/win32k/ntuser/object.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/object.c (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/object.c Wed Feb 13 03:46:23 2008 @@ -69,7 +69,7 @@ if (ht->nb_handles >= ht->allocated_handles) /* need to grow the array */ { /**/ - int i, iFree = 0, iWindow = 0, iMenu = 0, iCursorIcon = 0, + int i, iFree = 0, iWindow = 0, iMenu = 0, iCursorIcon = 0, iHook = 0, iCallProc = 0, iAccel = 0, iMonitor = 0; /**/ DPRINT1("Out of user handles! Used -> %i, NM_Handle -> %d\n", usedHandles, ht->nb_handles); @@ -108,7 +108,7 @@ } DPRINT1("Handle Count by Type:\n Free = %d Window = %d Menu = %d CursorIcon = %d Hook = %d\n CallProc = %d Accel = %d Monitor = %d\n", iFree, iWindow, iMenu, iCursorIcon, iHook, iCallProc, iAccel, iMonitor ); -//#endif +//#endif return NULL; #if 0 PUSER_HANDLE_ENTRY new_handles; @@ -198,6 +198,10 @@ entry->pi = UserHandleOwnerByType(type); if (++entry->generation >= 0xffff) entry->generation = 1; + + /* We have created a handle, which is a reference! */ + UserReferenceObject(object); + return entry_to_handle(ht, entry ); } @@ -241,18 +245,24 @@ return entry->ptr; } -/* free a user handle and return a pointer to the object */ -PVOID UserFreeHandle(PUSER_HANDLE_TABLE ht, HANDLE handle ) -{ - PUSER_HANDLE_ENTRY entry; +/* free a user handle */ +BOOL UserFreeHandle(PUSER_HANDLE_TABLE ht, HANDLE handle ) +{ + PUSER_HANDLE_ENTRY entry; + PVOID object; if (!(entry = handle_to_entry( ht, handle ))) { SetLastNtError( STATUS_INVALID_HANDLE ); - return NULL; - } - - return free_user_entry(ht, entry ); + return FALSE; + } + + object = free_user_entry(ht, entry ); + + /* We removed the handle, which was a reference! */ + return UserDereferenceObject(object); + + return TRUE; } /* return the next user handle after 'handle' that is of a given type */ @@ -284,7 +294,7 @@ PVOID FASTCALL -ObmCreateObject(PUSER_HANDLE_TABLE ht, HANDLE* h,USER_OBJECT_TYPE type , ULONG size) +UserCreateObject(PUSER_HANDLE_TABLE ht, HANDLE* h,USER_OBJECT_TYPE type , ULONG size) { HANDLE hi; @@ -303,7 +313,7 @@ RtlZeroMemory(hdr, size + sizeof(USER_OBJECT_HEADER)); hdr->hSelf = hi; - hdr->RefCount++; //temp hack! + hdr->RefCount = 2; // we need this, because we create 2 refs: handle and pointer! if (h) *h = hi; @@ -311,7 +321,7 @@ } BOOL FASTCALL -ObmDeleteObject(HANDLE h, USER_OBJECT_TYPE type ) +UserDeleteObject(HANDLE h, USER_OBJECT_TYPE type ) { PUSER_OBJECT_HEADER hdr; PVOID body = UserGetObject(gHandleTable, h, type); @@ -319,42 +329,45 @@ return FALSE; hdr = USER_BODY_TO_HEADER(body); + ASSERT(hdr->RefCount >= 1); + + hdr->destroyed = TRUE; + return UserFreeHandle(gHandleTable, h); +} + + +VOID FASTCALL UserReferenceObject(PVOID obj) +{ + PUSER_OBJECT_HEADER hdr = USER_BODY_TO_HEADER(obj); + ASSERT(hdr->RefCount >= 0); - hdr->destroyed = TRUE; - if (hdr->RefCount == 0) - { - UserFreeHandle(gHandleTable, h); - - memset(hdr, 0x55, sizeof(USER_OBJECT_HEADER)); - - UserHeapFree(hdr); - //ExFreePool(hdr); - return TRUE; - } - -// DPRINT1("info: something not destroyed bcause refs still left, inuse %i\n",usedHandles); - return FALSE; -} - - -VOID FASTCALL ObmReferenceObject(PVOID obj) -{ - PUSER_OBJECT_HEADER hdr = USER_BODY_TO_HEADER(obj); - - ASSERT(hdr->RefCount >= 0); - hdr->RefCount++; } -HANDLE FASTCALL ObmObjectToHandle(PVOID obj) + +PVOID FASTCALL UserReferenceObjectByHandle(HANDLE handle, USER_OBJECT_TYPE type) +{ + PVOID object; + + object = UserGetObject(gHandleTable, handle, type); + if(object) + { + UserReferenceObject(object); + } + + return object; +} + + +HANDLE FASTCALL UserObjectToHandle(PVOID obj) { PUSER_OBJECT_HEADER hdr = USER_BODY_TO_HEADER(obj); return hdr->hSelf; } -BOOL FASTCALL ObmDereferenceObject2(PVOID obj) +BOOL FASTCALL UserDereferenceObject(PVOID obj) { PUSER_OBJECT_HEADER hdr = USER_BODY_TO_HEADER(obj); @@ -363,17 +376,19 @@ hdr->RefCount--; // You can not have a zero here! - if (!hdr->destroyed && hdr->RefCount == 0) hdr->RefCount++; // BOUNCE!!!!! + if (!hdr->destroyed && hdr->RefCount == 0) + { + hdr->RefCount++; // BOUNCE!!!!! + DPRINT1("warning! Dereference to zero without deleting!\n"); + } if (hdr->RefCount == 0 && hdr->destroyed) { // DPRINT1("info: something destroyed bcaise of deref, in use=%i\n",usedHandles); - UserFreeHandle(gHandleTable, hdr->hSelf); - memset(hdr, 0x55, sizeof(USER_OBJECT_HEADER)); - UserHeapFree(hdr); + return UserHeapFree(hdr); //ExFreePool(hdr); return TRUE; @@ -384,7 +399,7 @@ -BOOL FASTCALL ObmCreateHandleTable() +BOOL FASTCALL UserCreateHandleTable() { PVOID mem; Modified: trunk/reactos/subsystems/win32/win32k/ntuser/window.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/window.c (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/window.c Wed Feb 13 03:46:23 2008 @@ -414,7 +414,7 @@ else co_UserFreeWindow(Child, ProcessData, ThreadData, SendMessages); - UserDerefObject(Child); + UserDereferenceObject(Child); } } ExFreePool(Children); @@ -491,8 +491,8 @@ IntUnlinkWindow(Window); - UserRefObject(Window); - ObmDeleteObject(Window->hSelf, otWindow); + UserReferenceObject(Window); + UserDeleteObject(Window->hSelf, otWindow); IntDestroyScrollBars(Window); @@ -510,7 +510,7 @@ ASSERT(Window->Wnd != NULL); UserFreeWindowInfo(Window->ti, Window); - UserDerefObject(Window); + UserDereferenceObject(Window); IntClipboardFreeWindow(Window); @@ -989,7 +989,7 @@ if (WndOldOwner) { ret = WndOldOwner->hSelf; - UserDerefObject(WndOldOwner); + UserDereferenceObject(WndOldOwner); } else { @@ -1007,7 +1007,7 @@ Wnd->Wnd->Owner = NULL; } - UserDerefObject(Wnd); + UserDereferenceObject(Wnd); return ret; } @@ -1042,7 +1042,7 @@ WndOldParent = Wnd->Parent; - if (WndOldParent) UserRefObject(WndOldParent); /* caller must deref */ + if (WndOldParent) UserReferenceObject(WndOldParent); /* caller must deref */ if (WndNewParent != WndOldParent) { @@ -1064,9 +1064,9 @@ } else { -// UserRefObject(InsertAfter); +// UserReferenceObject(InsertAfter); IntLinkWindow(Wnd, WndNewParent, InsertAfter /*prev sibling*/); -// UserDerefObject(InsertAfter); +// UserDereferenceObject(InsertAfter); } } @@ -1092,7 +1092,7 @@ // { // if(!IntIsWindow(WndOldParent->hSelf)) // { -// UserDerefObject(WndOldParent); +// UserDereferenceObject(WndOldParent); // return NULL; // } @@ -1607,7 +1607,7 @@ /* Create the window object. */ Window = (PWINDOW_OBJECT) - ObmCreateObject(gHandleTable, (PHANDLE)&hWnd, + UserCreateObject(gHandleTable, (PHANDLE)&hWnd, otWindow, sizeof(WINDOW_OBJECT)); if (Window) { @@ -1982,7 +1982,7 @@ if (!Result) { /* FIXME: Cleanup. */ - DPRINT("IntCreateWindowEx(): NCCREATE message failed.\n"); + DPRINT1("IntCreateWindowEx(): NCCREATE message failed. No cleanup performed!\n"); RETURN((HWND)0); } @@ -2046,7 +2046,7 @@ if (Result == (LRESULT)-1) { /* FIXME: Cleanup. */ - DPRINT("IntCreateWindowEx(): send CREATE message failed.\n"); + DPRINT1("IntCreateWindowEx(): send CREATE message failed. No cleanup performed!\n"); RETURN((HWND)0); } @@ -2166,7 +2166,11 @@ CLEANUP: if (!_ret_ && Window && Window->Wnd && ti) UserFreeWindowInfo(ti, Window); - if (Window) UserDerefObjectCo(Window); + if (Window) + { + UserDerefObjectCo(Window); + UserDereferenceObject(Window); + } if (ParentWindow) UserDerefObjectCo(ParentWindow); if (!_ret_ && ti != NULL) { @@ -2834,7 +2838,7 @@ } //temp hack -// UserDerefObject(Parent); +// UserDereferenceObject(Parent); WndAncestor = Parent; } @@ -2935,7 +2939,7 @@ if (!(Wnd = UserGetWindowObject(hWnd))) { RETURN( FALSE ); - } + } _SEH_TRY { if(pcbi) @@ -2958,7 +2962,7 @@ CLEANUP: DPRINT("Leave NtUserGetComboBoxInfo, ret=%i\n",_ret_); UserLeave(); - END_CLEANUP; + END_CLEANUP; } @@ -3013,21 +3017,21 @@ { PWINDOW_OBJECT Wnd; DECLARE_RETURN(DWORD); - + DPRINT("Enter NtUserGetListBoxInfo\n"); UserEnterShared(); if (!(Wnd = UserGetWindowObject(hWnd))) { RETURN( 0 ); - } + } RETURN( (DWORD) co_IntSendMessage( Wnd->hSelf, LB_GETLISTBOXINFO, 0, 0 )); CLEANUP: DPRINT("Leave NtUserGetListBoxInfo, ret=%i\n",_ret_); UserLeave(); - END_CLEANUP; + END_CLEANUP; } @@ -3081,7 +3085,7 @@ if (WndOldParent) { hWndOldParent = WndOldParent->hSelf; - UserDerefObject(WndOldParent); + UserDereferenceObject(WndOldParent); } return( hWndOldParent); @@ -4599,7 +4603,7 @@ RETURN( NULL); CLEANUP: - if (Window) UserDerefObject(Window); + if (Window) UserDereferenceObject(Window); if (DesktopWindow) UserDerefObjectCo(DesktopWindow); DPRINT("Leave NtUserWindowFromPoint, ret=%i\n",_ret_); Modified: trunk/reactos/subsystems/win32/win32k/ntuser/winpos.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/winpos.c (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/winpos.c Wed Feb 13 03:46:23 2008 @@ -1005,14 +1005,14 @@ } if (NULL != InsertAfterWindow) { - UserRefObject(InsertAfterWindow); + UserReferenceObject(InsertAfterWindow); } } else if (WinPos.hwndInsertAfter == HWND_BOTTOM) { if(ParentWindow->LastChild) { - UserRefObject(ParentWindow->LastChild); + UserReferenceObject(ParentWindow->LastChild); InsertAfterWindow = ParentWindow->LastChild; } else @@ -1028,7 +1028,7 @@ IntLinkWindow(Window, ParentWindow, InsertAfterWindow); } if (InsertAfterWindow != NULL) - UserDerefObject(InsertAfterWindow); + UserDereferenceObject(InsertAfterWindow); if ((HWND_TOPMOST == WinPos.hwndInsertAfter) || (0 != (Window->Wnd->ExStyle & WS_EX_TOPMOST) && NULL != Window->PrevSibling @@ -1588,9 +1588,9 @@ continue; } - if (*Window) UserDerefObject(*Window); + if (*Window) UserDereferenceObject(*Window); *Window = Current; - UserRefObject(*Window); + UserReferenceObject(*Window); if (CurrentWnd->Style & WS_MINIMIZE) {
17 years, 2 months
1
0
0
0
[tkreuzer] 32335: BITMAPOBJ_CopyBitmap: - release lock on failure - delete created bitmap on failure - copy flags, fixes a memory leak
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Wed Feb 13 02:14:07 2008 New Revision: 32335 URL:
http://svn.reactos.org/svn/reactos?rev=32335&view=rev
Log: BITMAPOBJ_CopyBitmap: - release lock on failure - delete created bitmap on failure - copy flags, fixes a memory leak Modified: trunk/reactos/subsystems/win32/win32k/objects/bitmaps.c Modified: trunk/reactos/subsystems/win32/win32k/objects/bitmaps.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/objects/bitmaps.c (original) +++ trunk/reactos/subsystems/win32/win32k/objects/bitmaps.c Wed Feb 13 02:14:07 2008 @@ -664,12 +664,20 @@ if (buf == NULL) { GDIOBJ_UnlockObjByPtr(GdiHandleTable, resBitmap); + GDIOBJ_UnlockObjByPtr(GdiHandleTable, Bitmap); + NtGdiDeleteObject(res); return 0; } IntGetBitmapBits (Bitmap, bm.bmWidthBytes * abs(bm.bmHeight), buf); IntSetBitmapBits (resBitmap, bm.bmWidthBytes * abs(bm.bmHeight), buf); ExFreePool (buf); + resBitmap->flFlags = Bitmap->flFlags; GDIOBJ_UnlockObjByPtr(GdiHandleTable, resBitmap); + } + else + { + NtGdiDeleteObject(res); + res = NULL; } }
17 years, 2 months
1
0
0
0
← Newer
1
...
17
18
19
20
21
22
23
...
46
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Results per page:
10
25
50
100
200