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
June
May
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
March 2009
----- 2025 -----
June 2025
May 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
28 participants
483 discussions
Start a n
N
ew thread
[jmorlan] 39862: In the CRT, replaced __set_errno calls having Win32 error codes as their argument with _dosmaperr.
by jmorlan@svn.reactos.org
Author: jmorlan Date: Wed Mar 4 10:39:44 2009 New Revision: 39862 URL:
http://svn.reactos.org/svn/reactos?rev=39862&view=rev
Log: In the CRT, replaced __set_errno calls having Win32 error codes as their argument with _dosmaperr. Modified: trunk/reactos/lib/sdk/crt/process/process.c trunk/reactos/lib/sdk/crt/stdio/file.c trunk/reactos/lib/sdk/crt/stdio/stat64.c Modified: trunk/reactos/lib/sdk/crt/process/process.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/process/proces…
============================================================================== --- trunk/reactos/lib/sdk/crt/process/process.c [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/process/process.c [iso-8859-1] Wed Mar 4 10:39:44 2009 @@ -296,7 +296,7 @@ { dwError = GetLastError(); ERR("%x\n", dwError); - __set_errno(dwError); + _dosmaperr(dwError); return(-1); } CloseHandle(ProcessInformation.hThread); Modified: trunk/reactos/lib/sdk/crt/stdio/file.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/stdio/file.c?r…
============================================================================== --- trunk/reactos/lib/sdk/crt/stdio/file.c [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/stdio/file.c [iso-8859-1] Wed Mar 4 10:39:44 2009 @@ -463,12 +463,12 @@ if (!filename || attr == INVALID_FILE_ATTRIBUTES) { - __set_errno(GetLastError()); + _dosmaperr(GetLastError()); return -1; } if ((attr & FILE_ATTRIBUTE_READONLY) && (mode & W_OK)) { - __set_errno(ERROR_ACCESS_DENIED); + _dosmaperr(ERROR_ACCESS_DENIED); return -1; } return 0; @@ -485,12 +485,12 @@ if (!filename || attr == INVALID_FILE_ATTRIBUTES) { - __set_errno(GetLastError()); + _dosmaperr(GetLastError()); return -1; } if ((attr & FILE_ATTRIBUTE_READONLY) && (mode & W_OK)) { - __set_errno(ERROR_ACCESS_DENIED); + _dosmaperr(ERROR_ACCESS_DENIED); return -1; } return 0; @@ -511,7 +511,7 @@ if (newFlags == oldFlags || SetFileAttributesA(path, newFlags)) return 0; } - __set_errno(GetLastError()); + _dosmaperr(GetLastError()); return -1; } @@ -530,7 +530,7 @@ if (newFlags == oldFlags || SetFileAttributesW(path, newFlags)) return 0; } - __set_errno(GetLastError()); + _dosmaperr(GetLastError()); return -1; } @@ -543,7 +543,7 @@ if(DeleteFileA(path)) return 0; TRACE("failed (%d)\n",GetLastError()); - __set_errno(GetLastError()); + _dosmaperr(GetLastError()); return -1; } @@ -556,7 +556,7 @@ if(DeleteFileW(path)) return 0; TRACE("failed (%d)\n",GetLastError()); - __set_errno(GetLastError()); + _dosmaperr(GetLastError()); return -1; } @@ -621,7 +621,7 @@ else if (!CloseHandle(hand)) { WARN(":failed-last error (%d)\n",GetLastError()); - __set_errno(GetLastError()); + _dosmaperr(GetLastError()); ret = -1; } else @@ -655,7 +655,7 @@ return 0; } TRACE(":failed-last error (%d)\n",GetLastError()); - __set_errno(GetLastError()); + _dosmaperr(GetLastError()); return -1; } TRACE(":ok\n"); @@ -701,7 +701,7 @@ else { ret = -1; - __set_errno(GetLastError()); + _dosmaperr(GetLastError()); } } else @@ -827,7 +827,7 @@ return ret.QuadPart; } TRACE(":error-last error (%d)\n",GetLastError()); - __set_errno(GetLastError()); + _dosmaperr(GetLastError()); return -1; } @@ -941,7 +941,7 @@ if (pos >= 0) { ret = SetEndOfFile(handle); - if (!ret) __set_errno(GetLastError()); + if (!ret) _dosmaperr(GetLastError()); } /* restore the file pointer */ @@ -1151,7 +1151,7 @@ if (!SetFileTime(hand, NULL, &at, &wt)) { - __set_errno(GetLastError()); + _dosmaperr(GetLastError()); return -1 ; } return 0; @@ -1324,7 +1324,7 @@ UNLOCK_FILES(); } else - __set_errno(GetLastError()); + _dosmaperr(GetLastError()); return ret; } @@ -1415,7 +1415,7 @@ if (hand == INVALID_HANDLE_VALUE) { WARN(":failed-last error (%d)\n",GetLastError()); - __set_errno(GetLastError()); + _dosmaperr(GetLastError()); return -1; } @@ -1445,7 +1445,7 @@ free(patha); return retval; } - __set_errno(GetLastError()); + _dosmaperr(GetLastError()); free(patha); return -1; } @@ -1490,7 +1490,7 @@ return retval; } - __set_errno(GetLastError()); + _dosmaperr(GetLastError()); return -1; } @@ -2237,7 +2237,7 @@ } free(patha); free(modea); - __set_errno(GetLastError()); + _dosmaperr(GetLastError()); return NULL; } @@ -2419,7 +2419,7 @@ { file->_flag = 0; WARN(":failed-last error (%d)\n",GetLastError()); - __set_errno(GetLastError()); + _dosmaperr(GetLastError()); file = NULL; } } @@ -2634,7 +2634,7 @@ if (DeleteFileA(path)) return 0; TRACE(":failed (%d)\n",GetLastError()); - __set_errno(GetLastError()); + _dosmaperr(GetLastError()); return -1; } @@ -2647,7 +2647,7 @@ if (DeleteFileW(path)) return 0; TRACE(":failed (%d)\n",GetLastError()); - __set_errno(GetLastError()); + _dosmaperr(GetLastError()); return -1; } @@ -2660,7 +2660,7 @@ if (MoveFileExA(oldpath, newpath, MOVEFILE_COPY_ALLOWED)) return 0; TRACE(":failed (%d)\n",GetLastError()); - __set_errno(GetLastError()); + _dosmaperr(GetLastError()); return -1; } @@ -2673,7 +2673,7 @@ if (MoveFileExW(oldpath, newpath, MOVEFILE_COPY_ALLOWED)) return 0; TRACE(":failed (%d)\n",GetLastError()); - __set_errno(GetLastError()); + _dosmaperr(GetLastError()); return -1; } Modified: trunk/reactos/lib/sdk/crt/stdio/stat64.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/stdio/stat64.c…
============================================================================== --- trunk/reactos/lib/sdk/crt/stdio/stat64.c [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/stdio/stat64.c [iso-8859-1] Wed Mar 4 10:39:44 2009 @@ -34,7 +34,7 @@ if (!GetFileAttributesEx(path, GetFileExInfoStandard, &hfi)) { TRACE("failed (%d)\n",GetLastError()); - __set_errno(ERROR_FILE_NOT_FOUND); + _dosmaperr(ERROR_FILE_NOT_FOUND); return -1; } @@ -101,7 +101,7 @@ if (!buf) { WARN(":failed-NULL buf\n"); - __set_errno(ERROR_INVALID_PARAMETER); + _dosmaperr(ERROR_INVALID_PARAMETER); return -1; } @@ -125,7 +125,7 @@ if (!GetFileInformationByHandle(hand, &hfi)) { WARN(":failed-last error (%d)\n",GetLastError()); - __set_errno(ERROR_INVALID_PARAMETER); + _dosmaperr(ERROR_INVALID_PARAMETER); return -1; } buf->st_mode = _S_IFREG | _S_IREAD;
16 years, 3 months
1
0
0
0
[jmorlan] 39861: A little cleanup of cmd.c: - Remove bIsBatch variable, and just check for bc != NULL instead. - Since Batch doesn't return until the batch file is finished, CMD /C no longer needs to call ProcessInput. - Don't bother loading ntdll.dll on Windows 98; it doesn't export the functions we want to use from it.
by jmorlan@svn.reactos.org
Author: jmorlan Date: Wed Mar 4 07:23:40 2009 New Revision: 39861 URL:
http://svn.reactos.org/svn/reactos?rev=39861&view=rev
Log: A little cleanup of cmd.c: - Remove bIsBatch variable, and just check for bc != NULL instead. - Since Batch doesn't return until the batch file is finished, CMD /C no longer needs to call ProcessInput. - Don't bother loading ntdll.dll on Windows 98; it doesn't export the functions we want to use from it. Modified: trunk/reactos/base/shell/cmd/cmd.c Modified: trunk/reactos/base/shell/cmd/cmd.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/shell/cmd/cmd.c?rev=3…
============================================================================== --- trunk/reactos/base/shell/cmd/cmd.c [iso-8859-1] (original) +++ trunk/reactos/base/shell/cmd/cmd.c [iso-8859-1] Wed Mar 4 07:23:40 2009 @@ -163,7 +163,6 @@ HANDLE hOut; HANDLE hConsole; HANDLE CMD_ModuleHandle; -HMODULE NtDllModule; static NtQueryInformationProcessProc NtQueryInformationProcessPtr = NULL; static NtReadVirtualMemoryProc NtReadVirtualMemoryPtr = NULL; @@ -1101,9 +1100,6 @@ return NULL; } -BOOL bNoInteractive; -BOOL bIsBatch; - BOOL SubstituteVars(TCHAR *Src, TCHAR *Dest, TCHAR Delim) { @@ -1131,7 +1127,7 @@ } Src++; - if (bIsBatch && Delim == _T('%')) + if (bc && Delim == _T('%')) { UINT NameLen; Var = GetBatchVar(Src, &NameLen); @@ -1162,7 +1158,7 @@ if (Var == NULL) { /* In a batch file, %NONEXISTENT% "expands" to an empty string */ - if (bIsBatch) + if (bc) continue; goto bad_subst; } @@ -1244,7 +1240,7 @@ bad_subst: Src = SubstStart; - if (!bIsBatch) + if (!bc) APPEND1(Delim) } *Dest = _T('\0'); @@ -1325,12 +1321,6 @@ /* if no batch input then... */ if (bc == NULL) { - if (bNoInteractive) - { - bExit = TRUE; - return FALSE; - } - if (bMore) { ConOutPrintf(_T("More? ")); @@ -1349,25 +1339,22 @@ return FALSE; } ip = readline; - bIsBatch = FALSE; } else { ip = ReadBatchLine(); if (!ip) return FALSE; - bIsBatch = TRUE; } return SubstituteVars(ip, commandline, _T('%')); } static INT -ProcessInput (BOOL bFlag) +ProcessInput() { PARSED_COMMAND *Cmd; - bNoInteractive = bFlag; do { Cmd = ParseCommand(NULL); @@ -1575,6 +1562,7 @@ static VOID Initialize() { + HMODULE NtDllModule; TCHAR commandline[CMDLINE_LENGTH]; TCHAR ModuleName[_MAX_PATH + 1]; TCHAR lpBuffer[2]; @@ -1591,18 +1579,7 @@ /* Some people like to run ReactOS cmd.exe on Win98, it helps in the * build process. So don't link implicitly against ntdll.dll, load it * dynamically instead */ - - if (osvi.dwPlatformId == VER_PLATFORM_WIN32_NT) - { - /* ntdll is always present on NT */ - NtDllModule = GetModuleHandle(TEXT("ntdll.dll")); - } - else - { - /* not all 9x versions have a ntdll.dll, try to load it */ - NtDllModule = LoadLibrary(TEXT("ntdll.dll")); - } - + NtDllModule = GetModuleHandle(TEXT("ntdll.dll")); if (NtDllModule != NULL) { NtQueryInformationProcessPtr = (NtQueryInformationProcessProc)GetProcAddress(NtDllModule, "NtQueryInformationProcess"); @@ -1663,7 +1640,7 @@ /* This just runs a program and exits */ GetCmdLineCommand(commandline, &ptr[2], AlwaysStrip); ParseCommandLine(commandline); - cmd_exit (ProcessInput (TRUE)); + cmd_exit(nErrorLevel); } else if (_totlower(ptr[1]) == _T('k')) { @@ -1757,11 +1734,6 @@ RemoveBreakHandler (); SetConsoleMode( GetStdHandle( STD_INPUT_HANDLE ), ENABLE_LINE_INPUT | ENABLE_PROCESSED_INPUT | ENABLE_ECHO_INPUT ); - - if (NtDllModule != NULL) - { - FreeLibrary(NtDllModule); - } } /* @@ -1799,7 +1771,7 @@ Initialize(); /* call prompt routine */ - nExitCode = ProcessInput(FALSE); + nExitCode = ProcessInput(); /* do the cleanup */ Cleanup();
16 years, 3 months
1
0
0
0
[fireball] 39859: - Refactor Fast Reference implementation into a generic module with init/acquire/release/compare/insert interfaces, and update the executive callback & object manager referencing code to use it. - Always capture fast reference values on the stack since a fast reference is by nature volatile. - Based off earlier work from Alex to fix callback implementation.
by fireball@svn.reactos.org
Author: fireball Date: Tue Mar 3 23:24:10 2009 New Revision: 39859 URL:
http://svn.reactos.org/svn/reactos?rev=39859&view=rev
Log: - Refactor Fast Reference implementation into a generic module with init/acquire/release/compare/insert interfaces, and update the executive callback & object manager referencing code to use it. - Always capture fast reference values on the stack since a fast reference is by nature volatile. - Based off earlier work from Alex to fix callback implementation. Modified: trunk/reactos/ntoskrnl/ex/callback.c trunk/reactos/ntoskrnl/include/internal/ex.h trunk/reactos/ntoskrnl/ob/obref.c Modified: trunk/reactos/ntoskrnl/ex/callback.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ex/callback.c?rev…
============================================================================== --- trunk/reactos/ntoskrnl/ex/callback.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/ex/callback.c [iso-8859-1] Tue Mar 3 23:24:10 2009 @@ -45,8 +45,8 @@ NTAPI ExInitializeCallBack(IN OUT PEX_CALLBACK Callback) { - /* Initialize the fast references */ - Callback->RoutineBlock.Object = NULL; + /* Initialize the fast reference */ + ExInitializeFastReference(&Callback->RoutineBlock, NULL); } PEX_CALLBACK_ROUTINE_BLOCK @@ -54,93 +54,66 @@ ExAllocateCallBack(IN PEX_CALLBACK_FUNCTION Function, IN PVOID Context) { - PEX_CALLBACK_ROUTINE_BLOCK Callback; + PEX_CALLBACK_ROUTINE_BLOCK CallbackBlock; /* Allocate a callback */ - Callback = ExAllocatePoolWithTag(PagedPool, - sizeof(*Callback), - TAG('C', 'b', 'r', 'b')); - if (Callback) + CallbackBlock = ExAllocatePoolWithTag(PagedPool, + sizeof(EX_CALLBACK_ROUTINE_BLOCK), + 'CbRb'); + if (CallbackBlock) { /* Initialize it */ - Callback->Function = Function; - Callback->Context = Context; - ExInitializeRundownProtection(&Callback->RundownProtect); + CallbackBlock->Function = Function; + CallbackBlock->Context = Context; + ExInitializeRundownProtection(&CallbackBlock->RundownProtect); } /* Return it */ - return Callback; + return CallbackBlock; } VOID NTAPI -ExFreeCallBack(IN PEX_CALLBACK_ROUTINE_BLOCK Callback) +ExFreeCallBack(IN PEX_CALLBACK_ROUTINE_BLOCK CallbackBlock) { /* Just free it from memory */ - ExFreePool(Callback); + ExFreePool(CallbackBlock); } VOID NTAPI -ExWaitForCallBacks(IN PEX_CALLBACK_ROUTINE_BLOCK Callback) +ExWaitForCallBacks(IN PEX_CALLBACK_ROUTINE_BLOCK CallbackBlock) { /* Wait on the rundown */ - ExWaitForRundownProtectionRelease(&Callback->RundownProtect); + ExWaitForRundownProtectionRelease(&CallbackBlock->RundownProtect); } PEX_CALLBACK_FUNCTION NTAPI -ExGetCallBackBlockRoutine(IN PEX_CALLBACK_ROUTINE_BLOCK Callback) +ExGetCallBackBlockRoutine(IN PEX_CALLBACK_ROUTINE_BLOCK CallbackBlock) { /* Return the function */ - return Callback->Function; + return CallbackBlock->Function; } PVOID NTAPI -ExGetCallBackBlockContext(IN PEX_CALLBACK_ROUTINE_BLOCK Callback) +ExGetCallBackBlockContext(IN PEX_CALLBACK_ROUTINE_BLOCK CallbackBlock) { /* Return the context */ - return Callback->Context; + return CallbackBlock->Context; } VOID NTAPI ExDereferenceCallBackBlock(IN OUT PEX_CALLBACK CallBack, - IN PEX_CALLBACK_ROUTINE_BLOCK CallbackRoutineBlock) -{ - PEX_FAST_REF FastRef = &CallBack->RoutineBlock; - EX_FAST_REF Value, NewValue; - - /* Sanity checks */ - ASSERT(CallbackRoutineBlock); - ASSERT(!(((ULONG_PTR)CallbackRoutineBlock) & MAX_FAST_REFS)); - - /* Start dereference loop */ - for (;;) - { - /* Get the current count */ - Value = *FastRef; - if ((Value.Value ^ (ULONG_PTR)CallbackRoutineBlock) < MAX_FAST_REFS) - { - /* Decrease the reference count */ - NewValue.Value = Value.Value + 1; - NewValue.Object = InterlockedCompareExchangePointer(&FastRef->Object, - NewValue.Object, - Value.Object); - if (NewValue.Object != Value.Object) continue; - - /* We're all done */ - break; - } - else - { - /* Release rundown protection */ - ExReleaseRundownProtection(&CallbackRoutineBlock->RundownProtect); - - /* We're all done */ - break; - } + IN PEX_CALLBACK_ROUTINE_BLOCK CallbackBlock) +{ + /* Release a fast reference */ + if (!ExReleaseFastReference(&CallBack->RoutineBlock, CallbackBlock)) + { + /* Take slow path */ + ExReleaseRundownProtection(&CallbackBlock->RundownProtect); } } @@ -148,89 +121,48 @@ NTAPI ExReferenceCallBackBlock(IN OUT PEX_CALLBACK CallBack) { - PEX_FAST_REF FastRef = &CallBack->RoutineBlock; - EX_FAST_REF Value, NewValue; - PEX_CALLBACK_ROUTINE_BLOCK CallbackRoutineBlock; - - /* Start reference loop */ - for (;;) - { - /* Get the current count */ - Value = *FastRef; - if (Value.RefCnt != 0) - { - /* Increase the reference count */ - NewValue.Value = Value.Value - 1; - NewValue.Object = InterlockedCompareExchangePointer(&FastRef->Object, - NewValue.Object, - Value.Object); - if (NewValue.Object != Value.Object) continue; - } - - /* All done */ - break; - } + EX_FAST_REF OldValue; + ULONG_PTR Count; + PEX_CALLBACK_ROUTINE_BLOCK CallbackBlock; + + /* Acquire a reference */ + OldValue = ExAcquireFastReference(&CallBack->RoutineBlock); + Count = ExGetCountFastReference(OldValue); /* Fail if there isn't any object */ - if (!Value.Value) return NULL; + if (!ExGetObjectFastReference(OldValue)) return NULL; /* Check if we don't have a reference */ - if (!Value.RefCnt) + if (!Count) { /* FIXME: Race */ - CallbackRoutineBlock = NULL; DPRINT1("Unhandled callback race condition\n"); ASSERT(FALSE); - } - else - { - /* Get the callback block */ - CallbackRoutineBlock = (PVOID)(Value.Value &~ MAX_FAST_REFS); - - /* Check if this is the last reference */ - if (Value.RefCnt == 1) + return NULL; + } + + /* Get the callback block */ + CallbackBlock = ExGetObjectFastReference(OldValue); + + /* Check if this is the last reference */ + if (Count == 1) + { + /* Acquire rundown protection */ + if (ExfAcquireRundownProtectionEx(&CallbackBlock->RundownProtect, + MAX_FAST_REFS)) { - /* Acquire rundown protection */ - if (ExfAcquireRundownProtectionEx(&CallbackRoutineBlock-> - RundownProtect, - MAX_FAST_REFS)) + /* Insert references */ + if (!ExInsertFastReference(&CallBack->RoutineBlock, CallbackBlock)) { - /* Sanity check */ - ASSERT(!(((ULONG_PTR)CallbackRoutineBlock) & MAX_FAST_REFS)); - - /* Start reference loop */ - for (;;) - { - /* Check if the current count is too high */ - Value = *FastRef; - if (((Value.RefCnt + MAX_FAST_REFS) > MAX_FAST_REFS) || - ((Value.Value &~ MAX_FAST_REFS) != - (ULONG_PTR)CallbackRoutineBlock)) - { - /* Backdown the rundown acquire */ - ExfReleaseRundownProtectionEx(&CallbackRoutineBlock-> - RundownProtect, - MAX_FAST_REFS); - break; - } - - /* Increase the reference count */ - NewValue.Value = Value.Value + MAX_FAST_REFS; - NewValue.Object = - InterlockedCompareExchangePointer(&FastRef->Object, - NewValue.Object, - Value.Object); - if (NewValue.Object != Value.Object) continue; - - /* Break out if the change was OK */ - break; - } + /* Backdown the rundown acquire */ + ExfReleaseRundownProtectionEx(&CallbackBlock->RundownProtect, + MAX_FAST_REFS); } } } /* Return the callback block */ - return CallbackRoutineBlock; + return CallbackBlock; } BOOLEAN @@ -239,9 +171,9 @@ IN PEX_CALLBACK_ROUTINE_BLOCK NewBlock, IN PEX_CALLBACK_ROUTINE_BLOCK OldBlock) { - EX_FAST_REF Value, NewValue; - PEX_CALLBACK_ROUTINE_BLOCK CallbackRoutineBlock; - PEX_FAST_REF FastRef = &CallBack->RoutineBlock; + EX_FAST_REF OldValue; + PEX_CALLBACK_ROUTINE_BLOCK CallbackBlock; + ULONG_PTR Count; /* Check that we have a new block */ if (NewBlock) @@ -255,47 +187,21 @@ return FALSE; } } - - /* Sanity check and start swap loop */ - ASSERT(!(((ULONG_PTR)NewBlock) & MAX_FAST_REFS)); - for (;;) - { - /* Get the current value */ - Value = *FastRef; - - /* Make sure there's enough references to swap */ - if (!((Value.Value ^ (ULONG_PTR)OldBlock) <= MAX_FAST_REFS)) break; - - /* Check if we have an object to swap */ - if (NewBlock) - { - /* Set up the value with maximum fast references */ - NewValue.Value = (ULONG_PTR)NewBlock | MAX_FAST_REFS; - } - else - { - /* Write the object address itself (which is empty) */ - NewValue.Value = (ULONG_PTR)NewBlock; - } - - /* Do the actual compare exchange */ - NewValue.Object = InterlockedCompareExchangePointer(&FastRef->Object, - NewValue.Object, - Value.Object); - if (NewValue.Object != Value.Object) continue; - - /* All done */ - break; - } + + /* Do the swap */ + OldValue = ExCompareSwapFastReference(&CallBack->RoutineBlock, + NewBlock, + OldBlock); /* Get the routine block */ - CallbackRoutineBlock = (PVOID)(Value.Value & ~MAX_FAST_REFS); + CallbackBlock = ExGetObjectFastReference(OldValue); + Count = ExGetCountFastReference(OldValue); /* Make sure the swap worked */ - if (CallbackRoutineBlock == OldBlock) + if (CallbackBlock == OldBlock) { /* Make sure we replaced a valid pointer */ - if (CallbackRoutineBlock) + if (CallbackBlock) { /* Acquire the flush lock and immediately release it */ KeEnterCriticalRegion(); @@ -303,8 +209,8 @@ /* Release rundown protection */ KeLeaveCriticalRegion(); - ExfReleaseRundownProtectionEx(&CallbackRoutineBlock->RundownProtect, - Value.RefCnt + 1); + ExfReleaseRundownProtectionEx(&CallbackBlock->RundownProtect, + Count + 1); } /* Compare worked */ Modified: trunk/reactos/ntoskrnl/include/internal/ex.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/…
============================================================================== --- trunk/reactos/ntoskrnl/include/internal/ex.h [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/include/internal/ex.h [iso-8859-1] Tue Mar 3 23:24:10 2009 @@ -119,346 +119,6 @@ #endif -/* INITIALIZATION FUNCTIONS *************************************************/ - -VOID -NTAPI -ExpWin32kInit(VOID); - -VOID -NTAPI -ExInit2(VOID); - -VOID -NTAPI -Phase1Initialization( - IN PVOID Context -); - -VOID -NTAPI -ExpInitializePushLocks(VOID); - -BOOLEAN -NTAPI -ExRefreshTimeZoneInformation( - IN PLARGE_INTEGER SystemBootTime -); - -VOID -NTAPI -ExpInitializeWorkerThreads(VOID); - -VOID -NTAPI -ExpInitLookasideLists(VOID); - -VOID -NTAPI -ExInitializeSystemLookasideList( - IN PGENERAL_LOOKASIDE List, - IN POOL_TYPE Type, - IN ULONG Size, - IN ULONG Tag, - IN USHORT MaximumDepth, - IN PLIST_ENTRY ListHead -); - -BOOLEAN -NTAPI -ExpInitializeCallbacks(VOID); - -VOID -NTAPI -ExpInitUuids(VOID); - -VOID -NTAPI -ExpInitializeExecutive( - IN ULONG Cpu, - IN PLOADER_PARAMETER_BLOCK LoaderBlock -); - -VOID -NTAPI -ExpInitializeEventImplementation(VOID); - -VOID -NTAPI -ExpInitializeEventImplementation(VOID); - -VOID -NTAPI -ExpInitializeEventPairImplementation(VOID); - -VOID -NTAPI -ExpInitializeSemaphoreImplementation(VOID); - -VOID -NTAPI -ExpInitializeMutantImplementation(VOID); - -VOID -NTAPI -ExpInitializeTimerImplementation(VOID); - -VOID -NTAPI -ExpInitializeProfileImplementation(VOID); - -VOID -NTAPI -ExpResourceInitialization(VOID); - -VOID -NTAPI -ExInitPoolLookasidePointers(VOID); - -/* Callback Functions ********************************************************/ - -VOID -NTAPI -ExInitializeCallBack( - IN OUT PEX_CALLBACK Callback -); - -PEX_CALLBACK_ROUTINE_BLOCK -NTAPI -ExAllocateCallBack( - IN PEX_CALLBACK_FUNCTION Function, - IN PVOID Context -); - -VOID -NTAPI -ExFreeCallBack( - IN PEX_CALLBACK_ROUTINE_BLOCK CallbackRoutineBlock -); - -BOOLEAN -NTAPI -ExCompareExchangeCallBack ( - IN OUT PEX_CALLBACK CallBack, - IN PEX_CALLBACK_ROUTINE_BLOCK NewBlock, - IN PEX_CALLBACK_ROUTINE_BLOCK OldBlock -); - -PEX_CALLBACK_ROUTINE_BLOCK -NTAPI -ExReferenceCallBackBlock( - IN OUT PEX_CALLBACK CallBack -); - -VOID -NTAPI -ExDereferenceCallBackBlock( - IN OUT PEX_CALLBACK CallBack, - IN PEX_CALLBACK_ROUTINE_BLOCK CallbackRoutineBlock -); - -PEX_CALLBACK_FUNCTION -NTAPI -ExGetCallBackBlockRoutine( - IN PEX_CALLBACK_ROUTINE_BLOCK CallbackRoutineBlock -); - -PVOID -NTAPI -ExGetCallBackBlockContext( - IN PEX_CALLBACK_ROUTINE_BLOCK CallbackRoutineBlock -); - -VOID -NTAPI -ExWaitForCallBacks( - IN PEX_CALLBACK_ROUTINE_BLOCK CallbackRoutineBlock -); - -/* Rundown Functions ********************************************************/ - -VOID -FASTCALL -ExfInitializeRundownProtection( - OUT PEX_RUNDOWN_REF RunRef -); - -VOID -FASTCALL -ExfReInitializeRundownProtection( - OUT PEX_RUNDOWN_REF RunRef -); - -BOOLEAN -FASTCALL -ExfAcquireRundownProtection( - IN OUT PEX_RUNDOWN_REF RunRef -); - -BOOLEAN -FASTCALL -ExfAcquireRundownProtectionEx( - IN OUT PEX_RUNDOWN_REF RunRef, - IN ULONG Count -); - -VOID -FASTCALL -ExfReleaseRundownProtection( - IN OUT PEX_RUNDOWN_REF RunRef -); - -VOID -FASTCALL -ExfReleaseRundownProtectionEx( - IN OUT PEX_RUNDOWN_REF RunRef, - IN ULONG Count -); - -VOID -FASTCALL -ExfRundownCompleted( - OUT PEX_RUNDOWN_REF RunRef -); - -VOID -FASTCALL -ExfWaitForRundownProtectionRelease( - IN OUT PEX_RUNDOWN_REF RunRef -); - -/* HANDLE TABLE FUNCTIONS ***************************************************/ - -typedef BOOLEAN -(NTAPI *PEX_SWEEP_HANDLE_CALLBACK)( - PHANDLE_TABLE_ENTRY HandleTableEntry, - HANDLE Handle, - PVOID Context -); - -typedef BOOLEAN -(NTAPI *PEX_DUPLICATE_HANDLE_CALLBACK)( - IN PEPROCESS Process, - IN PHANDLE_TABLE HandleTable, - IN PHANDLE_TABLE_ENTRY HandleTableEntry, - IN PHANDLE_TABLE_ENTRY NewEntry -); - -typedef BOOLEAN -(NTAPI *PEX_CHANGE_HANDLE_CALLBACK)( - PHANDLE_TABLE_ENTRY HandleTableEntry, - ULONG_PTR Context -); - -VOID -NTAPI -ExpInitializeHandleTables( - VOID -); - -PHANDLE_TABLE -NTAPI -ExCreateHandleTable( - IN PEPROCESS Process OPTIONAL -); - -VOID -NTAPI -ExUnlockHandleTableEntry( - IN PHANDLE_TABLE HandleTable, - IN PHANDLE_TABLE_ENTRY HandleTableEntry -); - -HANDLE -NTAPI -ExCreateHandle( - IN PHANDLE_TABLE HandleTable, - IN PHANDLE_TABLE_ENTRY HandleTableEntry -); - -VOID -NTAPI -ExDestroyHandleTable( - IN PHANDLE_TABLE HandleTable, - IN PVOID DestroyHandleProcedure OPTIONAL -); - -BOOLEAN -NTAPI -ExDestroyHandle( - IN PHANDLE_TABLE HandleTable, - IN HANDLE Handle, - IN PHANDLE_TABLE_ENTRY HandleTableEntry OPTIONAL -); - -PHANDLE_TABLE_ENTRY -NTAPI -ExMapHandleToPointer( - IN PHANDLE_TABLE HandleTable, - IN HANDLE Handle -); - -PHANDLE_TABLE -NTAPI -ExDupHandleTable( - IN PEPROCESS Process, - IN PHANDLE_TABLE HandleTable, - IN PEX_DUPLICATE_HANDLE_CALLBACK DupHandleProcedure, - IN ULONG_PTR Mask -); - -BOOLEAN -NTAPI -ExChangeHandle( - IN PHANDLE_TABLE HandleTable, - IN HANDLE Handle, - IN PEX_CHANGE_HANDLE_CALLBACK ChangeRoutine, - IN ULONG_PTR Context -); - -VOID -NTAPI -ExSweepHandleTable( - IN PHANDLE_TABLE HandleTable, - IN PEX_SWEEP_HANDLE_CALLBACK EnumHandleProcedure, - IN PVOID Context -); - -/* PSEH EXCEPTION HANDLING **************************************************/ - -LONG -NTAPI -ExSystemExceptionFilter(VOID); - -/* CALLBACKS *****************************************************************/ - -FORCEINLINE -VOID -ExDoCallBack(IN OUT PEX_CALLBACK Callback, - IN PVOID Context, - IN PVOID Argument1, - IN PVOID Argument2) -{ - PEX_CALLBACK_ROUTINE_BLOCK CallbackRoutineBlock; - PEX_CALLBACK_FUNCTION Function; - - /* Reference the block */ - CallbackRoutineBlock = ExReferenceCallBackBlock(Callback); - if (CallbackRoutineBlock) - { - /* Get the function */ - Function = ExGetCallBackBlockRoutine(CallbackRoutineBlock); - - /* Do the callback */ - Function(Context, Argument1, Argument2); - - /* Now dereference it */ - ExDereferenceCallBackBlock(Callback, CallbackRoutineBlock); - } -} - -/* RUNDOWN *******************************************************************/ - #ifdef _WIN64 #define ExpChangeRundown(x, y, z) InterlockedCompareExchange64((PLONGLONG)x, y, z) #define ExpSetRundown(x, y) InterlockedExchange64((PLONGLONG)x, y) @@ -467,6 +127,559 @@ #define ExpChangePushlock(x, y, z) LongToPtr(InterlockedCompareExchange((PLONG)x, PtrToLong(y), PtrToLong(z))) #define ExpSetRundown(x, y) InterlockedExchange((PLONG)x, y) #endif + +/* INITIALIZATION FUNCTIONS *************************************************/ + +VOID +NTAPI +ExpWin32kInit(VOID); + +VOID +NTAPI +ExInit2(VOID); + +VOID +NTAPI +Phase1Initialization( + IN PVOID Context +); + +VOID +NTAPI +ExpInitializePushLocks(VOID); + +BOOLEAN +NTAPI +ExRefreshTimeZoneInformation( + IN PLARGE_INTEGER SystemBootTime +); + +VOID +NTAPI +ExpInitializeWorkerThreads(VOID); + +VOID +NTAPI +ExpInitLookasideLists(VOID); + +VOID +NTAPI +ExInitializeSystemLookasideList( + IN PGENERAL_LOOKASIDE List, + IN POOL_TYPE Type, + IN ULONG Size, + IN ULONG Tag, + IN USHORT MaximumDepth, + IN PLIST_ENTRY ListHead +); + +BOOLEAN +NTAPI +ExpInitializeCallbacks(VOID); + +VOID +NTAPI +ExpInitUuids(VOID); + +VOID +NTAPI +ExpInitializeExecutive( + IN ULONG Cpu, + IN PLOADER_PARAMETER_BLOCK LoaderBlock +); + +VOID +NTAPI +ExpInitializeEventImplementation(VOID); + +VOID +NTAPI +ExpInitializeEventImplementation(VOID); + +VOID +NTAPI +ExpInitializeEventPairImplementation(VOID); + +VOID +NTAPI +ExpInitializeSemaphoreImplementation(VOID); + +VOID +NTAPI +ExpInitializeMutantImplementation(VOID); + +VOID +NTAPI +ExpInitializeTimerImplementation(VOID); + +VOID +NTAPI +ExpInitializeProfileImplementation(VOID); + +VOID +NTAPI +ExpResourceInitialization(VOID); + +VOID +NTAPI +ExInitPoolLookasidePointers(VOID); + +/* Callback Functions ********************************************************/ + +VOID +NTAPI +ExInitializeCallBack( + IN OUT PEX_CALLBACK Callback +); + +PEX_CALLBACK_ROUTINE_BLOCK +NTAPI +ExAllocateCallBack( + IN PEX_CALLBACK_FUNCTION Function, + IN PVOID Context +); + +VOID +NTAPI +ExFreeCallBack( + IN PEX_CALLBACK_ROUTINE_BLOCK CallbackRoutineBlock +); + +BOOLEAN +NTAPI +ExCompareExchangeCallBack ( + IN OUT PEX_CALLBACK CallBack, + IN PEX_CALLBACK_ROUTINE_BLOCK NewBlock, + IN PEX_CALLBACK_ROUTINE_BLOCK OldBlock +); + +PEX_CALLBACK_ROUTINE_BLOCK +NTAPI +ExReferenceCallBackBlock( + IN OUT PEX_CALLBACK CallBack +); + +VOID +NTAPI +ExDereferenceCallBackBlock( + IN OUT PEX_CALLBACK CallBack, + IN PEX_CALLBACK_ROUTINE_BLOCK CallbackRoutineBlock +); + +PEX_CALLBACK_FUNCTION +NTAPI +ExGetCallBackBlockRoutine( + IN PEX_CALLBACK_ROUTINE_BLOCK CallbackRoutineBlock +); + +PVOID +NTAPI +ExGetCallBackBlockContext( + IN PEX_CALLBACK_ROUTINE_BLOCK CallbackRoutineBlock +); + +VOID +NTAPI +ExWaitForCallBacks( + IN PEX_CALLBACK_ROUTINE_BLOCK CallbackRoutineBlock +); + +/* Rundown Functions ********************************************************/ + +VOID +FASTCALL +ExfInitializeRundownProtection( + OUT PEX_RUNDOWN_REF RunRef +); + +VOID +FASTCALL +ExfReInitializeRundownProtection( + OUT PEX_RUNDOWN_REF RunRef +); + +BOOLEAN +FASTCALL +ExfAcquireRundownProtection( + IN OUT PEX_RUNDOWN_REF RunRef +); + +BOOLEAN +FASTCALL +ExfAcquireRundownProtectionEx( + IN OUT PEX_RUNDOWN_REF RunRef, + IN ULONG Count +); + +VOID +FASTCALL +ExfReleaseRundownProtection( + IN OUT PEX_RUNDOWN_REF RunRef +); + +VOID +FASTCALL +ExfReleaseRundownProtectionEx( + IN OUT PEX_RUNDOWN_REF RunRef, + IN ULONG Count +); + +VOID +FASTCALL +ExfRundownCompleted( + OUT PEX_RUNDOWN_REF RunRef +); + +VOID +FASTCALL +ExfWaitForRundownProtectionRelease( + IN OUT PEX_RUNDOWN_REF RunRef +); + +/* HANDLE TABLE FUNCTIONS ***************************************************/ + +typedef BOOLEAN +(NTAPI *PEX_SWEEP_HANDLE_CALLBACK)( + PHANDLE_TABLE_ENTRY HandleTableEntry, + HANDLE Handle, + PVOID Context +); + +typedef BOOLEAN +(NTAPI *PEX_DUPLICATE_HANDLE_CALLBACK)( + IN PEPROCESS Process, + IN PHANDLE_TABLE HandleTable, + IN PHANDLE_TABLE_ENTRY HandleTableEntry, + IN PHANDLE_TABLE_ENTRY NewEntry +); + +typedef BOOLEAN +(NTAPI *PEX_CHANGE_HANDLE_CALLBACK)( + PHANDLE_TABLE_ENTRY HandleTableEntry, + ULONG_PTR Context +); + +VOID +NTAPI +ExpInitializeHandleTables( + VOID +); + +PHANDLE_TABLE +NTAPI +ExCreateHandleTable( + IN PEPROCESS Process OPTIONAL +); + +VOID +NTAPI +ExUnlockHandleTableEntry( + IN PHANDLE_TABLE HandleTable, + IN PHANDLE_TABLE_ENTRY HandleTableEntry +); + +HANDLE +NTAPI +ExCreateHandle( + IN PHANDLE_TABLE HandleTable, + IN PHANDLE_TABLE_ENTRY HandleTableEntry +); + +VOID +NTAPI +ExDestroyHandleTable( + IN PHANDLE_TABLE HandleTable, + IN PVOID DestroyHandleProcedure OPTIONAL +); + +BOOLEAN +NTAPI +ExDestroyHandle( + IN PHANDLE_TABLE HandleTable, + IN HANDLE Handle, + IN PHANDLE_TABLE_ENTRY HandleTableEntry OPTIONAL +); + +PHANDLE_TABLE_ENTRY +NTAPI +ExMapHandleToPointer( + IN PHANDLE_TABLE HandleTable, + IN HANDLE Handle +); + +PHANDLE_TABLE +NTAPI +ExDupHandleTable( + IN PEPROCESS Process, + IN PHANDLE_TABLE HandleTable, + IN PEX_DUPLICATE_HANDLE_CALLBACK DupHandleProcedure, + IN ULONG_PTR Mask +); + +BOOLEAN +NTAPI +ExChangeHandle( + IN PHANDLE_TABLE HandleTable, + IN HANDLE Handle, + IN PEX_CHANGE_HANDLE_CALLBACK ChangeRoutine, + IN ULONG_PTR Context +); + +VOID +NTAPI +ExSweepHandleTable( + IN PHANDLE_TABLE HandleTable, + IN PEX_SWEEP_HANDLE_CALLBACK EnumHandleProcedure, + IN PVOID Context +); + +/* PSEH EXCEPTION HANDLING **************************************************/ + +LONG +NTAPI +ExSystemExceptionFilter(VOID); + +/* CALLBACKS *****************************************************************/ + +FORCEINLINE +VOID +ExDoCallBack(IN OUT PEX_CALLBACK Callback, + IN PVOID Context, + IN PVOID Argument1, + IN PVOID Argument2) +{ + PEX_CALLBACK_ROUTINE_BLOCK CallbackBlock; + PEX_CALLBACK_FUNCTION Function; + + /* Reference the block */ + CallbackBlock = ExReferenceCallBackBlock(Callback); + if (CallbackBlock) + { + /* Get the function */ + Function = ExGetCallBackBlockRoutine(CallbackBlock); + + /* Do the callback */ + Function(Context, Argument1, Argument2); + + /* Now dereference it */ + ExDereferenceCallBackBlock(Callback, CallbackBlock); + } +} + +/* FAST REFS ******************************************************************/ + +FORCEINLINE +PVOID +ExGetObjectFastReference(IN EX_FAST_REF FastRef) +{ + /* Return the unbiased pointer */ + return (PVOID)(FastRef.Value & ~MAX_FAST_REFS); +} + +FORCEINLINE +ULONG +ExGetCountFastReference(IN EX_FAST_REF FastRef) +{ + /* Return the reference count */ + return FastRef.RefCnt; +} + +FORCEINLINE +VOID +ExInitializeFastReference(OUT PEX_FAST_REF FastRef, + IN OPTIONAL PVOID Object) +{ + /* Sanity check */ + ASSERT((((ULONG_PTR)Object) & MAX_FAST_REFS) == 0); + + /* Check if an object is being set */ + if (!Object) + { + /* Clear the field */ + FastRef->Object = NULL; + } + else + { + /* Otherwise, we assume the object was referenced and is ready */ + FastRef->Value = (ULONG_PTR)Object | MAX_FAST_REFS; + } +} + +FORCEINLINE +EX_FAST_REF +ExAcquireFastReference(IN OUT PEX_FAST_REF FastRef) +{ + EX_FAST_REF OldValue, NewValue; + + /* Start reference loop */ + for (;;) + { + /* Get the current reference count */ + OldValue = *FastRef; + if (OldValue.RefCnt) + { + /* Increase the reference count */ + NewValue.Value = OldValue.Value - 1; + NewValue.Object = ExpChangePushlock(&FastRef->Object, + NewValue.Object, + OldValue.Object); + if (NewValue.Object != OldValue.Object) continue; + } + + /* We are done */ + break; + } + + /* Return the old value */ + return OldValue; +} + +FORCEINLINE +BOOLEAN +ExInsertFastReference(IN OUT PEX_FAST_REF FastRef, + IN PVOID Object) +{ + EX_FAST_REF OldValue, NewValue; + + /* Sanity checks */ + ASSERT(!(((ULONG_PTR)Object) & MAX_FAST_REFS)); + + /* Start update loop */ + for (;;) + { + /* Get the current reference count */ + OldValue = *FastRef; + + /* Check if the current count is too high or if the pointer changed */ + if (((OldValue.RefCnt + MAX_FAST_REFS) > MAX_FAST_REFS) || + ((OldValue.Value &~ MAX_FAST_REFS) != (ULONG_PTR)Object)) + { + /* Fail */ + return FALSE; + } + + /* Update the reference count */ + NewValue.Value = OldValue.Value + MAX_FAST_REFS; + NewValue.Object = ExpChangePushlock(&FastRef->Object, + NewValue.Object, + OldValue.Object); + if (NewValue.Object != OldValue.Object) continue; + + /* We are done */ + break; + } + + /* Return success */ + return TRUE; +} + +BOOLEAN +FORCEINLINE +ExReleaseFastReference(IN PEX_FAST_REF FastRef, + IN PVOID Object) +{ + EX_FAST_REF OldValue, NewValue; + + /* Sanity checks */ + ASSERT(Object != NULL); + ASSERT(!(((ULONG_PTR)Object) & MAX_FAST_REFS)); + + /* Start reference loop */ + for (;;) + { + /* Get the current reference count */ + OldValue = *FastRef; + + /* Check if we're full if if the pointer changed */ + if ((OldValue.Value ^ (ULONG_PTR)Object) >= MAX_FAST_REFS) return FALSE; + + /* Decrease the reference count */ + NewValue.Value = OldValue.Value + 1; + NewValue.Object = ExpChangePushlock(&FastRef->Object, + NewValue.Object, + OldValue.Object); + if (NewValue.Object != OldValue.Object) continue; + + /* We are done */ + break; + } + + /* Return success */ + return TRUE; +} + +EX_FAST_REF +FORCEINLINE +ExSwapFastReference(IN PEX_FAST_REF FastRef, + IN PVOID Object) +{ + EX_FAST_REF NewValue, OldValue; + + /* Sanity check */ + ASSERT((((ULONG_PTR)Object) & MAX_FAST_REFS) == 0); + + /* Check if an object is being set */ + if (!Object) + { + /* Clear the field */ + NewValue.Object = NULL; + } + else + { + /* Otherwise, we assume the object was referenced and is ready */ + NewValue.Value = (ULONG_PTR)Object | MAX_FAST_REFS; + } + + /* Update the object */ + OldValue.Object = InterlockedExchangePointer(&FastRef->Object, NewValue.Object); + return OldValue; +} + +EX_FAST_REF +FORCEINLINE +ExCompareSwapFastReference(IN PEX_FAST_REF FastRef, + IN PVOID Object, + IN PVOID OldObject) +{ + EX_FAST_REF OldValue, NewValue; + + /* Sanity check and start swap loop */ + ASSERT(!(((ULONG_PTR)Object) & MAX_FAST_REFS)); + for (;;) + { + /* Get the current value */ + OldValue = *FastRef; + + /* Make sure there's enough references to swap */ + if (!((OldValue.Value ^ (ULONG_PTR)OldObject) <= MAX_FAST_REFS)) break; + + /* Check if we have an object to swap */ + if (Object) + { + /* Set up the value with maximum fast references */ + NewValue.Value = (ULONG_PTR)Object | MAX_FAST_REFS; + } + else + { + /* Write the object address itself (which is empty) */ + NewValue.Value = (ULONG_PTR)Object; + } + + /* Do the actual compare exchange */ + NewValue.Object = ExpChangePushlock(&FastRef->Object, + NewValue.Object, + OldValue.Object); + if (NewValue.Object != OldValue.Object) continue; + + /* All done */ + break; + } + + /* Return the old value */ + return OldValue; +} + +/* RUNDOWN *******************************************************************/ /*++ * @name ExfAcquireRundownProtection Modified: trunk/reactos/ntoskrnl/ob/obref.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ob/obref.c?rev=39…
============================================================================== --- trunk/reactos/ntoskrnl/ob/obref.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/ob/obref.c [iso-8859-1] Tue Mar 3 23:24:10 2009 @@ -109,21 +109,9 @@ { /* Check if we were given an object and reference it 7 times */ if (Object) ObReferenceObjectEx(Object, MAX_FAST_REFS); - - /* Sanity check */ - ASSERT(!(((ULONG_PTR)Object) & MAX_FAST_REFS)); - - /* Check if the caller gave us an object */ - if (Object) - { - /* He did, so write the biased pointer */ - FastRef->Object = (PVOID)((ULONG_PTR)Object | MAX_FAST_REFS); - } - else - { - /* Otherwise, clear the current object */ - FastRef->Object = NULL; - } + + /* Setup the fast reference */ + ExInitializeFastReference(FastRef, Object); } PVOID @@ -131,9 +119,10 @@ ObFastReferenceObjectLocked(IN PEX_FAST_REF FastRef) { PVOID Object; + EX_FAST_REF OldValue = *FastRef; /* Get the object and reference it slowly */ - Object = (PVOID)((ULONG_PTR)FastRef->Object & MAX_FAST_REFS); + Object = ExGetObjectFastReference(OldValue); if (Object) ObReferenceObject(Object); return Object; } @@ -142,25 +131,16 @@ FASTCALL ObFastReferenceObject(IN PEX_FAST_REF FastRef) { - ULONG_PTR Value, NewValue; + EX_FAST_REF OldValue; ULONG_PTR Count; PVOID Object; - /* Start reference loop */ - for (;;) - { - /* Get the current count */ - Value = FastRef->Value; - if (!(Value & MAX_FAST_REFS)) break; - - /* Increase the reference count */ - NewValue = Value - 1; - if (ExpChangeRundown(FastRef, NewValue, Value) == Value) break; - } - - /* Get the object and count */ - Object = (PVOID)(Value &~ MAX_FAST_REFS); - Count = Value & MAX_FAST_REFS; + /* Reference the object and get it pointer */ + OldValue = ExAcquireFastReference(FastRef); + Object = ExGetObjectFastReference(OldValue); + + /* Check how many references are left */ + Count = ExGetCountFastReference(OldValue); /* Check if the reference count is over 1 */ if (Count > 1) return Object; @@ -170,25 +150,12 @@ /* Otherwise, reference the object 7 times */ ObReferenceObjectEx(Object, MAX_FAST_REFS); - ASSERT(!(((ULONG_PTR)Object) & MAX_FAST_REFS)); - - for (;;) - { - /* Check if the current count is too high */ - Value = FastRef->Value; - if (((FastRef->RefCnt + MAX_FAST_REFS) > MAX_FAST_REFS) || - ((PVOID)((ULONG_PTR)FastRef->Object &~ MAX_FAST_REFS) != Object)) - { - /* Completely dereference the object */ - ObDereferenceObjectEx(Object, MAX_FAST_REFS); - break; - } - else - { - /* Increase the reference count */ - NewValue = Value + MAX_FAST_REFS; - if (ExpChangeRundown(FastRef, NewValue, Value) == Value) break; - } + + /* Now update the reference count */ + if (!ExInsertFastReference(FastRef, Object)) + { + /* We failed: completely dereference the object */ + ObDereferenceObjectEx(Object, MAX_FAST_REFS); } /* Return the Object */ @@ -200,30 +167,8 @@ ObFastDereferenceObject(IN PEX_FAST_REF FastRef, IN PVOID Object) { - ULONG_PTR Value, NewValue; - - /* Sanity checks */ - ASSERT(Object); - ASSERT(!(((ULONG_PTR)Object) & MAX_FAST_REFS)); - - /* Start dereference loop */ - for (;;) - { - /* Get the current count */ - Value = FastRef->Value; - if ((Value ^ (ULONG_PTR)Object) < MAX_FAST_REFS) - { - /* Decrease the reference count */ - NewValue = Value + 1; - if (ExpChangeRundown(FastRef, NewValue, Value) == Value) return; - } - else - { - /* Do a normal Dereference */ - ObDereferenceObject(Object); - return; - } - } + /* Release a fast reference. If this failed, use the slow path */ + if (!ExReleaseFastReference(FastRef, Object)) ObDereferenceObject(Object); } PVOID @@ -231,36 +176,20 @@ ObFastReplaceObject(IN PEX_FAST_REF FastRef, PVOID Object) { - ULONG_PTR NewValue; - EX_FAST_REF OldRef; + EX_FAST_REF OldValue; PVOID OldObject; + ULONG_PTR Count; /* Check if we were given an object and reference it 7 times */ if (Object) ObReferenceObjectEx(Object, MAX_FAST_REFS); - - /* Sanity check */ - ASSERT(!(((ULONG_PTR)Object) & MAX_FAST_REFS)); - - /* Check if the caller gave us an object */ - if (Object) - { - /* He did, so bias the pointer */ - NewValue = (ULONG_PTR)Object | MAX_FAST_REFS; - } - else - { - /* No object, we're clearing */ - NewValue = 0; - } - - /* Switch objects */ - OldRef.Value = InterlockedExchange((PLONG)&FastRef->Value, NewValue); - OldObject = (PVOID)((ULONG_PTR)OldRef.Object &~ MAX_FAST_REFS); - if ((OldObject) && (OldRef.RefCnt)) - { - /* Dereference the old object */ - ObDereferenceObjectEx(OldObject, OldRef.RefCnt); - } + + /* Do the swap */ + OldValue = ExSwapFastReference(FastRef, Object); + OldObject = ExGetObjectFastReference(OldValue); + + /* Check if we had an active object and dereference it */ + Count = ExGetCountFastReference(OldValue); + if ((OldObject) && (Count)) ObDereferenceObjectEx(OldObject, Count); /* Return the old object */ return OldObject;
16 years, 3 months
1
0
0
0
[jmorlan] 39858: Rework batch-file processing so that 'call file.bat' doesn't return until the file has finished, allowing constructs like 'call file.bat & somethingelse' to work properly.
by jmorlan@svn.reactos.org
Author: jmorlan Date: Tue Mar 3 23:06:54 2009 New Revision: 39858 URL:
http://svn.reactos.org/svn/reactos?rev=39858&view=rev
Log: Rework batch-file processing so that 'call file.bat' doesn't return until the file has finished, allowing constructs like 'call file.bat & somethingelse' to work properly. Modified: trunk/reactos/base/shell/cmd/batch.c trunk/reactos/base/shell/cmd/batch.h trunk/reactos/base/shell/cmd/call.c trunk/reactos/base/shell/cmd/cmd.c trunk/reactos/base/shell/cmd/cmd.h trunk/reactos/base/shell/cmd/internal.c Modified: trunk/reactos/base/shell/cmd/batch.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/shell/cmd/batch.c?rev…
============================================================================== --- trunk/reactos/base/shell/cmd/batch.c [iso-8859-1] (original) +++ trunk/reactos/base/shell/cmd/batch.c [iso-8859-1] Tue Mar 3 23:06:54 2009 @@ -171,8 +171,6 @@ if (bc != NULL) { - LPBATCH_CONTEXT t = bc; - if (bc->hBatchFile) { CloseHandle (bc->hBatchFile); @@ -192,7 +190,6 @@ bEcho = bc->bEcho; bc = bc->prev; - cmd_free(t); } if (msg && *msg) @@ -207,8 +204,10 @@ * */ -BOOL Batch (LPTSTR fullname, LPTSTR firstword, LPTSTR param, BOOL forcenew) -{ +BOOL Batch (LPTSTR fullname, LPTSTR firstword, LPTSTR param, PARSED_COMMAND *Cmd) +{ + BATCH_CONTEXT new; + HANDLE hFile; SetLastError(0); hFile = CreateFile (fullname, GENERIC_READ, FILE_SHARE_WRITE | FILE_SHARE_READ | FILE_SHARE_DELETE, NULL, @@ -227,22 +226,7 @@ /* Kill any and all FOR contexts */ fc = NULL; - if (bc == NULL || forcenew) - { - /* No curent batch file, create a new context */ - LPBATCH_CONTEXT n = (LPBATCH_CONTEXT)cmd_alloc (sizeof(BATCH_CONTEXT)); - - if (n == NULL) - { - error_out_of_memory (); - return FALSE; - } - - n->prev = bc; - bc = n; - bc->RedirList = NULL; - } - else if (bc->hBatchFile != INVALID_HANDLE_VALUE) + if (bc != NULL && Cmd == bc->current) { /* Then we are transferring to another batch */ CloseHandle (bc->hBatchFile); @@ -251,6 +235,20 @@ cmd_free (bc->params); if (bc->raw_params) cmd_free (bc->raw_params); + AddBatchRedirection(&Cmd->Redirections); + } + else + { + /* If a batch file runs another batch file as part of a compound command + * (e.g. "x.bat & somethingelse") then the first file gets terminated. */ + if (Cmd != NULL) + ExitBatch(NULL); + + /* Create a new context. This function will not + * return until this context has been exited */ + new.prev = bc; + bc = &new; + bc->RedirList = NULL; } GetFullPathName(fullname, sizeof(bc->BatchFilePath) / sizeof(TCHAR), bc->BatchFilePath, NULL); @@ -264,16 +262,41 @@ // // Allocate enough memory to hold the params and copy them over without modifications // - bc->raw_params = (TCHAR*) cmd_alloc((_tcslen(param)+1) * sizeof(TCHAR)); - if (bc->raw_params != NULL) - { - _tcscpy(bc->raw_params,param); - } - else + bc->raw_params = cmd_dup(param); + if (bc->raw_params == NULL) { error_out_of_memory(); return FALSE; } + + /* Check if this is a "CALL :label" */ + if (*firstword == _T(':')) + cmd_goto(firstword); + + /* If we have created a new context, don't return + * until this batch file has completed. */ + while (bc == &new && !bExit) + { + Cmd = ParseCommand(NULL); + if (!Cmd) + continue; + + /* JPP 19980807 */ + /* Echo batch file line */ + if (bEcho && Cmd->Type != C_QUIET) + { + PrintPrompt(); + EchoCommand(Cmd); + ConOutChar(_T('\n')); + } + + bc->current = Cmd; + ExecuteCommand(Cmd); + if (bEcho && !bIgnoreEcho && Cmd->Type != C_QUIET) + ConOutChar(_T('\n')); + FreeCommand(Cmd); + bIgnoreEcho = FALSE; + } /* Don't print a newline for this command */ bIgnoreEcho = TRUE; @@ -313,50 +336,34 @@ LPTSTR ReadBatchLine () { - LPTSTR first; - /* No batch */ if (bc == NULL) return NULL; TRACE ("ReadBatchLine ()\n"); - while (1) - { - /* User halt */ - if (CheckCtrlBreak (BREAK_BATCHFILE)) - { - while (bc) - ExitBatch (NULL); - return NULL; - } - - /* No batch */ - if (bc == NULL) - return NULL; - - if (!FileGetString (bc->hBatchFile, textline, sizeof (textline) / sizeof (textline[0]) - 1)) - { - TRACE ("ReadBatchLine(): Reached EOF!\n"); - /* End of file.... */ + /* User halt */ + if (CheckCtrlBreak (BREAK_BATCHFILE)) + { + while (bc) ExitBatch (NULL); - - if (bc == NULL) - return NULL; - - continue; - } - TRACE ("ReadBatchLine(): textline: \'%s\'\n", debugstr_aw(textline)); - - if (textline[_tcslen(textline) - 1] != _T('\n')) - _tcscat(textline, _T("\n")); - - first = textline; - - break; - } - - return first; + return NULL; + } + + if (!FileGetString (bc->hBatchFile, textline, sizeof (textline) / sizeof (textline[0]) - 1)) + { + TRACE ("ReadBatchLine(): Reached EOF!\n"); + /* End of file.... */ + ExitBatch (NULL); + return NULL; + } + + TRACE ("ReadBatchLine(): textline: \'%s\'\n", debugstr_aw(textline)); + + if (textline[_tcslen(textline) - 1] != _T('\n')) + _tcscat(textline, _T("\n")); + + return textline; } /* EOF */ Modified: trunk/reactos/base/shell/cmd/batch.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/shell/cmd/batch.h?rev…
============================================================================== --- trunk/reactos/base/shell/cmd/batch.h [iso-8859-1] (original) +++ trunk/reactos/base/shell/cmd/batch.h [iso-8859-1] Tue Mar 3 23:06:54 2009 @@ -17,6 +17,7 @@ INT shiftlevel; BOOL bEcho; /* Preserve echo flag across batch calls */ REDIRECTION *RedirList; + PARSED_COMMAND *current; } BATCH_CONTEXT, *LPBATCH_CONTEXT; typedef struct tagFORCONTEXT @@ -45,7 +46,7 @@ LPTSTR FindArg (INT); LPTSTR BatchParams (LPTSTR, LPTSTR); VOID ExitBatch (LPTSTR); -BOOL Batch (LPTSTR, LPTSTR, LPTSTR, BOOL); +BOOL Batch (LPTSTR, LPTSTR, LPTSTR, PARSED_COMMAND *); LPTSTR ReadBatchLine(); VOID AddBatchRedirection(REDIRECTION **); Modified: trunk/reactos/base/shell/cmd/call.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/shell/cmd/call.c?rev=…
============================================================================== --- trunk/reactos/base/shell/cmd/call.c [iso-8859-1] (original) +++ trunk/reactos/base/shell/cmd/call.c [iso-8859-1] Tue Mar 3 23:06:54 2009 @@ -42,8 +42,6 @@ INT cmd_call (LPTSTR param) { - LPBATCH_CONTEXT n = NULL; - TRACE ("cmd_call: (\'%s\')\n", debugstr_aw(param)); if (!_tcsncmp (param, _T("/?"), 2)) { @@ -62,39 +60,10 @@ while (_istspace(*param)) param++; } - if (!Batch(bc->BatchFilePath, first, param, TRUE)) - return 1; - return cmd_goto(first); + return !Batch(bc->BatchFilePath, first, param, NULL); } - nErrorLevel = 0; - - n = (LPBATCH_CONTEXT)cmd_alloc (sizeof (BATCH_CONTEXT)); - - if (n == NULL) - { - error_out_of_memory (); - return 1; - } - - n->prev = bc; - bc = n; - - bc->hBatchFile = INVALID_HANDLE_VALUE; - bc->params = NULL; - bc->shiftlevel = 0; - bc->RedirList = NULL; - ParseCommandLine (param); - - - /* Wasn't a batch file so remove conext */ - if (bc->hBatchFile == INVALID_HANDLE_VALUE) - { - bc = bc->prev; - cmd_free (n); - } - - return 0; + return !DoCommand(param, NULL); } /* EOF */ Modified: trunk/reactos/base/shell/cmd/cmd.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/shell/cmd/cmd.c?rev=3…
============================================================================== --- trunk/reactos/base/shell/cmd/cmd.c [iso-8859-1] (original) +++ trunk/reactos/base/shell/cmd/cmd.c [iso-8859-1] Tue Mar 3 23:06:54 2009 @@ -324,7 +324,7 @@ */ static BOOL -Execute (LPTSTR Full, LPTSTR First, LPTSTR Rest) +Execute (LPTSTR Full, LPTSTR First, LPTSTR Rest, PARSED_COMMAND *Cmd) { TCHAR *szFullName=NULL; TCHAR *first = NULL; @@ -470,7 +470,7 @@ if (dot && (!_tcsicmp (dot, _T(".bat")) || !_tcsicmp (dot, _T(".cmd")))) { TRACE ("[BATCH: %s %s]\n", debugstr_aw(szFullName), debugstr_aw(rest)); - Batch (szFullName, first, rest, FALSE); + Batch (szFullName, first, rest, Cmd); } else { @@ -568,7 +568,7 @@ */ BOOL -DoCommand (LPTSTR line) +DoCommand (LPTSTR line, PARSED_COMMAND *Cmd) { TCHAR *com = NULL; /* the first word in the command */ TCHAR *cp = NULL; @@ -642,7 +642,7 @@ /* If end of table execute ext cmd */ if (cmdptr->name == NULL) { - ret = Execute (line, com, rest); + ret = Execute (line, com, rest, Cmd); break; } @@ -866,7 +866,6 @@ BOOL ExecuteCommand(PARSED_COMMAND *Cmd) { - BOOL bNewBatch = TRUE; PARSED_COMMAND *Sub; LPTSTR ExpandedLine; BOOL Success = TRUE; @@ -877,20 +876,14 @@ switch (Cmd->Type) { case C_COMMAND: - if(bc) - bNewBatch = FALSE; - ExpandedLine = DoDelayedExpansion(Cmd->Command.CommandLine); if (!ExpandedLine) { Success = FALSE; break; } - Success = DoCommand(ExpandedLine); + Success = DoCommand(ExpandedLine, Cmd); cmd_free(ExpandedLine); - - if(bNewBatch && bc) - AddBatchRedirection(&Cmd->Redirections); break; case C_QUIET: case C_BLOCK: @@ -1330,7 +1323,7 @@ LPTSTR ip; /* if no batch input then... */ - if (!(ip = ReadBatchLine())) + if (bc == NULL) { if (bNoInteractive) { @@ -1360,6 +1353,9 @@ } else { + ip = ReadBatchLine(); + if (!ip) + return FALSE; bIsBatch = TRUE; } @@ -1378,17 +1374,8 @@ if (!Cmd) continue; - /* JPP 19980807 */ - /* Echo batch file line */ - if (bIsBatch && bEcho && Cmd->Type != C_QUIET) - { - PrintPrompt (); - EchoCommand(Cmd); - ConOutChar(_T('\n')); - } - ExecuteCommand(Cmd); - if (bEcho && !bIgnoreEcho && (!bIsBatch || Cmd->Type != C_QUIET)) + if (bEcho && !bIgnoreEcho) ConOutChar ('\n'); FreeCommand(Cmd); bIgnoreEcho = FALSE; Modified: trunk/reactos/base/shell/cmd/cmd.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/shell/cmd/cmd.h?rev=3…
============================================================================== --- trunk/reactos/base/shell/cmd/cmd.h [iso-8859-1] (original) +++ trunk/reactos/base/shell/cmd/cmd.h [iso-8859-1] Tue Mar 3 23:06:54 2009 @@ -104,7 +104,7 @@ VOID RemoveBreakHandler (VOID); BOOL SubstituteForVars(TCHAR *Src, TCHAR *Dest); LPTSTR DoDelayedExpansion(LPTSTR Line); -BOOL DoCommand (LPTSTR line); +BOOL DoCommand (LPTSTR line, struct _PARSED_COMMAND *Cmd); BOOL ReadLine(TCHAR *commandline, BOOL bMore); int cmd_main (int argc, const TCHAR *argv[]); Modified: trunk/reactos/base/shell/cmd/internal.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/shell/cmd/internal.c?…
============================================================================== --- trunk/reactos/base/shell/cmd/internal.c [iso-8859-1] (original) +++ trunk/reactos/base/shell/cmd/internal.c [iso-8859-1] Tue Mar 3 23:06:54 2009 @@ -707,7 +707,7 @@ LPTSTR NewCommand = cmd_alloc((_tcslen(param)+4)*sizeof(TCHAR)); _tcscpy(NewCommand, param); _tcscat(NewCommand, _T(" /?")); - DoCommand(NewCommand); + DoCommand(NewCommand, NULL); cmd_free(NewCommand); } /* Else, display detailed commands list */
16 years, 3 months
1
0
0
0
[fireball] 39857: - Consider Pnp initialized after system drivers finished loading. - Fix reinitialization routines callbacks: processing reinit callbacks after EVERY driver load, including boot drivers is wrong. The sequence should be init boot drivers, call boot drivers reinit routines, load pnp drivers, load system drivers, call reinit routines. And then, when Pnp is initialized, call reinit routines after every driver module load event.
by fireball@svn.reactos.org
Author: fireball Date: Tue Mar 3 15:55:58 2009 New Revision: 39857 URL:
http://svn.reactos.org/svn/reactos?rev=39857&view=rev
Log: - Consider Pnp initialized after system drivers finished loading. - Fix reinitialization routines callbacks: processing reinit callbacks after EVERY driver load, including boot drivers is wrong. The sequence should be init boot drivers, call boot drivers reinit routines, load pnp drivers, load system drivers, call reinit routines. And then, when Pnp is initialized, call reinit routines after every driver module load event. Modified: trunk/reactos/ntoskrnl/io/iomgr/driver.c trunk/reactos/ntoskrnl/io/iomgr/iomgr.c Modified: trunk/reactos/ntoskrnl/io/iomgr/driver.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/iomgr/driver.c…
============================================================================== --- trunk/reactos/ntoskrnl/io/iomgr/driver.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/io/iomgr/driver.c [iso-8859-1] Tue Mar 3 15:55:58 2009 @@ -32,6 +32,7 @@ #define TAG_RTLREGISTRY TAG('R', 'q', 'r', 'v') extern BOOLEAN ExpInTextModeSetup; +extern BOOLEAN PnpSystemInit; /* PRIVATE FUNCTIONS **********************************************************/ @@ -482,7 +483,7 @@ DeviceObject = DeviceObject->NextDevice; } - IopReinitializeDrivers(); + if (PnpSystemInit) IopReinitializeDrivers(); return STATUS_SUCCESS; } Modified: trunk/reactos/ntoskrnl/io/iomgr/iomgr.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/iomgr/iomgr.c?…
============================================================================== --- trunk/reactos/ntoskrnl/io/iomgr/iomgr.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/io/iomgr/iomgr.c [iso-8859-1] Tue Mar 3 15:55:58 2009 @@ -524,8 +524,8 @@ IopInitializePnpServices(IopRootDeviceNode); /* Load system start drivers */ + IopInitializeSystemDrivers(); PnpSystemInit = TRUE; - IopInitializeSystemDrivers(); /* Destroy the group driver list */ IoDestroyDriverList();
16 years, 3 months
1
0
0
0
[fireball] 39856: - Move part of the 1st stage pnp hacks to kbdclass driver. Previously, the driver (i8042prt) relied on kbdclass's normal reinit routine being called BEFORE a registered boot reinit routine, which is certainly wrong on a real NT system. - Now, the correct order is ensured, and it is not relying on a broken reinit calling order in ReactOS anymore.
by fireball@svn.reactos.org
Author: fireball Date: Tue Mar 3 15:06:57 2009 New Revision: 39856 URL:
http://svn.reactos.org/svn/reactos?rev=39856&view=rev
Log: - Move part of the 1st stage pnp hacks to kbdclass driver. Previously, the driver (i8042prt) relied on kbdclass's normal reinit routine being called BEFORE a registered boot reinit routine, which is certainly wrong on a real NT system. - Now, the correct order is ensured, and it is not relying on a broken reinit calling order in ReactOS anymore. Added: trunk/reactos/drivers/input/kbdclass/setup.c - copied, changed from r39836, trunk/reactos/drivers/input/i8042prt/setup.c Modified: trunk/reactos/drivers/input/i8042prt/setup.c trunk/reactos/drivers/input/kbdclass/kbdclass.c trunk/reactos/drivers/input/kbdclass/kbdclass.h trunk/reactos/drivers/input/kbdclass/kbdclass.rbuild Modified: trunk/reactos/drivers/input/i8042prt/setup.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/input/i8042prt/set…
============================================================================== --- trunk/reactos/drivers/input/i8042prt/setup.c [iso-8859-1] (original) +++ trunk/reactos/drivers/input/i8042prt/setup.c [iso-8859-1] Tue Mar 3 15:06:57 2009 @@ -44,123 +44,6 @@ ZwClose(hSetupKey); INFO_(I8042PRT, "IsFirstStageSetup() returns %s\n", ret ? "YES" : "NO"); return ret; -} - -static VOID NTAPI -SendStartDevice( - IN PDRIVER_OBJECT DriverObject, - IN PVOID Context, - IN ULONG Count) -{ - PDEVICE_OBJECT Pdo; - PCM_RESOURCE_LIST AllocatedResources = NULL; - PCM_RESOURCE_LIST AllocatedResourcesTranslated = NULL; - PDEVICE_OBJECT TopDeviceObject = NULL; - KEVENT Event; - IO_STATUS_BLOCK IoStatusBlock; - PIRP Irp; - PIO_STACK_LOCATION Stack; - ULONG ResourceListSize; - NTSTATUS Status; - - Pdo = (PDEVICE_OBJECT)Context; - TRACE_(I8042PRT, "SendStartDevice(%p)\n", Pdo); - - /* Create default resource list */ - ResourceListSize = sizeof(CM_RESOURCE_LIST) + 3 * sizeof(CM_PARTIAL_RESOURCE_DESCRIPTOR); - AllocatedResources = ExAllocatePoolWithTag(PagedPool, ResourceListSize, I8042PRT_TAG); - if (!AllocatedResources) - { - WARN_(I8042PRT, "ExAllocatePoolWithTag() failed\n"); - Status = STATUS_NO_MEMORY; - goto cleanup; - } - AllocatedResources->Count = 1; - AllocatedResources->List[0].PartialResourceList.Version = 1; - AllocatedResources->List[0].PartialResourceList.Revision = 1; - AllocatedResources->List[0].PartialResourceList.Count = 3; - /* Data port */ - AllocatedResources->List[0].PartialResourceList.PartialDescriptors[0].Type = CmResourceTypePort; - AllocatedResources->List[0].PartialResourceList.PartialDescriptors[0].ShareDisposition = CmResourceShareDeviceExclusive; - AllocatedResources->List[0].PartialResourceList.PartialDescriptors[0].Flags = 0; /* FIXME */ - AllocatedResources->List[0].PartialResourceList.PartialDescriptors[0].u.Port.Start.u.HighPart = 0; - AllocatedResources->List[0].PartialResourceList.PartialDescriptors[0].u.Port.Start.u.LowPart = KEYBOARD_DATA_PORT; - AllocatedResources->List[0].PartialResourceList.PartialDescriptors[0].u.Port.Length = 1; - /* Control port */ - AllocatedResources->List[0].PartialResourceList.PartialDescriptors[1].Type = CmResourceTypePort; - AllocatedResources->List[0].PartialResourceList.PartialDescriptors[1].ShareDisposition = CmResourceShareDeviceExclusive; - AllocatedResources->List[0].PartialResourceList.PartialDescriptors[1].Flags = 0; /* FIXME */ - AllocatedResources->List[0].PartialResourceList.PartialDescriptors[1].u.Port.Start.u.HighPart = 0; - AllocatedResources->List[0].PartialResourceList.PartialDescriptors[1].u.Port.Start.u.LowPart = KEYBOARD_CONTROL_PORT; - AllocatedResources->List[0].PartialResourceList.PartialDescriptors[1].u.Port.Length = 1; - /* Interrupt */ - AllocatedResources->List[0].PartialResourceList.PartialDescriptors[2].Type = CmResourceTypeInterrupt; - AllocatedResources->List[0].PartialResourceList.PartialDescriptors[2].ShareDisposition = CmResourceShareDeviceExclusive; - AllocatedResources->List[0].PartialResourceList.PartialDescriptors[2].Flags = CM_RESOURCE_INTERRUPT_LATCHED; - AllocatedResources->List[0].PartialResourceList.PartialDescriptors[2].u.Interrupt.Level = KEYBOARD_IRQ; - AllocatedResources->List[0].PartialResourceList.PartialDescriptors[2].u.Interrupt.Vector = 0; - AllocatedResources->List[0].PartialResourceList.PartialDescriptors[2].u.Interrupt.Affinity = (KAFFINITY)-1; - - /* Create default resource list translated */ - AllocatedResourcesTranslated = ExAllocatePoolWithTag(PagedPool, ResourceListSize, I8042PRT_TAG); - if (!AllocatedResourcesTranslated) - { - WARN_(I8042PRT, "ExAllocatePoolWithTag() failed\n"); - Status = STATUS_NO_MEMORY; - goto cleanup; - } - RtlCopyMemory(AllocatedResourcesTranslated, AllocatedResources, ResourceListSize); - AllocatedResourcesTranslated->List[0].PartialResourceList.PartialDescriptors[2].u.Interrupt.Vector = HalGetInterruptVector( - Internal, 0, - AllocatedResources->List[0].PartialResourceList.PartialDescriptors[2].u.Interrupt.Level, - AllocatedResources->List[0].PartialResourceList.PartialDescriptors[2].u.Interrupt.Vector, - (PKIRQL)&AllocatedResourcesTranslated->List[0].PartialResourceList.PartialDescriptors[2].u.Interrupt.Level, - &AllocatedResourcesTranslated->List[0].PartialResourceList.PartialDescriptors[2].u.Interrupt.Affinity); - - /* Send IRP_MN_START_DEVICE */ - TopDeviceObject = IoGetAttachedDeviceReference(Pdo); - KeInitializeEvent( - &Event, - NotificationEvent, - FALSE); - Irp = IoBuildSynchronousFsdRequest( - IRP_MJ_PNP, - TopDeviceObject, - NULL, - 0, - NULL, - &Event, - &IoStatusBlock); - Irp->IoStatus.Status = STATUS_NOT_IMPLEMENTED; - Irp->IoStatus.Information = 0; - Stack = IoGetNextIrpStackLocation(Irp); - Stack->MinorFunction = IRP_MN_START_DEVICE; - Stack->Parameters.StartDevice.AllocatedResources = AllocatedResources; - Stack->Parameters.StartDevice.AllocatedResourcesTranslated = AllocatedResourcesTranslated; - Status = IoCallDriver(TopDeviceObject, Irp); - if (Status == STATUS_PENDING) - { - KeWaitForSingleObject( - &Event, - Executive, - KernelMode, - FALSE, - NULL); - Status = IoStatusBlock.Status; - } - if (!NT_SUCCESS(Status)) - { - WARN_(I8042PRT, "IoCallDriver() failed with status 0x%08lx\n", Status); - goto cleanup; - } - -cleanup: - if (TopDeviceObject) - ObDereferenceObject(TopDeviceObject); - if (AllocatedResources) - ExFreePoolWithTag(AllocatedResources, I8042PRT_TAG); - if (AllocatedResourcesTranslated) - ExFreePoolWithTag(AllocatedResourcesTranslated, I8042PRT_TAG); } static NTSTATUS @@ -251,12 +134,8 @@ goto cleanup; } - /* We will send the IRP_MN_START_DEVICE later, once kbdclass is loaded */ + /* We will send the IRP_MN_START_DEVICE later when kbdclass looks for legacy drivers */ AddRegistryEntry(L"KeyboardPort", &KeyboardName, RegistryPath->Buffer); - IoRegisterBootDriverReinitialization( - DriverObject, - SendStartDevice, - Pdo); Status = STATUS_SUCCESS; /* Yes, completly forget the Pdo pointer, as we will never Modified: trunk/reactos/drivers/input/kbdclass/kbdclass.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/input/kbdclass/kbd…
============================================================================== --- trunk/reactos/drivers/input/kbdclass/kbdclass.c [iso-8859-1] (original) +++ trunk/reactos/drivers/input/kbdclass/kbdclass.c [iso-8859-1] Tue Mar 3 15:06:57 2009 @@ -939,6 +939,10 @@ /* FIXME: Log the error */ WARN_(CLASS_NAME, "ClassAddDevice() failed with status 0x%08lx\n", Status); } + + /* A special hack for 1st stage setup: manually send start device to i8042prt */ + if (IsFirstStageSetup()) + Send8042StartDevice(DriverObject, PortDeviceObject); } cleanup: Modified: trunk/reactos/drivers/input/kbdclass/kbdclass.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/input/kbdclass/kbd…
============================================================================== --- trunk/reactos/drivers/input/kbdclass/kbdclass.h [iso-8859-1] (original) +++ trunk/reactos/drivers/input/kbdclass/kbdclass.h [iso-8859-1] Tue Mar 3 15:06:57 2009 @@ -81,3 +81,13 @@ IN ULONG Flags, IN PCUNICODE_STRING SourceString, OUT PUNICODE_STRING DestinationString); + +/* setup.c */ +BOOLEAN +IsFirstStageSetup( + VOID); + +VOID NTAPI +Send8042StartDevice( + IN PDRIVER_OBJECT DriverObject, + IN PDEVICE_OBJECT Pdo); Modified: trunk/reactos/drivers/input/kbdclass/kbdclass.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/input/kbdclass/kbd…
============================================================================== --- trunk/reactos/drivers/input/kbdclass/kbdclass.rbuild [iso-8859-1] (original) +++ trunk/reactos/drivers/input/kbdclass/kbdclass.rbuild [iso-8859-1] Tue Mar 3 15:06:57 2009 @@ -7,6 +7,7 @@ <library>hal</library> <file>kbdclass.c</file> <file>misc.c</file> + <file>setup.c</file> <file>kbdclass.rc</file> <!-- See
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38054#c7
--> <compilerflag>-fno-unit-at-a-time</compilerflag> Copied: trunk/reactos/drivers/input/kbdclass/setup.c (from r39836, trunk/reactos/drivers/input/i8042prt/setup.c) URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/input/kbdclass/set…
============================================================================== --- trunk/reactos/drivers/input/i8042prt/setup.c [iso-8859-1] (original) +++ trunk/reactos/drivers/input/kbdclass/setup.c [iso-8859-1] Tue Mar 3 15:06:57 2009 @@ -1,7 +1,7 @@ /* - * PROJECT: ReactOS i8042 (ps/2 keyboard-mouse controller) driver + * PROJECT: ReactOS Keyboard class driver * LICENSE: GPL - See COPYING in the top level directory - * FILE: drivers/input/i8042prt/setup.c + * FILE: drivers/input/kbdclass/setup.c * PURPOSE: Create a legacy PDO during ReactOS installation * PROGRAMMERS: Copyright 2006-2007 Hervé Poussineau (hpoussin(a)reactos.org) */ @@ -12,7 +12,7 @@ /* INCLUDES ******************************************************************/ -#include "i8042prt.h" +#include "kbdclass.h" /* GLOBALS *******************************************************************/ @@ -42,17 +42,15 @@ if (hSetupKey != (HANDLE)NULL) ZwClose(hSetupKey); - INFO_(I8042PRT, "IsFirstStageSetup() returns %s\n", ret ? "YES" : "NO"); + INFO_(CLASS_NAME, "IsFirstStageSetup() returns %s\n", ret ? "YES" : "NO"); return ret; } -static VOID NTAPI -SendStartDevice( +VOID NTAPI +Send8042StartDevice( IN PDRIVER_OBJECT DriverObject, - IN PVOID Context, - IN ULONG Count) + IN PDEVICE_OBJECT Pdo) { - PDEVICE_OBJECT Pdo; PCM_RESOURCE_LIST AllocatedResources = NULL; PCM_RESOURCE_LIST AllocatedResourcesTranslated = NULL; PDEVICE_OBJECT TopDeviceObject = NULL; @@ -63,15 +61,14 @@ ULONG ResourceListSize; NTSTATUS Status; - Pdo = (PDEVICE_OBJECT)Context; - TRACE_(I8042PRT, "SendStartDevice(%p)\n", Pdo); + TRACE_(CLASS_NAME, "SendStartDevice(%p)\n", Pdo); /* Create default resource list */ ResourceListSize = sizeof(CM_RESOURCE_LIST) + 3 * sizeof(CM_PARTIAL_RESOURCE_DESCRIPTOR); - AllocatedResources = ExAllocatePoolWithTag(PagedPool, ResourceListSize, I8042PRT_TAG); + AllocatedResources = ExAllocatePoolWithTag(PagedPool, ResourceListSize, CLASS_TAG); if (!AllocatedResources) { - WARN_(I8042PRT, "ExAllocatePoolWithTag() failed\n"); + WARN_(CLASS_NAME, "ExAllocatePoolWithTag() failed\n"); Status = STATUS_NO_MEMORY; goto cleanup; } @@ -102,10 +99,10 @@ AllocatedResources->List[0].PartialResourceList.PartialDescriptors[2].u.Interrupt.Affinity = (KAFFINITY)-1; /* Create default resource list translated */ - AllocatedResourcesTranslated = ExAllocatePoolWithTag(PagedPool, ResourceListSize, I8042PRT_TAG); + AllocatedResourcesTranslated = ExAllocatePoolWithTag(PagedPool, ResourceListSize, CLASS_TAG); if (!AllocatedResourcesTranslated) { - WARN_(I8042PRT, "ExAllocatePoolWithTag() failed\n"); + WARN_(CLASS_NAME, "ExAllocatePoolWithTag() failed\n"); Status = STATUS_NO_MEMORY; goto cleanup; } @@ -150,7 +147,7 @@ } if (!NT_SUCCESS(Status)) { - WARN_(I8042PRT, "IoCallDriver() failed with status 0x%08lx\n", Status); + WARN_(CLASS_NAME, "IoCallDriver() failed with status 0x%08lx\n", Status); goto cleanup; } @@ -158,116 +155,7 @@ if (TopDeviceObject) ObDereferenceObject(TopDeviceObject); if (AllocatedResources) - ExFreePoolWithTag(AllocatedResources, I8042PRT_TAG); + ExFreePoolWithTag(AllocatedResources, CLASS_TAG); if (AllocatedResourcesTranslated) - ExFreePoolWithTag(AllocatedResourcesTranslated, I8042PRT_TAG); + ExFreePoolWithTag(AllocatedResourcesTranslated, CLASS_TAG); } - -static NTSTATUS -AddRegistryEntry( - IN PCWSTR PortTypeName, - IN PUNICODE_STRING DeviceName, - IN PCWSTR RegistryPath) -{ - UNICODE_STRING PathU = RTL_CONSTANT_STRING(L"\\REGISTRY\\MACHINE\\HARDWARE\\DEVICEMAP"); - OBJECT_ATTRIBUTES ObjectAttributes; - HANDLE hDeviceMapKey = (HANDLE)-1; - HANDLE hPortKey = (HANDLE)-1; - UNICODE_STRING PortTypeNameU; - NTSTATUS Status; - - InitializeObjectAttributes(&ObjectAttributes, &PathU, OBJ_KERNEL_HANDLE | OBJ_CASE_INSENSITIVE, NULL, NULL); - Status = ZwOpenKey(&hDeviceMapKey, 0, &ObjectAttributes); - if (!NT_SUCCESS(Status)) - { - WARN_(I8042PRT, "ZwOpenKey() failed with status 0x%08lx\n", Status); - goto cleanup; - } - - RtlInitUnicodeString(&PortTypeNameU, PortTypeName); - InitializeObjectAttributes(&ObjectAttributes, &PortTypeNameU, OBJ_KERNEL_HANDLE, hDeviceMapKey, NULL); - Status = ZwCreateKey(&hPortKey, KEY_SET_VALUE, &ObjectAttributes, 0, NULL, REG_OPTION_VOLATILE, NULL); - if (!NT_SUCCESS(Status)) - { - WARN_(I8042PRT, "ZwCreateKey() failed with status 0x%08lx\n", Status); - goto cleanup; - } - - Status = ZwSetValueKey(hPortKey, DeviceName, 0, REG_SZ, (PVOID)RegistryPath, wcslen(RegistryPath) * sizeof(WCHAR) + sizeof(UNICODE_NULL)); - if (!NT_SUCCESS(Status)) - { - WARN_(I8042PRT, "ZwSetValueKey() failed with status 0x%08lx\n", Status); - goto cleanup; - } - - Status = STATUS_SUCCESS; - -cleanup: - if (hDeviceMapKey != (HANDLE)-1) - ZwClose(hDeviceMapKey); - if (hPortKey != (HANDLE)-1) - ZwClose(hPortKey); - return Status; -} - -NTSTATUS -i8042AddLegacyKeyboard( - IN PDRIVER_OBJECT DriverObject, - IN PUNICODE_STRING RegistryPath) -{ - UNICODE_STRING KeyboardName = RTL_CONSTANT_STRING(L"\\Device\\KeyboardPort8042"); - PI8042_DEVICE_TYPE DeviceExtension = NULL; - PDEVICE_OBJECT Pdo = NULL; - NTSTATUS Status; - - TRACE_(I8042PRT, "i8042AddLegacyKeyboard()\n"); - - /* Create a named PDO */ - Status = IoCreateDevice( - DriverObject, - sizeof(I8042_DEVICE_TYPE), - &KeyboardName, - FILE_DEVICE_8042_PORT, - FILE_DEVICE_SECURE_OPEN, - TRUE, - &Pdo); - if (!NT_SUCCESS(Status)) - { - WARN_(I8042PRT, "IoCreateDevice() failed with status 0x%08lx\n", Status); - goto cleanup; - } - - /* Initialize device extension */ - DeviceExtension = (PI8042_DEVICE_TYPE)Pdo->DeviceExtension; - RtlZeroMemory(DeviceExtension, sizeof(I8042_DEVICE_TYPE)); - *DeviceExtension = PhysicalDeviceObject; - Pdo->Flags &= ~DO_DEVICE_INITIALIZING; - - /* Add FDO at the top of the PDO */ - Status = i8042AddDevice(DriverObject, Pdo); - if (!NT_SUCCESS(Status)) - { - WARN_(I8042PRT, "i8042AddDevice() failed with status 0x%08lx\n", Status); - goto cleanup; - } - - /* We will send the IRP_MN_START_DEVICE later, once kbdclass is loaded */ - AddRegistryEntry(L"KeyboardPort", &KeyboardName, RegistryPath->Buffer); - IoRegisterBootDriverReinitialization( - DriverObject, - SendStartDevice, - Pdo); - - Status = STATUS_SUCCESS; - /* Yes, completly forget the Pdo pointer, as we will never - * have to unload this driver during first stage setup. - */ - -cleanup: - if (!NT_SUCCESS(Status)) - { - if (Pdo) - IoDeleteDevice(Pdo); - } - return Status; -}
16 years, 3 months
1
0
0
0
[dchapyshev] 39855: - Comment all actctx functions. They are not implemented also programs can work without them
by dchapyshev@svn.reactos.org
Author: dchapyshev Date: Tue Mar 3 14:27:52 2009 New Revision: 39855 URL:
http://svn.reactos.org/svn/reactos?rev=39855&view=rev
Log: - Comment all actctx functions. They are not implemented also programs can work without them Modified: trunk/reactos/dll/win32/kernel32/kernel32.spec Modified: trunk/reactos/dll/win32/kernel32/kernel32.spec URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/kernel3…
============================================================================== --- trunk/reactos/dll/win32/kernel32/kernel32.spec [iso-8859-1] (original) +++ trunk/reactos/dll/win32/kernel32/kernel32.spec [iso-8859-1] Tue Mar 3 14:27:52 2009 @@ -1,13 +1,13 @@ @ stdcall AcquireSRWLockExclusive(ptr) ntdll.RtlAcquireSRWLockExclusive @ stdcall AcquireSRWLockShare(ptr) ntdll.RtlAcquireSRWLockShared -@ stdcall ActivateActCtx(ptr ptr) +#@ stdcall ActivateActCtx(ptr ptr) @ stdcall AddAtomA(str) @ stdcall AddAtomW(wstr) @ stdcall AddConsoleAliasA(str str str) #check @ stdcall AddConsoleAliasW(wstr wstr wstr) #check @ stdcall AddLocalAlternateComputerNameA(str ptr) @ stdcall AddLocalAlternateComputerNameW(wstr ptr) -@ stdcall AddRefActCtx(ptr) +#@ stdcall AddRefActCtx(ptr) @ stdcall AddVectoredExceptionHandler(long ptr) ntdll.RtlAddVectoredExceptionHandler @ stdcall AllocConsole() @ stub AllocLSCallback # missed in XP SP3 @@ -75,8 +75,8 @@ @ stdcall CopyFileExW (wstr wstr ptr ptr ptr long) @ stdcall CopyFileW(wstr wstr long) @ stdcall CopyLZFile(long long) LZCopy -@ stdcall CreateActCtxA(ptr) -@ stdcall CreateActCtxW(ptr) +#@ stdcall CreateActCtxA(ptr) +#@ stdcall CreateActCtxW(ptr) @ stdcall CreateConsoleScreenBuffer(long long ptr long ptr) @ stdcall CreateDirectoryA(str ptr) @ stdcall CreateDirectoryExA(str str ptr) @@ -129,7 +129,7 @@ @ stdcall CreateWaitableTimerW(ptr long wstr) @ stdcall CreateWaitableTimerExA (ptr str long long) @ stdcall CreateWaitableTimerExW (ptr wstr long long) -@ stdcall DeactivateActCtx(long ptr) +#@ stdcall DeactivateActCtx(long ptr) @ stdcall DebugActiveProcess(long) @ stdcall DebugActiveProcessStop(long) @ stdcall DebugBreak() ntdll.DbgBreakPoint @@ -213,9 +213,9 @@ @ stdcall FillConsoleOutputAttribute(long long long long ptr) @ stdcall FillConsoleOutputCharacterA(long long long long ptr) @ stdcall FillConsoleOutputCharacterW(long long long long ptr) -@ stdcall FindActCtxSectionGuid(long ptr long ptr ptr) -@ stdcall FindActCtxSectionStringA(long ptr long str ptr) -@ stdcall FindActCtxSectionStringW(long ptr long wstr ptr) +#@ stdcall FindActCtxSectionGuid(long ptr long ptr ptr) +#@ stdcall FindActCtxSectionStringA(long ptr long str ptr) +#@ stdcall FindActCtxSectionStringW(long ptr long wstr ptr) @ stdcall FindAtomA(str) @ stdcall FindAtomW(wstr) @ stdcall FindClose(long) @@ -330,7 +330,7 @@ @ stdcall GetConsoleWindow() @ stdcall GetCurrencyFormatA(long long str ptr str long) @ stdcall GetCurrencyFormatW(long long str ptr str long) -@ stdcall GetCurrentActCtx(ptr) +#@ stdcall GetCurrentActCtx(ptr) @ stdcall GetCurrentConsoleFont(long long ptr) @ stdcall GetCurrentDirectoryA(long ptr) @ stdcall GetCurrentDirectoryW(long ptr) @@ -692,7 +692,7 @@ @ stdcall ProcessIdToSessionId(long ptr) @ stdcall PulseEvent(long) @ stdcall PurgeComm(long long) -@ stdcall QueryActCtxW(long ptr ptr long ptr long ptr) +#@ stdcall QueryActCtxW(long ptr ptr long ptr long ptr) @ stdcall QueryDepthSList(ptr) ntdll.RtlQueryDepthSList @ stdcall QueryDosDeviceA(str ptr long) @ stdcall QueryDosDeviceW(wstr ptr long) @@ -733,7 +733,7 @@ @ stdcall RegisterWaitForSingleObjectEx(long ptr ptr long long) @ stdcall RegisterWowBaseHandlers(long) @ stdcall RegisterWowExec(long) -@ stdcall ReleaseActCtx(ptr) +#@ stdcall ReleaseActCtx(ptr) @ stdcall ReleaseMutex(long) @ stdcall ReleaseSemaphore(long long ptr) @ stdcall ReleaseSRWLockExclusive(ptr) ntdll.RtlReleaseSRWLockExclusive @@ -980,7 +980,7 @@ @ stdcall WriteProfileStringW(wstr wstr wstr) @ stdcall WriteTapemark(ptr long long long) @ stdcall WTSGetActiveConsoleSessionId() -@ stdcall ZombifyActCtx(ptr) +#@ stdcall ZombifyActCtx(ptr) @ stub _DebugOut # missed in XP SP3 @ stub _DebugPrintf # missed in XP SP3 @ stdcall _hread(long ptr long)
16 years, 3 months
1
0
0
0
[dchapyshev] 39854: - Fix build
by dchapyshev@svn.reactos.org
Author: dchapyshev Date: Tue Mar 3 14:05:42 2009 New Revision: 39854 URL:
http://svn.reactos.org/svn/reactos?rev=39854&view=rev
Log: - Fix build Added: trunk/reactos/dll/win32/comctl32/comctl_Sk.rc (with props) Added: trunk/reactos/dll/win32/comctl32/comctl_Sk.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/comctl_…
============================================================================== --- trunk/reactos/dll/win32/comctl32/comctl_Sk.rc (added) +++ trunk/reactos/dll/win32/comctl32/comctl_Sk.rc [iso-8859-1] Tue Mar 3 14:05:42 2009 @@ -1,0 +1,90 @@ +/* + * Copyright 1999 Eric Kohl + * Copyright 2008 Mário Kaèmár + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +/* Slovak strings in CP1250 */ + +LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT + +IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140 +STYLE DS_CONTEXTHELP | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE +CAPTION "%s - vlastnosti" +FONT 8, "MS Shell Dlg" +BEGIN + DEFPUSHBUTTON "OK", IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP + PUSHBUTTON "Zrui", IDCANCEL,58,122,50,14 + PUSHBUTTON "&Poui", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED + PUSHBUTTON "Pomocník", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP + CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP|TCS_MULTILINE,4,4,212,114 +END + + +IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE +CAPTION "Sprievodca" +FONT 8, "MS Shell Dlg" +BEGIN + PUSHBUTTON "< &Naspä", IDC_BACK_BUTTON,71,138,50,14 + DEFPUSHBUTTON "Ï&alej >", IDC_NEXT_BUTTON,121,138,50,14 + DEFPUSHBUTTON "Dokonèi", IDC_FINISH_BUTTON,121,138,50,14 + PUSHBUTTON "Zrui", IDCANCEL,178,138,50,14 + PUSHBUTTON "Pomocník", IDHELP,235,138,50,14,WS_GROUP + LTEXT "", IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN + CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5 + LTEXT "", IDC_SUNKEN_LINEHEADER,0,35,290,1,SS_LEFT | SS_SUNKEN | WS_CHILD | WS_VISIBLE +END + + +IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Prispôsobenie panela nástrojov" +FONT 8, "MS Shell Dlg" +BEGIN + DEFPUSHBUTTON "&Zavrie", IDCANCEL,308,6,44,14 + PUSHBUTTON "Pr&edvolené", IDC_RESET_BTN,308,23,44,14 + PUSHBUTTON "&Pomocník", IDC_HELP_BTN,308,40,44,14 + PUSHBUTTON "Posunú na&hor", IDC_MOVEUP_BTN,308,74,44,14 + PUSHBUTTON "Posunú na&dol", IDC_MOVEDN_BTN,308,91,44,14 + LTEXT "D&ostuné tlaèidlá:", -1,4,5,84,10 + LISTBOX IDC_AVAILBTN_LBOX,4,17,120,100, LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP + PUSHBUTTON "Prid&a ->", IDOK, 131, 42, 44, 14 + PUSHBUTTON "<- Odob&ra", IDC_REMOVE_BTN,131,62,44,14 + LTEXT "&Tlaèidlá panela:", -1,182,5,78,10 + LISTBOX IDC_TOOLBARBTN_LBOX, 182,17,120,100,LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP +END + +STRINGTABLE DISCARDABLE +{ + IDS_CLOSE "Zavrie" +} + +STRINGTABLE DISCARDABLE +{ + IDM_TODAY "Dnes:" + IDM_GOTODAY "Choï na dneok" +} + +STRINGTABLE DISCARDABLE +{ + IDS_SEPARATOR "Odde¾ovaè" +} + +STRINGTABLE DISCARDABLE +{ + HKY_NONE "iadne" +} Propchange: trunk/reactos/dll/win32/comctl32/comctl_Sk.rc ------------------------------------------------------------------------------ svn:eol-style = native
16 years, 3 months
1
0
0
0
[dchapyshev] 39853: - Sync ole32 and oleaut32 with Wine head
by dchapyshev@svn.reactos.org
Author: dchapyshev Date: Tue Mar 3 12:12:43 2009 New Revision: 39853 URL:
http://svn.reactos.org/svn/reactos?rev=39853&view=rev
Log: - Sync ole32 and oleaut32 with Wine head Modified: trunk/reactos/dll/win32/ole32/antimoniker.c trunk/reactos/dll/win32/ole32/bindctx.c trunk/reactos/dll/win32/ole32/classmoniker.c trunk/reactos/dll/win32/ole32/clipboard.c trunk/reactos/dll/win32/ole32/comcat.c trunk/reactos/dll/win32/ole32/compositemoniker.c trunk/reactos/dll/win32/ole32/datacache.c trunk/reactos/dll/win32/ole32/defaulthandler.c trunk/reactos/dll/win32/ole32/errorinfo.c trunk/reactos/dll/win32/ole32/filemoniker.c trunk/reactos/dll/win32/ole32/ftmarshal.c trunk/reactos/dll/win32/ole32/git.c trunk/reactos/dll/win32/ole32/hglobalstream.c trunk/reactos/dll/win32/ole32/ifs.c trunk/reactos/dll/win32/ole32/itemmoniker.c trunk/reactos/dll/win32/ole32/marshal.c trunk/reactos/dll/win32/ole32/memlockbytes.c trunk/reactos/dll/win32/ole32/moniker.c trunk/reactos/dll/win32/ole32/ole2.c trunk/reactos/dll/win32/ole32/oleobj.c trunk/reactos/dll/win32/ole32/rpc.c trunk/reactos/dll/win32/ole32/stg_prop.c trunk/reactos/dll/win32/ole32/stg_stream.c trunk/reactos/dll/win32/ole32/storage.c trunk/reactos/dll/win32/ole32/storage32.c trunk/reactos/dll/win32/ole32/stubmanager.c trunk/reactos/dll/win32/ole32/usrmarshal.c trunk/reactos/dll/win32/oleaut32/connpt.c trunk/reactos/dll/win32/oleaut32/dispatch.c trunk/reactos/dll/win32/oleaut32/oleaut.c trunk/reactos/dll/win32/oleaut32/olefont.c trunk/reactos/dll/win32/oleaut32/olepicture.c trunk/reactos/dll/win32/oleaut32/recinfo.c trunk/reactos/dll/win32/oleaut32/safearray.c trunk/reactos/dll/win32/oleaut32/tmarshal.c trunk/reactos/dll/win32/oleaut32/typelib.c trunk/reactos/dll/win32/oleaut32/ungif.c trunk/reactos/dll/win32/oleaut32/usrmarshal.c trunk/reactos/dll/win32/oleaut32/varformat.c trunk/reactos/dll/win32/oleaut32/vartype.c Modified: trunk/reactos/dll/win32/ole32/antimoniker.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/antimonike…
============================================================================== --- trunk/reactos/dll/win32/ole32/antimoniker.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/antimoniker.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -80,7 +80,7 @@ IsEqualIID(&IID_IMoniker, riid)) *ppvObject = iface; else if (IsEqualIID(&IID_IROTData, riid)) - *ppvObject = (IROTData*)&(This->lpvtbl2); + *ppvObject = &This->lpvtbl2; else if (IsEqualIID(&IID_IMarshal, riid)) { HRESULT hr = S_OK; Modified: trunk/reactos/dll/win32/ole32/bindctx.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/bindctx.c?…
============================================================================== --- trunk/reactos/dll/win32/ole32/bindctx.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/bindctx.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -87,7 +87,7 @@ if (IsEqualIID(&IID_IUnknown, riid) || IsEqualIID(&IID_IBindCtx, riid)) { - *ppvObject = (IBindCtx*)This; + *ppvObject = This; IBindCtx_AddRef(iface); return S_OK; } Modified: trunk/reactos/dll/win32/ole32/classmoniker.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/classmonik…
============================================================================== --- trunk/reactos/dll/win32/ole32/classmoniker.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/classmoniker.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -80,7 +80,7 @@ *ppvObject = iface; } else if (IsEqualIID(&IID_IROTData, riid)) - *ppvObject = (IROTData*)&(This->lpVtblRotData); + *ppvObject = &This->lpVtblRotData; else if (IsEqualIID(&IID_IMarshal, riid)) { HRESULT hr = S_OK; Modified: trunk/reactos/dll/win32/ole32/clipboard.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/clipboard.…
============================================================================== --- trunk/reactos/dll/win32/ole32/clipboard.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/clipboard.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -1138,7 +1138,7 @@ } else if (memcmp(&IID_IDataObject, riid, sizeof(IID_IDataObject)) == 0) { - *ppvObject = (IDataObject*)&(This->lpvtbl1); + *ppvObject = &This->lpvtbl1; } else /* We only support IUnknown and IDataObject */ { @@ -1569,7 +1569,7 @@ HeapFree(GetProcessHeap(), 0, ef); return NULL; } - ef->pFmt = (LPFORMATETC)IMalloc_Alloc(pIMalloc, size); + ef->pFmt = IMalloc_Alloc(pIMalloc, size); IMalloc_Release(pIMalloc); if (ef->pFmt) @@ -1605,7 +1605,7 @@ } else if(IsEqualIID(riid, &IID_IEnumFORMATETC)) { - *ppvObj = (IDataObject*)This; + *ppvObj = This; } if(*ppvObj) Modified: trunk/reactos/dll/win32/ole32/comcat.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/comcat.c?r…
============================================================================== --- trunk/reactos/dll/win32/ole32/comcat.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/comcat.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -226,12 +226,6 @@ HKEY key, struct class_categories const* categories) { - static const WCHAR impl_keyname[] = { 'I', 'm', 'p', 'l', 'e', 'm', 'e', 'n', - 't', 'e', 'd', ' ', 'C', 'a', 't', 'e', - 'g', 'o', 'r', 'i', 'e', 's', 0 }; - static const WCHAR req_keyname[] = { 'R', 'e', 'q', 'u', 'i', 'r', 'e', 'd', - ' ', 'C', 'a', 't', 'e', 'g', 'o', 'r', - 'i', 'e', 's', 0 }; HKEY subkey; HRESULT res; DWORD index; @@ -732,7 +726,7 @@ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IClassFactory)) { - *ppvObj = (LPVOID)iface; + *ppvObj = iface; IUnknown_AddRef(iface); return S_OK; } @@ -847,7 +841,7 @@ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IEnumCATEGORYINFO)) { - *ppvObj = (LPVOID)iface; + *ppvObj = iface; COMCAT_IEnumCATEGORYINFO_AddRef(iface); return S_OK; } @@ -1030,7 +1024,7 @@ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IEnumGUID)) { - *ppvObj = (LPVOID)iface; + *ppvObj = iface; COMCAT_CLSID_IEnumGUID_AddRef(iface); return S_OK; } @@ -1048,7 +1042,7 @@ ref = InterlockedDecrement(&This->ref); if (ref == 0) { if (This->key) RegCloseKey(This->key); - HeapFree(GetProcessHeap(), 0, (LPVOID)This->categories); + HeapFree(GetProcessHeap(), 0, This->categories); HeapFree(GetProcessHeap(), 0, This); return 0; } @@ -1139,14 +1133,14 @@ new_this->lpVtbl = This->lpVtbl; new_this->ref = 1; - size = HeapSize(GetProcessHeap(), 0, (LPVOID)This->categories); + size = HeapSize(GetProcessHeap(), 0, This->categories); new_this->categories = HeapAlloc(GetProcessHeap(), 0, size); if (new_this->categories == NULL) { HeapFree(GetProcessHeap(), 0, new_this); return E_OUTOFMEMORY; } - memcpy((LPVOID)new_this->categories, This->categories, size); + memcpy(new_this->categories, This->categories, size); /* FIXME: could we more efficiently use DuplicateHandle? */ RegOpenKeyExW(HKEY_CLASSES_ROOT, keyname, 0, KEY_READ, &new_this->key); new_this->next_index = This->next_index; @@ -1216,7 +1210,7 @@ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IEnumGUID)) { - *ppvObj = (LPVOID)iface; + *ppvObj = iface; COMCAT_CATID_IEnumGUID_AddRef(iface); return S_OK; } Modified: trunk/reactos/dll/win32/ole32/compositemoniker.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/compositem…
============================================================================== --- trunk/reactos/dll/win32/ole32/compositemoniker.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/compositemoniker.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -115,9 +115,9 @@ ) *ppvObject = iface; else if (IsEqualIID(&IID_IROTData, riid)) - *ppvObject = (IROTData*)&(This->lpvtbl2); + *ppvObject = &This->lpvtbl2; else if (IsEqualIID(&IID_IMarshal, riid)) - *ppvObject = (IROTData*)&(This->lpvtblMarshal); + *ppvObject = &This->lpvtblMarshal; /* Check that we obtained an interface.*/ if ((*ppvObject)==0) Modified: trunk/reactos/dll/win32/ole32/datacache.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/datacache.…
============================================================================== --- trunk/reactos/dll/win32/ole32/datacache.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/datacache.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -892,26 +892,26 @@ } else if (memcmp(&IID_IDataObject, riid, sizeof(IID_IDataObject)) == 0) { - *ppvObject = (IDataObject*)&(this->lpVtbl); + *ppvObject = &this->lpVtbl; } else if ( (memcmp(&IID_IPersistStorage, riid, sizeof(IID_IPersistStorage)) == 0) || (memcmp(&IID_IPersist, riid, sizeof(IID_IPersist)) == 0) ) { - *ppvObject = (IPersistStorage*)&(this->lpvtblIPersistStorage); + *ppvObject = &this->lpvtblIPersistStorage; } else if ( (memcmp(&IID_IViewObject, riid, sizeof(IID_IViewObject)) == 0) || (memcmp(&IID_IViewObject2, riid, sizeof(IID_IViewObject2)) == 0) ) { - *ppvObject = (IViewObject2*)&(this->lpvtblIViewObject); + *ppvObject = &this->lpvtblIViewObject; } else if ( (memcmp(&IID_IOleCache, riid, sizeof(IID_IOleCache)) == 0) || (memcmp(&IID_IOleCache2, riid, sizeof(IID_IOleCache2)) == 0) ) { - *ppvObject = (IOleCache2*)&(this->lpvtblIOleCache2); + *ppvObject = &this->lpvtblIOleCache2; } else if (memcmp(&IID_IOleCacheControl, riid, sizeof(IID_IOleCacheControl)) == 0) { - *ppvObject = (IOleCacheControl*)&(this->lpvtblIOleCacheControl); + *ppvObject = &this->lpvtblIOleCacheControl; } /* Modified: trunk/reactos/dll/win32/ole32/defaulthandler.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/defaulthan…
============================================================================== --- trunk/reactos/dll/win32/ole32/defaulthandler.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/defaulthandler.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -206,11 +206,11 @@ if (IsEqualIID(&IID_IUnknown, riid)) *ppvObject = iface; else if (IsEqualIID(&IID_IOleObject, riid)) - *ppvObject = (IOleObject*)&This->lpVtbl; + *ppvObject = &This->lpVtbl; else if (IsEqualIID(&IID_IDataObject, riid)) - *ppvObject = (IDataObject*)&This->lpvtblIDataObject; + *ppvObject = &This->lpvtblIDataObject; else if (IsEqualIID(&IID_IRunnableObject, riid)) - *ppvObject = (IRunnableObject*)&This->lpvtblIRunnableObject; + *ppvObject = &This->lpvtblIRunnableObject; else if (IsEqualIID(&IID_IPersist, riid) || IsEqualIID(&IID_IPersistStorage, riid)) *ppvObject = &This->lpvtblIPersistStorage; Modified: trunk/reactos/dll/win32/ole32/errorinfo.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/errorinfo.…
============================================================================== --- trunk/reactos/dll/win32/ole32/errorinfo.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/errorinfo.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -95,7 +95,7 @@ stringBuffer = (WCHAR*)newBuffer; stringBuffer[len] = 0; - return (LPWSTR)stringBuffer; + return stringBuffer; } /* this code is from SysFreeString (ole2disp.c in oleaut32)*/ @@ -163,9 +163,9 @@ /* converts This to an object pointer */ -#define _IErrorInfo_(This) (IErrorInfo*)&(This->lpvtei) -#define _ICreateErrorInfo_(This) (ICreateErrorInfo*)&(This->lpvtcei) -#define _ISupportErrorInfo_(This) (ISupportErrorInfo*)&(This->lpvtsei) +#define _IErrorInfo_(This) ((IErrorInfo*)&(This)->lpvtei) +#define _ICreateErrorInfo_(This) (&(This)->lpvtcei) +#define _ISupportErrorInfo_(This) (&(This)->lpvtsei) static IErrorInfo * IErrorInfoImpl_Constructor(void) { Modified: trunk/reactos/dll/win32/ole32/filemoniker.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/filemonike…
============================================================================== --- trunk/reactos/dll/win32/ole32/filemoniker.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/filemoniker.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -92,7 +92,7 @@ *ppvObject = iface; else if (IsEqualIID(&IID_IROTData, riid)) - *ppvObject = (IROTData*)&(This->lpvtbl2); + *ppvObject = &This->lpvtbl2; else if (IsEqualIID(&IID_IMarshal, riid)) { HRESULT hr = S_OK; @@ -560,7 +560,7 @@ /* get the requested interface from the loaded class */ res= IUnknown_QueryInterface(pObj,riid,ppvResult); - IBindCtx_RegisterObjectBound(pbc,(IUnknown*)*ppvResult); + IBindCtx_RegisterObjectBound(pbc,*ppvResult); IUnknown_Release(pObj); } Modified: trunk/reactos/dll/win32/ole32/ftmarshal.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/ftmarshal.…
============================================================================== --- trunk/reactos/dll/win32/ole32/ftmarshal.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/ftmarshal.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -46,8 +46,8 @@ IUnknown *pUnkOuter; } FTMarshalImpl; -#define _IFTMUnknown_(This)(IUnknown*)&(This->lpVtbl) -#define _IFTMarshal_(This) (IMarshal*)&(This->lpvtblFTM) +#define _IFTMUnknown_(This) ((IUnknown*)&(This)->lpVtbl) +#define _IFTMarshal_(This) (&(This)->lpvtblFTM) static inline FTMarshalImpl *impl_from_IMarshal( IMarshal *iface ) { Modified: trunk/reactos/dll/win32/ole32/git.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/git.c?rev=…
============================================================================== --- trunk/reactos/dll/win32/ole32/git.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/git.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -308,7 +308,7 @@ if (IsEqualIID(riid,&IID_IUnknown) || IsEqualIID(riid,&IID_IGlobalInterfaceTable)) { - *ppv = (LPVOID)iface; + *ppv = iface; return S_OK; } return E_NOINTERFACE; Modified: trunk/reactos/dll/win32/ole32/hglobalstream.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/hglobalstr…
============================================================================== --- trunk/reactos/dll/win32/ole32/hglobalstream.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/hglobalstream.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -151,7 +151,7 @@ IsEqualIID(&IID_ISequentialStream, riid) || IsEqualIID(&IID_IStream, riid)) { - *ppvObject = (IStream*)This; + *ppvObject = This; } /* Modified: trunk/reactos/dll/win32/ole32/ifs.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/ifs.c?rev=…
============================================================================== --- trunk/reactos/dll/win32/ole32/ifs.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/ifs.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -148,7 +148,7 @@ TRACE("(%s,%p)\n",debugstr_guid(refiid),obj); if (IsEqualIID(&IID_IUnknown,refiid) || IsEqualIID(&IID_IMalloc,refiid)) { - *obj = (LPMALLOC)&Malloc32; + *obj = &Malloc32; return S_OK; } return E_NOINTERFACE; @@ -383,7 +383,7 @@ TRACE("(%s,%p)\n",debugstr_guid(refiid),obj); if (IsEqualIID(&IID_IUnknown,refiid) || IsEqualIID(&IID_IMallocSpy,refiid)) { - *obj = (LPMALLOC)&MallocSpy; + *obj = &MallocSpy; return S_OK; } return E_NOINTERFACE; Modified: trunk/reactos/dll/win32/ole32/itemmoniker.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/itemmonike…
============================================================================== --- trunk/reactos/dll/win32/ole32/itemmoniker.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/itemmoniker.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -176,7 +176,7 @@ *ppvObject = iface; else if (IsEqualIID(&IID_IROTData, riid)) - *ppvObject = (IROTData*)&(This->lpvtbl2); + *ppvObject = &This->lpvtbl2; else if (IsEqualIID(&IID_IMarshal, riid)) { HRESULT hr = S_OK; Modified: trunk/reactos/dll/win32/ole32/marshal.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/marshal.c?…
============================================================================== --- trunk/reactos/dll/win32/ole32/marshal.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/marshal.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -216,7 +216,7 @@ mqi.pIID = riid; hr = IMultiQI_QueryMultipleInterfaces(iface, 1, &mqi); - *ppv = (void *)mqi.pItf; + *ppv = mqi.pItf; return hr; } @@ -837,19 +837,19 @@ if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IMultiQI)) { - *ppv = (void *)&This->lpVtbl; + *ppv = &This->lpVtbl; IUnknown_AddRef((IUnknown *)*ppv); return S_OK; } if (IsEqualIID(riid, &IID_IMarshal)) { - *ppv = (void *)&This->lpVtblMarshal; + *ppv = &This->lpVtblMarshal; IUnknown_AddRef((IUnknown *)*ppv); return S_OK; } if (IsEqualIID(riid, &IID_IClientSecurity)) { - *ppv = (void *)&This->lpVtblCliSec; + *ppv = &This->lpVtblCliSec; IUnknown_AddRef((IUnknown *)*ppv); return S_OK; } @@ -890,7 +890,7 @@ * proxy associated with the ifproxy as we handle IUnknown ourselves */ if (IsEqualIID(riid, &IID_IUnknown)) { - ifproxy->iface = (void *)&This->lpVtbl; + ifproxy->iface = &This->lpVtbl; IMultiQI_AddRef((IMultiQI *)&This->lpVtbl); hr = S_OK; } @@ -1213,7 +1213,7 @@ /* make sure this apartment can be reached from other threads / processes */ RPC_StartRemoting(apt); - hres = marshal_object(apt, &stdobjref, riid, (IUnknown *)pv, mshlflags); + hres = marshal_object(apt, &stdobjref, riid, pv, mshlflags); if (hres) { ERR("Failed to create ifstub, hres=0x%x\n", hres); @@ -1973,7 +1973,7 @@ *ppv = NULL; if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IClassFactory)) { - *ppv = (LPVOID)iface; + *ppv = iface; return S_OK; } return E_NOINTERFACE; Modified: trunk/reactos/dll/win32/ole32/memlockbytes.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/memlockbyt…
============================================================================== --- trunk/reactos/dll/win32/ole32/memlockbytes.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/memlockbytes.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -289,7 +289,7 @@ if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_ILockBytes)) { - *ppvObject = (ILockBytes*)This; + *ppvObject = This; } /* Modified: trunk/reactos/dll/win32/ole32/moniker.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/moniker.c?…
============================================================================== --- trunk/reactos/dll/win32/ole32/moniker.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/moniker.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -316,7 +316,7 @@ if (IsEqualIID(&IID_IUnknown, riid) || IsEqualIID(&IID_IRunningObjectTable, riid)) - *ppvObject = (IRunningObjectTable*)This; + *ppvObject = This; if ((*ppvObject)==0) return E_NOINTERFACE; @@ -1291,10 +1291,10 @@ *ppvObject = NULL; if (IsEqualIID(&IID_IUnknown, riid)) - *ppvObject = (IEnumMoniker*)This; + *ppvObject = This; else if (IsEqualIID(&IID_IEnumMoniker, riid)) - *ppvObject = (IEnumMoniker*)This; + *ppvObject = This; if ((*ppvObject)==NULL) return E_NOINTERFACE; Modified: trunk/reactos/dll/win32/ole32/ole2.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/ole2.c?rev…
============================================================================== --- trunk/reactos/dll/win32/ole32/ole2.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/ole2.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -500,15 +500,10 @@ trackerInfo.curTargetHWND = 0; trackerInfo.curDragTarget = 0; - hwndTrackWindow = CreateWindowA(OLEDD_DRAGTRACKERCLASS, - "TrackerWindow", - WS_POPUP, - CW_USEDEFAULT, CW_USEDEFAULT, - CW_USEDEFAULT, CW_USEDEFAULT, - 0, - 0, - 0, - (LPVOID)&trackerInfo); + hwndTrackWindow = CreateWindowA(OLEDD_DRAGTRACKERCLASS, "TrackerWindow", + WS_POPUP, CW_USEDEFAULT, CW_USEDEFAULT, + CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, 0, + &trackerInfo); if (hwndTrackWindow!=0) { @@ -1963,7 +1958,7 @@ { LPCREATESTRUCTA createStruct = (LPCREATESTRUCTA)lParam; - SetWindowLongA(hwnd, 0, (LONG)createStruct->lpCreateParams); + SetWindowLongPtrA(hwnd, 0, (LONG_PTR)createStruct->lpCreateParams); SetTimer(hwnd, DRAG_TIMER_ID, 50, NULL); break; @@ -1971,7 +1966,7 @@ case WM_TIMER: case WM_MOUSEMOVE: { - OLEDD_TrackMouseMove((TrackerWindowInfo*)GetWindowLongA(hwnd, 0)); + OLEDD_TrackMouseMove((TrackerWindowInfo*)GetWindowLongPtrA(hwnd, 0)); break; } case WM_LBUTTONUP: @@ -1981,7 +1976,7 @@ case WM_MBUTTONDOWN: case WM_RBUTTONDOWN: { - OLEDD_TrackStateChange((TrackerWindowInfo*)GetWindowLongA(hwnd, 0)); + OLEDD_TrackStateChange((TrackerWindowInfo*)GetWindowLongPtrA(hwnd, 0)); break; } case WM_DESTROY: @@ -2599,7 +2594,7 @@ stringBuffer = (WCHAR*)newBuffer; stringBuffer[len] = '\0'; - return (LPWSTR)stringBuffer; + return stringBuffer; } /*********************************************************************** @@ -2901,9 +2896,9 @@ case VT_FILETIME: elemSize = sizeof(pvarSrc->u.filetime); break; case VT_CLSID: elemSize = sizeof(*pvarSrc->u.puuid); break; case VT_CF: elemSize = sizeof(*pvarSrc->u.pclipdata); break; - case VT_BSTR: elemSize = sizeof(*pvarSrc->u.bstrVal); break; - case VT_LPSTR: elemSize = sizeof(*pvarSrc->u.pszVal); break; - case VT_LPWSTR: elemSize = sizeof(*pvarSrc->u.pwszVal); break; + case VT_BSTR: elemSize = sizeof(pvarSrc->u.bstrVal); break; + case VT_LPSTR: elemSize = sizeof(pvarSrc->u.pszVal); break; + case VT_LPWSTR: elemSize = sizeof(pvarSrc->u.pwszVal); break; case VT_VARIANT: elemSize = sizeof(*pvarSrc->u.pvarVal); break; default: Modified: trunk/reactos/dll/win32/ole32/oleobj.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/oleobj.c?r…
============================================================================== --- trunk/reactos/dll/win32/ole32/oleobj.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/oleobj.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -256,7 +256,7 @@ else if(IsEqualIID(riid, &IID_IOleAdviseHolder)) { /* IOleAdviseHolder */ - *ppvObj = (IOleAdviseHolder*) This; + *ppvObj = This; } if(*ppvObj == NULL) Modified: trunk/reactos/dll/win32/ole32/rpc.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/rpc.c?rev=…
============================================================================== --- trunk/reactos/dll/win32/ole32/rpc.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/rpc.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -440,7 +440,7 @@ *ppv = NULL; if (IsEqualIID(riid,&IID_IRpcChannelBuffer) || IsEqualIID(riid,&IID_IUnknown)) { - *ppv = (LPVOID)iface; + *ppv = iface; IUnknown_AddRef(iface); return S_OK; } @@ -495,7 +495,7 @@ TRACE("(%p)->(%p,%s)\n", This, olemsg, debugstr_guid(riid)); - message_state = (struct message_state *)msg->Handle; + message_state = msg->Handle; /* restore the binding handle and the real start of data */ msg->Handle = message_state->binding_handle; msg->Buffer = (char *)msg->Buffer - message_state->prefix_data_len; @@ -522,7 +522,7 @@ else status = I_RpcGetBuffer(msg); - orpcthat = (ORPCTHAT *)msg->Buffer; + orpcthat = msg->Buffer; msg->Buffer = (char *)msg->Buffer + FIELD_OFFSET(ORPCTHAT, extensions); orpcthat->flags = ORPCF_NULL /* FIXME? */; @@ -702,7 +702,7 @@ if (status == RPC_S_OK) { - orpcthis = (ORPCTHIS *)msg->Buffer; + orpcthis = msg->Buffer; msg->Buffer = (char *)msg->Buffer + FIELD_OFFSET(ORPCTHIS, extensions); orpcthis->version.MajorVersion = COM_MAJOR_VERSION; @@ -765,7 +765,7 @@ /* this thread runs an outgoing RPC */ static DWORD WINAPI rpc_sendreceive_thread(LPVOID param) { - struct dispatch_params *data = (struct dispatch_params *) param; + struct dispatch_params *data = param; /* Note: I_RpcSendReceive doesn't raise exceptions like the higher-level * RPC functions do */ @@ -825,7 +825,7 @@ return RPC_E_CANTCALLOUT_ININPUTSYNCCALL; } - message_state = (struct message_state *)msg->Handle; + message_state = msg->Handle; /* restore the binding handle and the real start of data */ msg->Handle = message_state->binding_handle; msg->Buffer = (char *)msg->Buffer - message_state->prefix_data_len; @@ -950,7 +950,7 @@ TRACE("(%p)\n", msg); - message_state = (struct message_state *)msg->Handle; + message_state = msg->Handle; /* restore the binding handle and the real start of data */ msg->Handle = message_state->binding_handle; msg->Buffer = (char *)msg->Buffer - message_state->prefix_data_len; @@ -980,7 +980,7 @@ TRACE("(%p)\n", msg); - message_state = (struct message_state *)msg->Handle; + message_state = msg->Handle; /* restore the binding handle and the real start of data */ msg->Handle = message_state->binding_handle; msg->Buffer = (char *)msg->Buffer - message_state->prefix_data_len; @@ -1179,7 +1179,7 @@ return RPC_S_INVALID_BOUND; } - *first_wire_orpc_extent = wire_orpc_extent = (WIRE_ORPC_EXTENT *)msg->Buffer; + *first_wire_orpc_extent = wire_orpc_extent = msg->Buffer; for (i = 0; i < ((extensions->size+1)&~1); i++) { if ((const char *)&wire_orpc_extent->data[0] > end) @@ -1398,7 +1398,7 @@ HeapFree(GetProcessHeap(), 0, original_buffer); exit_reset_state: - message_state = (struct message_state *)msg->Handle; + message_state = msg->Handle; msg->Handle = message_state->binding_handle; msg->Buffer = (char *)msg->Buffer - message_state->prefix_data_len; msg->BufferLength += message_state->prefix_data_len; @@ -1847,7 +1847,7 @@ /* FIXME: should call to rpcss instead */ static DWORD WINAPI local_server_thread(LPVOID param) { - struct local_server_params * lsp = (struct local_server_params *)param; + struct local_server_params * lsp = param; HANDLE hPipe; WCHAR pipefn[100]; HRESULT hres; Modified: trunk/reactos/dll/win32/ole32/stg_prop.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/stg_prop.c…
============================================================================== --- trunk/reactos/dll/win32/ole32/stg_prop.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/stg_prop.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -927,23 +927,23 @@ static int PropertyStorage_PropNameCompare(const void *a, const void *b, void *extra) { - PropertyStorage_impl *This = (PropertyStorage_impl *)extra; + PropertyStorage_impl *This = extra; if (This->codePage == CP_UNICODE) { TRACE("(%s, %s)\n", debugstr_w(a), debugstr_w(b)); if (This->grfFlags & PROPSETFLAG_CASE_SENSITIVE) - return lstrcmpW((LPCWSTR)a, (LPCWSTR)b); + return lstrcmpW(a, b); else - return lstrcmpiW((LPCWSTR)a, (LPCWSTR)b); + return lstrcmpiW(a, b); } else { TRACE("(%s, %s)\n", debugstr_a(a), debugstr_a(b)); if (This->grfFlags & PROPSETFLAG_CASE_SENSITIVE) - return lstrcmpA((LPCSTR)a, (LPCSTR)b); + return lstrcmpA(a, b); else - return lstrcmpiA((LPCSTR)a, (LPCSTR)b); + return lstrcmpiA(a, b); } } @@ -961,7 +961,7 @@ static void PropertyStorage_PropertyDestroy(void *k, void *d, void *extra) { - PropVariantClear((PROPVARIANT *)d); + PropVariantClear(d); HeapFree(GetProcessHeap(), 0, d); } @@ -1486,8 +1486,8 @@ static BOOL PropertyStorage_DictionaryWriter(const void *key, const void *value, void *extra, void *closure) { - PropertyStorage_impl *This = (PropertyStorage_impl *)extra; - struct DictionaryClosure *c = (struct DictionaryClosure *)closure; + PropertyStorage_impl *This = extra; + struct DictionaryClosure *c = closure; DWORD propid; ULONG count; @@ -1756,8 +1756,8 @@ static BOOL PropertyStorage_PropertiesWriter(const void *key, const void *value, void *extra, void *closure) { - PropertyStorage_impl *This = (PropertyStorage_impl *)extra; - struct PropertyClosure *c = (struct PropertyClosure *)closure; + PropertyStorage_impl *This = extra; + struct PropertyClosure *c = closure; assert(key); assert(value); Modified: trunk/reactos/dll/win32/ole32/stg_stream.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/stg_stream…
============================================================================== --- trunk/reactos/dll/win32/ole32/stg_stream.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/stg_stream.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -126,7 +126,7 @@ IsEqualIID(&IID_ISequentialStream, riid) || IsEqualIID(&IID_IStream, riid)) { - *ppvObject = (IStream*)This; + *ppvObject = This; } /* Modified: trunk/reactos/dll/win32/ole32/storage.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/storage.c?…
============================================================================== --- trunk/reactos/dll/win32/ole32/storage.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/storage.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -1287,7 +1287,7 @@ BYTE block[BIGSIZE]; ULONG *byteswritten=pcbWrite,xxwritten; int oldsize,newsize,i,curoffset=0,lastblocknr,blocknr,cc; - const BYTE* pbv = (const BYTE*)pv; + const BYTE* pbv = pv; if (!pcbWrite) byteswritten=&xxwritten; *byteswritten = 0; Modified: trunk/reactos/dll/win32/ole32/storage32.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/storage32.…
============================================================================== --- trunk/reactos/dll/win32/ole32/storage32.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/storage32.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -314,11 +314,11 @@ if (IsEqualGUID(&IID_IUnknown, riid) || IsEqualGUID(&IID_IStorage, riid)) { - *ppvObject = (IStorage*)This; + *ppvObject = This; } else if (IsEqualGUID(&IID_IPropertySetStorage, riid)) { - *ppvObject = (IStorage*)&This->pssVtbl; + *ppvObject = &This->pssVtbl; } /* @@ -2041,13 +2041,8 @@ size.u.HighPart = 0; size.u.LowPart = 0; - hr = StorageBaseImpl_OpenStream( - (IStorage*)parentStorage, - (OLECHAR*)propertyToDelete.name, - NULL, - STGM_WRITE | STGM_SHARE_EXCLUSIVE, - 0, - &pis); + hr = StorageBaseImpl_OpenStream((IStorage*)parentStorage, + propertyToDelete.name, NULL, STGM_WRITE | STGM_SHARE_EXCLUSIVE, 0, &pis); if (hr!=S_OK) { @@ -3693,7 +3688,7 @@ if (IsEqualGUID(&IID_IUnknown, riid) || IsEqualGUID(&IID_IEnumSTATSTG, riid)) { - *ppvObject = (IEnumSTATSTG*)This; + *ppvObject = This; IEnumSTATSTG_AddRef((IEnumSTATSTG*)This); return S_OK; } @@ -4031,8 +4026,7 @@ currentSearchNode, currentProperty); - if ( propertyNameCmp( - (const OLECHAR*)currentProperty->name, lpszPropName) == 0) + if (propertyNameCmp(currentProperty->name, lpszPropName) == 0) return currentSearchNode; /* @@ -4344,7 +4338,7 @@ destination->pwcsName = CoTaskMemAlloc((lstrlenW(source->name)+1)*sizeof(WCHAR)); - strcpyW((LPWSTR)destination->pwcsName, source->name); + strcpyW(destination->pwcsName, source->name); } switch (source->propertyType) @@ -4633,7 +4627,7 @@ } *bytesWritten = 0; - bufferWalker = (const BYTE*)buffer; + bufferWalker = buffer; while ( (size > 0) && (blockIndex != BLOCK_END_OF_CHAIN) ) { @@ -5368,7 +5362,7 @@ * This is OK since we don't intend to modify that buffer. */ *bytesWritten = 0; - bufferWalker = (const BYTE*)buffer; + bufferWalker = buffer; while ( (size > 0) && (blockIndex != BLOCK_END_OF_CHAIN) ) { /* @@ -6632,7 +6626,7 @@ if(pData->dwOleTypeNameLength > 0) { /* Get the OleTypeName */ - dwSize = pOleStream->lpstbl->Get(pOleStream, (void *)pData->strOleTypeName, pData->dwOleTypeNameLength); + dwSize = pOleStream->lpstbl->Get(pOleStream, pData->strOleTypeName, pData->dwOleTypeNameLength); if(dwSize != pData->dwOleTypeNameLength) { hRes = CONVERT10_E_OLESTREAM_GET; @@ -6653,7 +6647,7 @@ pData->pstrOleObjFileName = HeapAlloc(GetProcessHeap(), 0, pData->dwOleObjFileNameLength); if(pData->pstrOleObjFileName) { - dwSize = pOleStream->lpstbl->Get(pOleStream, (void *)(pData->pstrOleObjFileName),pData->dwOleObjFileNameLength); + dwSize = pOleStream->lpstbl->Get(pOleStream, pData->pstrOleObjFileName, pData->dwOleObjFileNameLength); if(dwSize != pData->dwOleObjFileNameLength) { hRes = CONVERT10_E_OLESTREAM_GET; @@ -6696,7 +6690,7 @@ if(!bStrem1) /* if it is a second OLE stream data */ { pData->dwDataLength -= 8; - dwSize = pOleStream->lpstbl->Get(pOleStream, (void *)(pData->strUnknown), sizeof(pData->strUnknown)); + dwSize = pOleStream->lpstbl->Get(pOleStream, pData->strUnknown, sizeof(pData->strUnknown)); if(dwSize != sizeof(pData->strUnknown)) { hRes = CONVERT10_E_OLESTREAM_GET; @@ -6783,7 +6777,7 @@ if(pData->dwOleTypeNameLength > 0) { /* Set the OleTypeName */ - dwSize = pOleStream->lpstbl->Put(pOleStream, (void *) pData->strOleTypeName, pData->dwOleTypeNameLength); + dwSize = pOleStream->lpstbl->Put(pOleStream, pData->strOleTypeName, pData->dwOleTypeNameLength); if(dwSize != pData->dwOleTypeNameLength) { hRes = CONVERT10_E_OLESTREAM_PUT; Modified: trunk/reactos/dll/win32/ole32/stubmanager.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/stubmanage…
============================================================================== --- trunk/reactos/dll/win32/ole32/stubmanager.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/stubmanager.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -606,7 +606,7 @@ if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IRemUnknown)) { - *ppv = (LPVOID)iface; + *ppv = iface; IRemUnknown_AddRef(iface); return S_OK; } Modified: trunk/reactos/dll/win32/ole32/usrmarshal.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/usrmarshal…
============================================================================== --- trunk/reactos/dll/win32/ole32/usrmarshal.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/usrmarshal.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -105,7 +105,7 @@ TRACE("(%s, %d, %p\n", debugstr_user_flags(pFlags), StartingSize, pCF); - size += sizeof(userCLIPFORMAT); + size += 8; /* only need to marshal the name if it is not a pre-defined type and * we are going remote */ @@ -113,7 +113,7 @@ { WCHAR format[255]; INT ret; - size += 3 * sizeof(INT); + size += 3 * sizeof(UINT); /* urg! this function is badly designed because it won't tell us how * much space is needed without doing a dummy run of storing the * name into a buffer */ @@ -146,30 +146,30 @@ */ unsigned char * __RPC_USER CLIPFORMAT_UserMarshal(ULONG *pFlags, unsigned char *pBuffer, CLIPFORMAT *pCF) { - wireCLIPFORMAT wirecf = (wireCLIPFORMAT)pBuffer; - TRACE("(%s, %p, &0x%04x\n", debugstr_user_flags(pFlags), pBuffer, *pCF); - - wirecf->u.dwValue = *pCF; - pBuffer += sizeof(*wirecf); /* only need to marshal the name if it is not a pre-defined type and * we are going remote */ if ((*pCF >= 0xc000) && (LOWORD(*pFlags) == MSHCTX_DIFFERENTMACHINE)) { WCHAR format[255]; - INT len; - wirecf->fContext = WDT_REMOTE_CALL; + UINT len; + + *(DWORD *)pBuffer = WDT_REMOTE_CALL; + pBuffer += 4; + *(DWORD *)pBuffer = *pCF; + pBuffer += 4; + len = GetClipboardFormatNameW(*pCF, format, sizeof(format)/sizeof(format[0])-1); if (!len) RaiseException(DV_E_CLIPFORMAT, 0, 0, NULL); len += 1; - *(INT *)pBuffer = len; - pBuffer += sizeof(INT); - *(INT *)pBuffer = 0; - pBuffer += sizeof(INT); - *(INT *)pBuffer = len; - pBuffer += sizeof(INT); + *(UINT *)pBuffer = len; + pBuffer += sizeof(UINT); + *(UINT *)pBuffer = 0; + pBuffer += sizeof(UINT); + *(UINT *)pBuffer = len; + pBuffer += sizeof(UINT); TRACE("marshaling format name %s\n", debugstr_wn(format, len-1)); lstrcpynW((LPWSTR)pBuffer, format, len); pBuffer += len * sizeof(WCHAR); @@ -177,7 +177,12 @@ pBuffer += sizeof(WCHAR); } else - wirecf->fContext = WDT_INPROC_CALL; + { + *(DWORD *)pBuffer = WDT_INPROC_CALL; + pBuffer += 4; + *(DWORD *)pBuffer = *pCF; + pBuffer += 4; + } return pBuffer; } @@ -203,24 +208,36 @@ */ unsigned char * __RPC_USER CLIPFORMAT_UserUnmarshal(ULONG *pFlags, unsigned char *pBuffer, CLIPFORMAT *pCF) { - wireCLIPFORMAT wirecf = (wireCLIPFORMAT)pBuffer; + LONG fContext; TRACE("(%s, %p, %p\n", debugstr_user_flags(pFlags), pBuffer, pCF); - pBuffer += sizeof(*wirecf); - if (wirecf->fContext == WDT_INPROC_CALL) - *pCF = (CLIPFORMAT)wirecf->u.dwValue; - else if (wirecf->fContext == WDT_REMOTE_CALL) + fContext = *(DWORD *)pBuffer; + pBuffer += 4; + + if (fContext == WDT_INPROC_CALL) + { + *pCF = *(CLIPFORMAT *)pBuffer; + pBuffer += 4; + } + else if (fContext == WDT_REMOTE_CALL) { CLIPFORMAT cf; - INT len = *(INT *)pBuffer; - pBuffer += sizeof(INT); - if (*(INT *)pBuffer != 0) + UINT len; + + /* pointer ID for registered clip format string */ + if (*(DWORD *)pBuffer == 0) RaiseException(RPC_S_INVALID_BOUND, 0, 0, NULL); - pBuffer += sizeof(INT); - if (*(INT *)pBuffer != len) + pBuffer += 4; + + len = *(UINT *)pBuffer; + pBuffer += sizeof(UINT); + if (*(UINT *)pBuffer != 0) RaiseException(RPC_S_INVALID_BOUND, 0, 0, NULL); - pBuffer += sizeof(INT); + pBuffer += sizeof(UINT); + if (*(UINT *)pBuffer != len) + RaiseException(RPC_S_INVALID_BOUND, 0, 0, NULL); + pBuffer += sizeof(UINT); if (((WCHAR *)pBuffer)[len] != '\0') RaiseException(RPC_S_INVALID_BOUND, 0, 0, NULL); TRACE("unmarshaling clip format %s\n", debugstr_w((LPCWSTR)pBuffer)); Modified: trunk/reactos/dll/win32/oleaut32/connpt.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/connpt.…
============================================================================== --- trunk/reactos/dll/win32/oleaut32/connpt.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/oleaut32/connpt.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -161,9 +161,9 @@ * Compare the riid with the interface IDs implemented by this object. */ if (IsEqualIID(&IID_IUnknown, riid)) - *ppvObject = (IConnectionPoint*)This; + *ppvObject = This; else if (IsEqualIID(&IID_IConnectionPoint, riid)) - *ppvObject = (IConnectionPoint*)This; + *ppvObject = This; /* * Check that we obtained an interface. @@ -430,9 +430,9 @@ * Compare the riid with the interface IDs implemented by this object. */ if (IsEqualIID(&IID_IUnknown, riid)) - *ppvObject = (IEnumConnections*)This; + *ppvObject = This; else if (IsEqualIID(&IID_IEnumConnections, riid)) - *ppvObject = (IEnumConnections*)This; + *ppvObject = This; /* * Check that we obtained an interface. Modified: trunk/reactos/dll/win32/oleaut32/dispatch.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/dispatc…
============================================================================== --- trunk/reactos/dll/win32/oleaut32/dispatch.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/oleaut32/dispatch.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -233,7 +233,7 @@ if (IsEqualIID(riid, &IID_IDispatch) || IsEqualIID(riid, &IID_IUnknown)) { - *ppvObject = (LPVOID)This; + *ppvObject = This; IUnknown_AddRef((LPUNKNOWN)*ppvObject); return S_OK; } Modified: trunk/reactos/dll/win32/oleaut32/oleaut.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/oleaut.…
============================================================================== --- trunk/reactos/dll/win32/oleaut32/oleaut.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/oleaut32/oleaut.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -266,7 +266,7 @@ stringBuffer = (WCHAR*)newBuffer; stringBuffer[len] = '\0'; - return (LPWSTR)stringBuffer; + return stringBuffer; } /****************************************************************************** @@ -706,7 +706,7 @@ IsEqualIID(riid, &IID_IPSFactoryBuffer)) { IUnknown_AddRef(iface); - *ppv = (void *)iface; + *ppv = iface; return S_OK; } return E_NOINTERFACE; Modified: trunk/reactos/dll/win32/oleaut32/olefont.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/olefont…
============================================================================== --- trunk/reactos/dll/win32/oleaut32/olefont.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/oleaut32/olefont.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -351,21 +351,21 @@ * Compare the riid with the interface IDs implemented by this object. */ if (IsEqualGUID(&IID_IUnknown, riid)) - *ppvObject = (IFont*)this; + *ppvObject = this; if (IsEqualGUID(&IID_IFont, riid)) - *ppvObject = (IFont*)this; + *ppvObject = this; if (IsEqualGUID(&IID_IDispatch, riid)) - *ppvObject = (IDispatch*)&(this->lpvtblIDispatch); + *ppvObject = &this->lpvtblIDispatch; if (IsEqualGUID(&IID_IFontDisp, riid)) - *ppvObject = (IDispatch*)&(this->lpvtblIDispatch); + *ppvObject = &this->lpvtblIDispatch; if (IsEqualIID(&IID_IPersist, riid) || IsEqualGUID(&IID_IPersistStream, riid)) - *ppvObject = (IPersistStream*)&(this->lpvtblIPersistStream); + *ppvObject = &this->lpvtblIPersistStream; if (IsEqualGUID(&IID_IConnectionPointContainer, riid)) - *ppvObject = (IConnectionPointContainer*)&(this->lpvtblIConnectionPointContainer); + *ppvObject = &this->lpvtblIConnectionPointContainer; if (IsEqualGUID(&IID_IPersistPropertyBag, riid)) - *ppvObject = (IPersistPropertyBag*)&(this->lpvtblIPersistPropertyBag); + *ppvObject = &this->lpvtblIPersistPropertyBag; if (IsEqualGUID(&IID_IPersistStreamInit, riid)) - *ppvObject = (IPersistStreamInit*)&(this->lpvtblIPersistStreamInit); + *ppvObject = &this->lpvtblIPersistStreamInit; /* * Check that we obtained an interface. @@ -2343,4 +2343,4 @@ }; static IClassFactoryImpl STDFONT_CF = {&SFCF_Vtbl, 1 }; -void _get_STDFONT_CF(LPVOID *ppv) { *ppv = (LPVOID)&STDFONT_CF; } +void _get_STDFONT_CF(LPVOID *ppv) { *ppv = &STDFONT_CF; } Modified: trunk/reactos/dll/win32/oleaut32/olepicture.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/olepict…
============================================================================== --- trunk/reactos/dll/win32/oleaut32/olepicture.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/oleaut32/olepicture.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -459,15 +459,15 @@ * Compare the riid with the interface IDs implemented by this object. */ if (IsEqualIID(&IID_IUnknown, riid) || IsEqualIID(&IID_IPicture, riid)) - *ppvObject = (IPicture*)This; + *ppvObject = This; else if (IsEqualIID(&IID_IDispatch, riid)) - *ppvObject = (IDispatch*)&(This->lpvtblIDispatch); + *ppvObject = &This->lpvtblIDispatch; else if (IsEqualIID(&IID_IPictureDisp, riid)) - *ppvObject = (IDispatch*)&(This->lpvtblIDispatch); + *ppvObject = &This->lpvtblIDispatch; else if (IsEqualIID(&IID_IPersist, riid) || IsEqualIID(&IID_IPersistStream, riid)) - *ppvObject = (IPersistStream*)&(This->lpvtblIPersistStream); + *ppvObject = &This->lpvtblIPersistStream; else if (IsEqualIID(&IID_IConnectionPointContainer, riid)) - *ppvObject = (IConnectionPointContainer*)&(This->lpvtblIConnectionPointContainer); + *ppvObject = &This->lpvtblIConnectionPointContainer; /* * Check that we obtained an interface. @@ -1064,7 +1064,7 @@ }; static int _gif_inputfunc(GifFileType *gif, GifByteType *data, int len) { - struct gifdata *gd = (struct gifdata*)gif->UserData; + struct gifdata *gd = gif->UserData; if (len+gd->curoff > gd->len) { ERR("Trying to read %d bytes, but only %d available.\n",len, gd->len-gd->curoff); @@ -2011,7 +2011,7 @@ *ppBuffer = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, *pLength); /* Fill the BITMAPFILEHEADER */ - pFileHeader = (BITMAPFILEHEADER *)(*ppBuffer); + pFileHeader = *ppBuffer; pFileHeader->bfType = BITMAP_FORMAT_BMP; pFileHeader->bfSize = *pLength; pFileHeader->bfOffBits = @@ -2886,4 +2886,4 @@ }; static IClassFactoryImpl STDPIC_CF = {&SPCF_Vtbl, 1 }; -void _get_STDPIC_CF(LPVOID *ppv) { *ppv = (LPVOID)&STDPIC_CF; } +void _get_STDPIC_CF(LPVOID *ppv) { *ppv = &STDPIC_CF; } Modified: trunk/reactos/dll/win32/oleaut32/recinfo.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/recinfo…
============================================================================== --- trunk/reactos/dll/win32/oleaut32/recinfo.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/oleaut32/recinfo.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -237,7 +237,7 @@ *(void**)var = NULL; break; case VT_SAFEARRAY: - SafeArrayDestroy((SAFEARRAY*)var); + SafeArrayDestroy(var); break; default: FIXME("Not supported vt = %d\n", This->fields[i].vt); Modified: trunk/reactos/dll/win32/oleaut32/safearray.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/safearr…
============================================================================== --- trunk/reactos/dll/win32/oleaut32/safearray.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/oleaut32/safearray.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -299,7 +299,7 @@ if (SUCCEEDED(SafeArrayGetRecordInfo(psa, &lpRecInfo))) { - PBYTE pRecordData = (PBYTE)psa->pvData; + PBYTE pRecordData = psa->pvData; while(ulCellCount--) { IRecordInfo_RecordClear(lpRecInfo, pRecordData); @@ -350,8 +350,8 @@ if (psa->fFeatures & FADF_VARIANT) { - VARIANT* lpVariant = (VARIANT*)psa->pvData; - VARIANT* lpDest = (VARIANT*)dest->pvData; + VARIANT* lpVariant = psa->pvData; + VARIANT* lpDest = dest->pvData; while(ulCellCount--) { @@ -365,8 +365,8 @@ } else if (psa->fFeatures & FADF_BSTR) { - BSTR* lpBstr = (BSTR*)psa->pvData; - BSTR* lpDest = (BSTR*)dest->pvData; + BSTR* lpBstr = psa->pvData; + BSTR* lpDest = dest->pvData; while(ulCellCount--) { @@ -389,7 +389,7 @@ if (psa->fFeatures & (FADF_UNKNOWN|FADF_DISPATCH)) { - LPUNKNOWN *lpUnknown = (LPUNKNOWN *)dest->pvData; + LPUNKNOWN *lpUnknown = dest->pvData; while(ulCellCount--) { @@ -596,7 +596,7 @@ SAFEARRAY* WINAPI SafeArrayCreateEx(VARTYPE vt, UINT cDims, SAFEARRAYBOUND *rgsabound, LPVOID pvExtra) { ULONG ulSize = 0; - IRecordInfo* iRecInfo = (IRecordInfo*)pvExtra; + IRecordInfo* iRecInfo = pvExtra; SAFEARRAY* psa; TRACE("(%d->%s,%d,%p,%p)\n", vt, debugstr_vt(vt), cDims, rgsabound, pvExtra); @@ -673,7 +673,7 @@ SAFEARRAY* WINAPI SafeArrayCreateVectorEx(VARTYPE vt, LONG lLbound, ULONG cElements, LPVOID pvExtra) { ULONG ulSize; - IRecordInfo* iRecInfo = (IRecordInfo*)pvExtra; + IRecordInfo* iRecInfo = pvExtra; SAFEARRAY* psa; TRACE("(%d->%s,%d,%d,%p\n", vt, debugstr_vt(vt), lLbound, cElements, pvExtra); @@ -851,8 +851,8 @@ { if (psa->fFeatures & FADF_VARIANT) { - VARIANT* lpVariant = (VARIANT*)pvData; - VARIANT* lpDest = (VARIANT*)lpvDest; + VARIANT* lpVariant = pvData; + VARIANT* lpDest = lpvDest; hRet = VariantClear(lpDest); if (FAILED(hRet)) FIXME("VariantClear failed with 0x%x\n", hRet); @@ -862,7 +862,7 @@ else if (psa->fFeatures & FADF_BSTR) { BSTR lpBstr = (BSTR)pvData; - BSTR* lpDest = (BSTR*)lpvDest; + BSTR* lpDest = lpvDest; SysFreeString(*lpDest); @@ -874,8 +874,8 @@ { if (psa->fFeatures & (FADF_UNKNOWN|FADF_DISPATCH)) { - LPUNKNOWN lpUnknown = (LPUNKNOWN)pvData; - LPUNKNOWN *lpDest = (LPUNKNOWN *)lpvDest; + LPUNKNOWN lpUnknown = pvData; + LPUNKNOWN *lpDest = lpvDest; if (lpUnknown) IUnknown_AddRef(lpUnknown); @@ -932,8 +932,8 @@ { if (psa->fFeatures & FADF_VARIANT) { - VARIANT* lpVariant = (VARIANT*)lpvSrc; - VARIANT* lpDest = (VARIANT*)pvData; + VARIANT* lpVariant = lpvSrc; + VARIANT* lpDest = pvData; /* The original content of pvData is ignored. */ V_VT(lpDest) = VT_EMPTY; @@ -942,8 +942,8 @@ } else if (psa->fFeatures & FADF_BSTR) { - BSTR* lpBstr = (BSTR*)lpvSrc; - BSTR* lpDest = (BSTR*)pvData; + BSTR* lpBstr = lpvSrc; + BSTR* lpDest = pvData; if (*lpBstr) { @@ -958,7 +958,7 @@ { if (psa->fFeatures & (FADF_UNKNOWN|FADF_DISPATCH)) { - LPUNKNOWN *lpUnknown = (LPUNKNOWN *)lpvSrc; + LPUNKNOWN *lpUnknown = lpvSrc; if (*lpUnknown) IUnknown_AddRef(*lpUnknown); Modified: trunk/reactos/dll/win32/oleaut32/tmarshal.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/tmarsha…
============================================================================== --- trunk/reactos/dll/win32/oleaut32/tmarshal.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/oleaut32/tmarshal.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -254,7 +254,7 @@ static HRESULT WINAPI PSFacBuf_QueryInterface(LPPSFACTORYBUFFER iface, REFIID iid, LPVOID *ppv) { if (IsEqualIID(iid,&IID_IPSFactoryBuffer)||IsEqualIID(iid,&IID_IUnknown)) { - *ppv = (LPVOID)iface; + *ppv = iface; /* No ref counting, static class */ return S_OK; } @@ -410,7 +410,7 @@ { TRACE("()\n"); if (IsEqualIID(riid,&IID_IUnknown)||IsEqualIID(riid,&IID_IRpcProxyBuffer)) { - *ppv = (LPVOID)iface; + *ppv = iface; IRpcProxyBuffer_AddRef(iface); return S_OK; } @@ -1646,7 +1646,7 @@ *ppv = NULL; if (IsEqualIID(riid,&IID_IRpcChannelBuffer) || IsEqualIID(riid,&IID_IUnknown)) { - *ppv = (LPVOID)iface; + *ppv = iface; IUnknown_AddRef(iface); return S_OK; } @@ -1937,8 +1937,8 @@ if (hres == S_OK) { - *ppv = (LPVOID)proxy; - *ppProxy = (IRpcProxyBuffer *)&(proxy->lpvtbl2); + *ppv = proxy; + *ppProxy = (IRpcProxyBuffer *)&(proxy->lpvtbl2); IUnknown_AddRef((IUnknown *)*ppv); return S_OK; } @@ -1962,7 +1962,7 @@ TMStubImpl_QueryInterface(LPRPCSTUBBUFFER iface, REFIID riid, LPVOID *ppv) { if (IsEqualIID(riid,&IID_IRpcStubBuffer)||IsEqualIID(riid,&IID_IUnknown)){ - *ppv = (LPVOID)iface; + *ppv = iface; IRpcStubBuffer_AddRef(iface); return S_OK; } Modified: trunk/reactos/dll/win32/oleaut32/typelib.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/typelib…
============================================================================== --- trunk/reactos/dll/win32/oleaut32/typelib.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/oleaut32/typelib.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -396,7 +396,7 @@ /* else fall-through */ case REGKIND_REGISTER: - if (FAILED(res = RegisterTypeLib(*pptLib, (LPOLESTR)szPath, NULL))) + if (FAILED(res = RegisterTypeLib(*pptLib, szPath, NULL))) { IUnknown_Release(*pptLib); *pptLib = 0; @@ -3748,7 +3748,7 @@ pPad9 = (SLTG_Pad9*)(pIndex + pTypeLibImpl->TypeInfoCount); - pFirstBlk = (LPVOID)(pPad9 + 1); + pFirstBlk = pPad9 + 1; /* We'll set up a ptr to the main library block, which is the last one. */ @@ -3952,23 +3952,23 @@ } - if(pTITail) { /* could get cFuncs, cVars and cImplTypes from here + /* could get cFuncs, cVars and cImplTypes from here but we've already set those */ #define X(x) TRACE_(typelib)("tt "#x": %x\n",pTITail->res##x); - X(06); - X(16); - X(18); - X(1a); - X(1e); - X(24); - X(26); - X(2a); - X(2c); - X(2e); - X(30); - X(32); - X(34); - } + X(06); + X(16); + X(18); + X(1a); + X(1e); + X(24); + X(26); + X(2a); + X(2c); + X(2e); + X(30); + X(32); + X(34); +#undef X ppTypeInfoImpl = &((*ppTypeInfoImpl)->next); pBlk = (char*)pBlk + pBlkEntry[order].len; } @@ -4978,7 +4978,7 @@ if (This->TypeAttr.typekind == TKIND_ALIAS) TLB_CopyTypeDesc(&(*ppTypeAttr)->tdescAlias, - &This->TypeAttr.tdescAlias, (void *)(*ppTypeAttr + 1)); + &This->TypeAttr.tdescAlias, *ppTypeAttr + 1); if((*ppTypeAttr)->typekind == TKIND_DISPATCH) { /* This should include all the inherited funcs */ @@ -5945,8 +5945,7 @@ #define INVBUF_ELEMENT_SIZE \ (sizeof(VARIANTARG) + sizeof(VARIANTARG) + sizeof(VARIANTARG *) + sizeof(VARTYPE)) -#define INVBUF_GET_ARG_ARRAY(buffer, params) \ - ((VARIANTARG *)(buffer)) +#define INVBUF_GET_ARG_ARRAY(buffer, params) (buffer) #define INVBUF_GET_MISSING_ARG_ARRAY(buffer, params) \ ((VARIANTARG *)((char *)(buffer) + sizeof(VARIANTARG) * (params))) #define INVBUF_GET_ARG_PTR_ARRAY(buffer, params) \ Modified: trunk/reactos/dll/win32/oleaut32/ungif.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/ungif.c…
============================================================================== --- trunk/reactos/dll/win32/oleaut32/ungif.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/oleaut32/ungif.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -350,7 +350,7 @@ int i, BitsPerPixel; GifByteType Buf[3]; - GifFilePrivateType *Private = (GifFilePrivateType *)GifFile->Private; + GifFilePrivateType *Private = GifFile->Private; SavedImage *sp; if (DGifGetWord(GifFile, &GifFile->Image.Left) == GIF_ERROR || @@ -436,7 +436,7 @@ int LineLen) { GifByteType *Dummy; - GifFilePrivateType *Private = (GifFilePrivateType *) GifFile->Private; + GifFilePrivateType *Private = GifFile->Private; if (!LineLen) LineLen = GifFile->Image.Width; @@ -492,7 +492,7 @@ GifByteType ** Extension) { GifByteType Buf; - GifFilePrivateType *Private = (GifFilePrivateType *)GifFile->Private; + GifFilePrivateType *Private = GifFile->Private; if (READ(GifFile, &Buf, 1) != 1) { return GIF_ERROR; @@ -536,7 +536,7 @@ GifByteType ** CodeBlock) { GifByteType Buf; - GifFilePrivateType *Private = (GifFilePrivateType *)GifFile->Private; + GifFilePrivateType *Private = GifFile->Private; if (READ(GifFile, &Buf, 1) != 1) { return GIF_ERROR; @@ -566,7 +566,7 @@ int i, BitsPerPixel; GifByteType CodeSize; GifPrefixType *Prefix; - GifFilePrivateType *Private = (GifFilePrivateType *)GifFile->Private; + GifFilePrivateType *Private = GifFile->Private; READ(GifFile, &CodeSize, 1); /* Read Code size from file. */ BitsPerPixel = CodeSize; @@ -605,7 +605,7 @@ int j, CrntCode, EOFCode, ClearCode, CrntPrefix, LastCode, StackPtr; GifByteType *Stack, *Suffix; GifPrefixType *Prefix; - GifFilePrivateType *Private = (GifFilePrivateType *) GifFile->Private; + GifFilePrivateType *Private = GifFile->Private; StackPtr = Private->StackPtr; Prefix = Private->Prefix; @@ -744,7 +744,7 @@ DGifDecompressInput(GifFileType * GifFile, int *Code) { - GifFilePrivateType *Private = (GifFilePrivateType *)GifFile->Private; + GifFilePrivateType *Private = GifFile->Private; GifByteType NextByte; static const unsigned short CodeMasks[] = { @@ -973,7 +973,7 @@ if (GifFile == NULL) return GIF_ERROR; - Private = (GifFilePrivateType *) GifFile->Private; + Private = GifFile->Private; if (GifFile->Image.ColorMap) { FreeMapObject(GifFile->Image.ColorMap); Modified: trunk/reactos/dll/win32/oleaut32/usrmarshal.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/usrmars…
============================================================================== --- trunk/reactos/dll/win32/oleaut32/usrmarshal.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/oleaut32/usrmarshal.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -784,7 +784,7 @@ { BSTR* lpBstr; - for (lpBstr = (BSTR*)psa->pvData; ulCellCount; ulCellCount--, lpBstr++) + for (lpBstr = psa->pvData; ulCellCount; ulCellCount--, lpBstr++) size = BSTR_UserSize(pFlags, size, lpBstr); break; @@ -798,7 +798,7 @@ { VARIANT* lpVariant; - for (lpVariant = (VARIANT*)psa->pvData; ulCellCount; ulCellCount--, lpVariant++) + for (lpVariant = psa->pvData; ulCellCount; ulCellCount--, lpVariant++) size = VARIANT_UserSize(pFlags, size, lpVariant); break; @@ -897,7 +897,7 @@ { BSTR* lpBstr; - for (lpBstr = (BSTR*)psa->pvData; ulCellCount; ulCellCount--, lpBstr++) + for (lpBstr = psa->pvData; ulCellCount; ulCellCount--, lpBstr++) Buffer = BSTR_UserMarshal(pFlags, Buffer, lpBstr); break; @@ -911,7 +911,7 @@ { VARIANT* lpVariant; - for (lpVariant = (VARIANT*)psa->pvData; ulCellCount; ulCellCount--, lpVariant++) + for (lpVariant = psa->pvData; ulCellCount; ulCellCount--, lpVariant++) Buffer = VARIANT_UserMarshal(pFlags, Buffer, lpVariant); break; @@ -1052,7 +1052,7 @@ { BSTR* lpBstr; - for (lpBstr = (BSTR*)(*ppsa)->pvData; cell_count; cell_count--, lpBstr++) + for (lpBstr = (*ppsa)->pvData; cell_count; cell_count--, lpBstr++) Buffer = BSTR_UserUnmarshal(pFlags, Buffer, lpBstr); break; @@ -1066,7 +1066,7 @@ { VARIANT* lpVariant; - for (lpVariant = (VARIANT*)(*ppsa)->pvData; cell_count; cell_count--, lpVariant++) + for (lpVariant = (*ppsa)->pvData; cell_count; cell_count--, lpVariant++) Buffer = VARIANT_UserUnmarshal(pFlags, Buffer, lpVariant); break; Modified: trunk/reactos/dll/win32/oleaut32/varformat.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/varform…
============================================================================== --- trunk/reactos/dll/win32/oleaut32/varformat.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/oleaut32/varformat.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -462,7 +462,7 @@ LPCNAMED_FORMAT fmt; key.name = lpszFormat; - fmt = (LPCNAMED_FORMAT)bsearch(&key, VARIANT_NamedFormats, + fmt = bsearch(&key, VARIANT_NamedFormats, sizeof(VARIANT_NamedFormats)/sizeof(NAMED_FORMAT), sizeof(NAMED_FORMAT), FormatCompareFn); return fmt ? fmt->format : NULL; Modified: trunk/reactos/dll/win32/oleaut32/vartype.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/vartype…
============================================================================== --- trunk/reactos/dll/win32/oleaut32/vartype.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/oleaut32/vartype.c [iso-8859-1] Tue Mar 3 12:12:43 2009 @@ -82,7 +82,7 @@ else if (fract == -0.5) { typ is_odd = (typ)whole & 1; res = whole - is_odd; } \ else if (fract > -0.5) res = (typ)whole; \ else res = (typ)whole - (typ)1; \ -} while(0); +} while(0) /* Coerce VT_BSTR to a numeric type */ @@ -3265,7 +3265,7 @@ * Success: S_OK. * Failure: E_INVALIDARG, if the source value is invalid. */ -HRESULT WINAPI VarR8FromDec(DECIMAL* pDecIn, double *pDblOut) +HRESULT WINAPI VarR8FromDec(const DECIMAL* pDecIn, double *pDblOut) { BYTE scale = DEC_SCALE(pDecIn); double divisor = 1.0, highPart; @@ -3980,9 +3980,9 @@ _VarR8FromCy(cyIn, &d); d = d * div; - VARIANT_DutchRound(LONGLONG, d, pCyOut->int64) + VARIANT_DutchRound(LONGLONG, d, pCyOut->int64); d = (double)pCyOut->int64 / div * CY_MULTIPLIER_F; - VARIANT_DutchRound(LONGLONG, d, pCyOut->int64) + VARIANT_DutchRound(LONGLONG, d, pCyOut->int64); return S_OK; } } @@ -5662,6 +5662,9 @@ */ HRESULT WINAPI VarDecFix(const DECIMAL* pDecIn, DECIMAL* pDecOut) { + double dbl; + HRESULT hr; + if (DEC_SIGN(pDecIn) & ~DECIMAL_NEG) return E_INVALIDARG; @@ -5671,8 +5674,13 @@ return S_OK; } - FIXME("semi-stub!\n"); - return DISP_E_OVERFLOW; + hr = VarR8FromDec(pDecIn, &dbl); + if (SUCCEEDED(hr)) { + LONGLONG rounded = dbl; + + hr = VarDecFromI8(rounded, pDecOut); + } + return hr; } /************************************************************************ @@ -5694,14 +5702,22 @@ */ HRESULT WINAPI VarDecInt(const DECIMAL* pDecIn, DECIMAL* pDecOut) { + double dbl; + HRESULT hr; + if (DEC_SIGN(pDecIn) & ~DECIMAL_NEG) return E_INVALIDARG; if (!(DEC_SIGN(pDecIn) & DECIMAL_NEG) || !DEC_SCALE(pDecIn)) return VarDecFix(pDecIn, pDecOut); /* The same, if +ve or no fractionals */ - FIXME("semi-stub!\n"); - return DISP_E_OVERFLOW; + hr = VarR8FromDec(pDecIn, &dbl); + if (SUCCEEDED(hr)) { + LONGLONG rounded = dbl >= 0.0 ? dbl + 0.5 : dbl - 0.5; + + hr = VarDecFromI8(rounded, pDecOut); + } + return hr; } /************************************************************************
16 years, 3 months
1
0
0
0
[dchapyshev] 39852: - Sync header
by dchapyshev@svn.reactos.org
Author: dchapyshev Date: Tue Mar 3 12:12:03 2009 New Revision: 39852 URL:
http://svn.reactos.org/svn/reactos?rev=39852&view=rev
Log: - Sync header Modified: trunk/reactos/include/psdk/oleauto.h Modified: trunk/reactos/include/psdk/oleauto.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/oleauto.h?rev…
============================================================================== --- trunk/reactos/include/psdk/oleauto.h [iso-8859-1] (original) +++ trunk/reactos/include/psdk/oleauto.h [iso-8859-1] Tue Mar 3 12:12:03 2009 @@ -316,7 +316,7 @@ HRESULT WINAPI VarR8FromUI8(ULONG64,double*); HRESULT WINAPI VarR8FromStr(OLECHAR*,LCID,ULONG,double*); HRESULT WINAPI VarR8FromCy(CY,double*); -HRESULT WINAPI VarR8FromDec(DECIMAL*,double*); +HRESULT WINAPI VarR8FromDec(const DECIMAL*,double*); HRESULT WINAPI VarR8FromDisp(IDispatch*,LCID,double*); HRESULT WINAPI VarDateFromUI1(BYTE,DATE*);
16 years, 3 months
1
0
0
0
← Newer
1
...
42
43
44
45
46
47
48
49
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
47
48
49
Results per page:
10
25
50
100
200