ReactOS.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
List overview
Download
Ros-diffs
January 2012
----- 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
19 participants
559 discussions
Start a n
N
ew thread
[akhaldi] 55277: [MSCOREE_WINETEST] * Add mscoree winetest from Wine 1.3.37.
by akhaldi@svn.reactos.org
Author: akhaldi Date: Sat Jan 28 17:34:42 2012 New Revision: 55277 URL:
http://svn.reactos.org/svn/reactos?rev=55277&view=rev
Log: [MSCOREE_WINETEST] * Add mscoree winetest from Wine 1.3.37. Added: trunk/rostests/winetests/mscoree/ (with props) trunk/rostests/winetests/mscoree/CMakeLists.txt (with props) trunk/rostests/winetests/mscoree/debugging.c (with props) trunk/rostests/winetests/mscoree/metahost.c (with props) trunk/rostests/winetests/mscoree/mscoree.c (with props) trunk/rostests/winetests/mscoree/mscoree.rbuild (with props) trunk/rostests/winetests/mscoree/testlist.c (with props) Modified: trunk/rostests/winetests/CMakeLists.txt trunk/rostests/winetests/directory.rbuild Modified: trunk/rostests/winetests/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/CMakeLists.txt?…
============================================================================== --- trunk/rostests/winetests/CMakeLists.txt [iso-8859-1] (original) +++ trunk/rostests/winetests/CMakeLists.txt [iso-8859-1] Sat Jan 28 17:34:42 2012 @@ -43,6 +43,7 @@ add_subdirectory(mlang) add_subdirectory(msacm32) add_subdirectory(mscms) +add_subdirectory(mscoree) add_subdirectory(msctf) if(NOT MSVC) # FIXME: msvc build. Modified: trunk/rostests/winetests/directory.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/directory.rbuil…
============================================================================== --- trunk/rostests/winetests/directory.rbuild [iso-8859-1] (original) +++ trunk/rostests/winetests/directory.rbuild [iso-8859-1] Sat Jan 28 17:34:42 2012 @@ -112,6 +112,9 @@ <directory name="mscms"> <xi:include href="mscms/mscms.rbuild" /> </directory> + <directory name="mscoree"> + <xi:include href="mscoree/mscoree.rbuild" /> + </directory> <directory name="msctf"> <xi:include href="msctf/msctf.rbuild" /> </directory> Propchange: trunk/rostests/winetests/mscoree/ ------------------------------------------------------------------------------ --- bugtraq:logregex (added) +++ bugtraq:logregex Sat Jan 28 17:34:42 2012 @@ -1,0 +1,2 @@ +([Ii]ssue|[Bb]ug)s? #?(\d+)(,? ?#?(\d+))*(,? ?(and |or )?#?(\d+))? +(\d+) Propchange: trunk/rostests/winetests/mscoree/ ------------------------------------------------------------------------------ bugtraq:message = See issue #%BUGID% for more details. Propchange: trunk/rostests/winetests/mscoree/ ------------------------------------------------------------------------------ bugtraq:url =
http://www.reactos.org/bugzilla/show_bug.cgi?id=%BUGID%
Propchange: trunk/rostests/winetests/mscoree/ ------------------------------------------------------------------------------ tsvn:logminsize = 10 Added: trunk/rostests/winetests/mscoree/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mscoree/CMakeLi…
============================================================================== --- trunk/rostests/winetests/mscoree/CMakeLists.txt (added) +++ trunk/rostests/winetests/mscoree/CMakeLists.txt [iso-8859-1] Sat Jan 28 17:34:42 2012 @@ -1,0 +1,15 @@ + +add_definitions( + -D__ROS_LONG64__ + -D_DLL -D__USE_CRTIMP) + +add_executable(mscoree_winetest + debugging.c + metahost.c + mscoree.c + testlist.c) + +target_link_libraries(mscoree_winetest wine uuid) +set_module_type(mscoree_winetest win32cui) +add_importlibs(mscoree_winetest ole32 shlwapi msvcrt kernel32 ntdll) +add_cd_file(TARGET mscoree_winetest DESTINATION reactos/bin FOR all) Propchange: trunk/rostests/winetests/mscoree/CMakeLists.txt ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/rostests/winetests/mscoree/debugging.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mscoree/debuggi…
============================================================================== --- trunk/rostests/winetests/mscoree/debugging.c (added) +++ trunk/rostests/winetests/mscoree/debugging.c [iso-8859-1] Sat Jan 28 17:34:42 2012 @@ -1,0 +1,507 @@ +/* + * Copyright 2011 Alistair Leslie-Hughes + * + * 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 + */ + +#define COBJMACROS +#include <stdio.h> + +#include "windows.h" +#include "ole2.h" +#include "corerror.h" +#include "mscoree.h" +#include "corhdr.h" + +#include "wine/test.h" + +#include "initguid.h" +#include "cordebug.h" + +static HMODULE hmscoree; + +static HRESULT (WINAPI *pCreateDebuggingInterfaceFromVersion)(int, LPCWSTR, IUnknown **); + +const WCHAR v2_0[] = {'v','2','.','0','.','5','0','7','2','7',0}; + +static const char *debugstr_guid(REFIID riid) +{ + static char buf[50]; + + if(!riid) + return "(null)"; + + sprintf(buf, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}", + riid->Data1, riid->Data2, riid->Data3, riid->Data4[0], + riid->Data4[1], riid->Data4[2], riid->Data4[3], riid->Data4[4], + riid->Data4[5], riid->Data4[6], riid->Data4[7]); + + return buf; +} + +static HRESULT WINAPI ManagedCallback2_QueryInterface(ICorDebugManagedCallback2 *iface, REFIID riid, void **ppv) +{ + if(IsEqualGUID(&IID_IUnknown, riid) || IsEqualGUID(&IID_ICorDebugManagedCallback2, riid)) + { + *ppv = iface; + return S_OK; + } + + ok(0, "unexpected riid (%s)\n", debugstr_guid(riid)); + + *ppv = NULL; + return E_NOINTERFACE; +} + +static ULONG WINAPI ManagedCallback2_AddRef(ICorDebugManagedCallback2 *iface) +{ + return 2; +} + +static ULONG WINAPI ManagedCallback2_Release(ICorDebugManagedCallback2 *iface) +{ + return 1; +} + +static HRESULT WINAPI ManagedCallback2_FunctionRemapOpportunity(ICorDebugManagedCallback2 *iface, + ICorDebugAppDomain *pAppDomain, ICorDebugThread *pThread, + ICorDebugFunction *pOldFunction, ICorDebugFunction *pNewFunction, + ULONG32 oldILOffset) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback2_CreateConnection(ICorDebugManagedCallback2 *iface, + ICorDebugProcess *pProcess, CONNID dwConnectionId, WCHAR *pConnName) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback2_ChangeConnection(ICorDebugManagedCallback2 *iface, + ICorDebugProcess *pProcess, CONNID dwConnectionId) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback2_DestroyConnection(ICorDebugManagedCallback2 *iface, + ICorDebugProcess *pProcess, CONNID dwConnectionId) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback2_Exception(ICorDebugManagedCallback2 *iface, + ICorDebugAppDomain *pAppDomain, ICorDebugThread *pThread, + ICorDebugFrame *pFrame, ULONG32 nOffset, + CorDebugExceptionCallbackType dwEventType, DWORD dwFlags) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback2_ExceptionUnwind(ICorDebugManagedCallback2 *iface, + ICorDebugAppDomain *pAppDomain, ICorDebugThread *pThread, + CorDebugExceptionUnwindCallbackType dwEventType, DWORD dwFlags) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback2_FunctionRemapComplete(ICorDebugManagedCallback2 *iface, + ICorDebugAppDomain *pAppDomain, ICorDebugThread *pThread, + ICorDebugFunction *pFunction) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback2_MDANotification(ICorDebugManagedCallback2 *iface, + ICorDebugController *pController, ICorDebugThread *pThread, + ICorDebugMDA *pMDA) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static struct ICorDebugManagedCallback2Vtbl managedCallback2Vtbl = { + ManagedCallback2_QueryInterface, + ManagedCallback2_AddRef, + ManagedCallback2_Release, + ManagedCallback2_FunctionRemapOpportunity, + ManagedCallback2_CreateConnection, + ManagedCallback2_ChangeConnection, + ManagedCallback2_DestroyConnection, + ManagedCallback2_Exception, + ManagedCallback2_ExceptionUnwind, + ManagedCallback2_FunctionRemapComplete, + ManagedCallback2_MDANotification +}; + +static ICorDebugManagedCallback2 ManagedCallback2 = { &managedCallback2Vtbl }; + +static HRESULT WINAPI ManagedCallback_QueryInterface(ICorDebugManagedCallback *iface, REFIID riid, void **ppv) +{ + if(IsEqualGUID(&IID_IUnknown, riid) || IsEqualGUID(&IID_ICorDebugManagedCallback, riid)) + { + *ppv = iface; + return S_OK; + } + else if(IsEqualGUID(&IID_ICorDebugManagedCallback2, riid)) + { + *ppv = (void**)&ManagedCallback2; + return S_OK; + } + + ok(0, "unexpected riid (%s)\n", debugstr_guid(riid)); + *ppv = NULL; + return E_NOINTERFACE; +} + +static ULONG WINAPI ManagedCallback_AddRef(ICorDebugManagedCallback *iface) +{ + return 2; +} + +static ULONG WINAPI ManagedCallback_Release(ICorDebugManagedCallback *iface) +{ + return 1; +} + +static HRESULT WINAPI ManagedCallback_Breakpoint(ICorDebugManagedCallback *iface, ICorDebugAppDomain *pAppDomain, + ICorDebugThread *pThread, ICorDebugBreakpoint *pBreakpoint) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback_StepComplete(ICorDebugManagedCallback *iface, ICorDebugAppDomain *pAppDomain, + ICorDebugThread *pThread, ICorDebugStepper *pStepper, CorDebugStepReason reason) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback_Break(ICorDebugManagedCallback *iface, ICorDebugAppDomain *pAppDomain, + ICorDebugThread *thread) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback_Exception(ICorDebugManagedCallback *iface, ICorDebugAppDomain *pAppDomain, + ICorDebugThread *pThread, BOOL unhandled) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback_EvalComplete(ICorDebugManagedCallback *iface, ICorDebugAppDomain *pAppDomain, + ICorDebugThread *pThread, ICorDebugEval *pEval) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback_EvalException(ICorDebugManagedCallback *iface, ICorDebugAppDomain *pAppDomain, + ICorDebugThread *pThread, ICorDebugEval *pEval) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback_CreateProcess(ICorDebugManagedCallback *iface, ICorDebugProcess *pProcess) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback_ExitProcess(ICorDebugManagedCallback *iface, ICorDebugProcess *pProcess) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback_CreateThread(ICorDebugManagedCallback *iface, ICorDebugAppDomain *pAppDomain, + ICorDebugThread *thread) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback_ExitThread(ICorDebugManagedCallback *iface, ICorDebugAppDomain *pAppDomain, + ICorDebugThread *thread) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback_LoadModule(ICorDebugManagedCallback *iface, ICorDebugAppDomain *pAppDomain, + ICorDebugModule *pModule) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback_UnloadModule(ICorDebugManagedCallback *iface, ICorDebugAppDomain *pAppDomain, + ICorDebugModule *pModule) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback_LoadClass(ICorDebugManagedCallback *iface, ICorDebugAppDomain *pAppDomain, + ICorDebugClass *c) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback_UnloadClass(ICorDebugManagedCallback *iface, ICorDebugAppDomain *pAppDomain, + ICorDebugClass *c) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback_DebuggerError(ICorDebugManagedCallback *iface, ICorDebugProcess *pProcess, + HRESULT errorHR, DWORD errorCode) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback_LogMessage(ICorDebugManagedCallback *iface, ICorDebugAppDomain *pAppDomain, + ICorDebugThread *pThread, LONG lLevel, WCHAR *pLogSwitchName, WCHAR *pMessage) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback_LogSwitch(ICorDebugManagedCallback *iface, ICorDebugAppDomain *pAppDomain, + ICorDebugThread *pThread, LONG lLevel, ULONG ulReason, + WCHAR *pLogSwitchName, WCHAR *pParentName) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback_CreateAppDomain(ICorDebugManagedCallback *iface, ICorDebugProcess *pProcess, + ICorDebugAppDomain *pAppDomain) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback_ExitAppDomain(ICorDebugManagedCallback *iface, ICorDebugProcess *pProcess, + ICorDebugAppDomain *pAppDomain) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback_LoadAssembly(ICorDebugManagedCallback *iface, ICorDebugAppDomain *pAppDomain, + ICorDebugAssembly *pAssembly) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback_UnloadAssembly(ICorDebugManagedCallback *iface, ICorDebugAppDomain *pAppDomain, + ICorDebugAssembly *pAssembly) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback_ControlCTrap(ICorDebugManagedCallback *iface, ICorDebugProcess *pProcess) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback_NameChange(ICorDebugManagedCallback *iface, ICorDebugAppDomain *pAppDomain, + ICorDebugThread *pThread) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback_UpdateModuleSymbols(ICorDebugManagedCallback *iface, ICorDebugAppDomain *pAppDomain, + ICorDebugModule *pModule, IStream *pSymbolStream) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback_EditAndContinueRemap(ICorDebugManagedCallback *iface, ICorDebugAppDomain *pAppDomain, + ICorDebugThread *pThread, ICorDebugFunction *pFunction, BOOL fAccurate) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI ManagedCallback_BreakpointSetError(ICorDebugManagedCallback *iface, ICorDebugAppDomain *pAppDomain, + ICorDebugThread *pThread, ICorDebugBreakpoint *pBreakpoint, DWORD dwError) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static ICorDebugManagedCallbackVtbl managedCallbackVtbl = { + ManagedCallback_QueryInterface, + ManagedCallback_AddRef, + ManagedCallback_Release, + ManagedCallback_Breakpoint, + ManagedCallback_StepComplete, + ManagedCallback_Break, + ManagedCallback_Exception, + ManagedCallback_EvalComplete, + ManagedCallback_EvalException, + ManagedCallback_CreateProcess, + ManagedCallback_ExitProcess, + ManagedCallback_CreateThread, + ManagedCallback_ExitThread, + ManagedCallback_LoadModule, + ManagedCallback_UnloadModule, + ManagedCallback_LoadClass, + ManagedCallback_UnloadClass, + ManagedCallback_DebuggerError, + ManagedCallback_LogMessage, + ManagedCallback_LogSwitch, + ManagedCallback_CreateAppDomain, + ManagedCallback_ExitAppDomain, + ManagedCallback_LoadAssembly, + ManagedCallback_UnloadAssembly, + ManagedCallback_ControlCTrap, + ManagedCallback_NameChange, + ManagedCallback_UpdateModuleSymbols, + ManagedCallback_EditAndContinueRemap, + ManagedCallback_BreakpointSetError +}; + +static ICorDebugManagedCallback ManagedCallback = { &managedCallbackVtbl }; + +static BOOL init_functionpointers(void) +{ + hmscoree = LoadLibraryA("mscoree.dll"); + + if (!hmscoree) + { + win_skip("mscoree.dll not available\n"); + return FALSE; + } + + pCreateDebuggingInterfaceFromVersion = (void *)GetProcAddress(hmscoree, "CreateDebuggingInterfaceFromVersion"); + + if (!pCreateDebuggingInterfaceFromVersion) + { + win_skip("functions not available\n"); + FreeLibrary(hmscoree); + return FALSE; + } + + return TRUE; +} + +#define check_process_enum(core, e) _check_process_enum(__LINE__, core, e) +static void _check_process_enum(unsigned line, ICorDebug *pCorDebug, ULONG nExpected) +{ + HRESULT hr; + ICorDebugProcessEnum *pProcessEnum = NULL; + + hr = ICorDebug_EnumerateProcesses(pCorDebug, NULL); + ok_(__FILE__,line) (hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr); + + hr = ICorDebug_EnumerateProcesses(pCorDebug, &pProcessEnum); + ok_(__FILE__,line) (hr == S_OK, "expected S_OK got %08x\n", hr); + if(hr == S_OK) + { + ULONG cnt; + + hr = ICorDebugProcessEnum_GetCount(pProcessEnum, &cnt); + ok_(__FILE__,line) (hr == S_OK, "expected S_OK got %08x\n", hr); + ok_(__FILE__,line) (cnt == nExpected, "expected %d got %d\n", nExpected, cnt); + + ICorDebugProcessEnum_Release(pProcessEnum); + } +} + +static void test_createDebugger(void) +{ + HRESULT hr; + IUnknown *pUnk; + ICorDebug *pCorDebug; + + hr = pCreateDebuggingInterfaceFromVersion(0, v2_0, &pUnk); + ok(hr == E_INVALIDARG, "CreateDebuggingInterfaceFromVersion returned %08x\n", hr); + + hr = pCreateDebuggingInterfaceFromVersion(1, v2_0, &pUnk); + ok(hr == E_INVALIDARG, "CreateDebuggingInterfaceFromVersion returned %08x\n", hr); + + hr = pCreateDebuggingInterfaceFromVersion(2, v2_0, &pUnk); + ok(hr == E_INVALIDARG, "CreateDebuggingInterfaceFromVersion returned %08x\n", hr); + + hr = pCreateDebuggingInterfaceFromVersion(4, v2_0, &pUnk); + ok(hr == E_INVALIDARG, "CreateDebuggingInterfaceFromVersion returned %08x\n", hr); + + hr = pCreateDebuggingInterfaceFromVersion(3, v2_0, NULL); + ok(hr == E_INVALIDARG, "CreateDebuggingInterfaceFromVersion returned %08x\n", hr); + + hr = pCreateDebuggingInterfaceFromVersion(3, v2_0, &pUnk); + if(hr == S_OK) + { + hr = IUnknown_QueryInterface(pUnk, &IID_ICorDebug, (void**)&pCorDebug); + ok(hr == S_OK, "expected S_OK got %08x\n", hr); + if(hr == S_OK) + { + hr = ICorDebug_Initialize(pCorDebug); + ok(hr == S_OK, "expected S_OK got %08x\n", hr); + if(hr == S_OK) + { + hr = ICorDebug_SetManagedHandler(pCorDebug, NULL); + ok(hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr); + + hr = ICorDebug_SetManagedHandler(pCorDebug, &ManagedCallback); + ok(hr == S_OK, "expected S_OK got %08x\n", hr); + + /* We should have no processes */ + check_process_enum(pCorDebug, 0); + } + + ICorDebug_Release(pCorDebug); + } + IUnknown_Release(pUnk); + } + else + { + skip(".NET 2.0 or mono not installed.\n"); + } +} + +START_TEST(debugging) +{ + CoInitialize(NULL); + + if (!init_functionpointers()) + return; + + test_createDebugger(); + + FreeLibrary(hmscoree); + CoUninitialize(); +} Propchange: trunk/rostests/winetests/mscoree/debugging.c ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/rostests/winetests/mscoree/metahost.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mscoree/metahos…
============================================================================== --- trunk/rostests/winetests/mscoree/metahost.c (added) +++ trunk/rostests/winetests/mscoree/metahost.c [iso-8859-1] Sat Jan 28 17:34:42 2012 @@ -1,0 +1,155 @@ +/* + * Copyright 2010 Vincent Povirk + * + * 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 + */ + +#define COBJMACROS + +#include <stdarg.h> + +#include "windef.h" +#include "ole2.h" + +#include "corerror.h" +#include "ocidl.h" +#include "initguid.h" +#include "metahost.h" +#include "wine/test.h" + +static HMODULE hmscoree; + +static HRESULT (WINAPI *pCLRCreateInstance)(REFCLSID clsid, REFIID riid, LPVOID *ppInterface); + +static ICLRMetaHost *metahost; + +static BOOL init_pointers(void) +{ + HRESULT hr = E_FAIL; + + hmscoree = LoadLibraryA("mscoree.dll"); + + if (hmscoree) + pCLRCreateInstance = (void *)GetProcAddress(hmscoree, "CLRCreateInstance"); + + if (pCLRCreateInstance) + hr = pCLRCreateInstance(&CLSID_CLRMetaHost, &IID_ICLRMetaHost, (void**)&metahost); + + if (FAILED(hr)) + { + win_skip(".NET 4 is not installed\n"); + FreeLibrary(hmscoree); + return FALSE; + } + + return TRUE; +} + +static void cleanup(void) +{ + ICLRMetaHost_Release(metahost); + + FreeLibrary(hmscoree); +} + +static void test_enumruntimes(void) +{ + IEnumUnknown *runtime_enum; + IUnknown *unk; + DWORD count; + ICLRRuntimeInfo *runtime_info; + HRESULT hr; + WCHAR buf[MAX_PATH]; + + hr = ICLRMetaHost_EnumerateInstalledRuntimes(metahost, &runtime_enum); + ok(hr == S_OK, "EnumerateInstalledRuntimes returned %x\n", hr); + if (FAILED(hr)) return; + + while ((hr = IEnumUnknown_Next(runtime_enum, 1, &unk, &count)) == S_OK) + { + hr = IUnknown_QueryInterface(unk, &IID_ICLRRuntimeInfo, (void**)&runtime_info); + ok(hr == S_OK, "QueryInterface returned %x\n", hr); + + count = 1; + hr = ICLRRuntimeInfo_GetVersionString(runtime_info, buf, &count); + ok(hr == HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER), "GetVersionString returned %x\n", hr); + ok(count > 1, "GetVersionString returned count %u\n", count); + + count = 0xdeadbeef; + hr = ICLRRuntimeInfo_GetVersionString(runtime_info, NULL, &count); + ok(hr == S_OK, "GetVersionString returned %x\n", hr); + ok(count > 1 && count != 0xdeadbeef, "GetVersionString returned count %u\n", count); + + count = MAX_PATH; + hr = ICLRRuntimeInfo_GetVersionString(runtime_info, buf, &count); + ok(hr == S_OK, "GetVersionString returned %x\n", hr); + ok(count > 1, "GetVersionString returned count %u\n", count); + + trace("runtime found: %s\n", wine_dbgstr_w(buf)); + + ICLRRuntimeInfo_Release(runtime_info); + + IUnknown_Release(unk); + } + + ok(hr == S_FALSE, "IEnumUnknown_Next returned %x\n", hr); + + IEnumUnknown_Release(runtime_enum); +} + +static void test_getruntime(void) +{ + static const WCHAR twodotzero[] = {'v','2','.','0','.','5','0','7','2','7',0}; + static const WCHAR twodotzerodotzero[] = {'v','2','.','0','.','0',0}; + HRESULT hr; + ICLRRuntimeInfo *info; + DWORD count; + WCHAR buf[MAX_PATH]; + + hr = ICLRMetaHost_GetRuntime(metahost, NULL, &IID_ICLRRuntimeInfo, (void**)&info); + ok(hr == E_POINTER, "GetVersion failed, hr=%x\n", hr); + + hr = ICLRMetaHost_GetRuntime(metahost, twodotzero, &IID_ICLRRuntimeInfo, (void**)&info); + if (hr == CLR_E_SHIM_RUNTIME) + /* FIXME: Get Mono properly packaged so we can fail here. */ + todo_wine ok(hr == S_OK, "GetVersion failed, hr=%x\n", hr); + else + ok(hr == S_OK, "GetVersion failed, hr=%x\n", hr); + if (hr != S_OK) return; + + count = MAX_PATH; + hr = ICLRRuntimeInfo_GetVersionString(info, buf, &count); + ok(hr == S_OK, "GetVersionString returned %x\n", hr); + ok(count == lstrlenW(buf)+1, "GetVersionString returned count %u but string of length %u\n", count, lstrlenW(buf)+1); + ok(lstrcmpW(buf, twodotzero) == 0, "got unexpected version %s\n", wine_dbgstr_w(buf)); + + ICLRRuntimeInfo_Release(info); + + /* Versions must match exactly. */ + hr = ICLRMetaHost_GetRuntime(metahost, twodotzerodotzero, &IID_ICLRRuntimeInfo, (void**)&info); + ok(hr == CLR_E_SHIM_RUNTIME, "GetVersion failed, hr=%x\n", hr); +} + +START_TEST(metahost) +{ + if (!init_pointers()) + return; + + test_enumruntimes(); + + test_getruntime(); + + cleanup(); +} Propchange: trunk/rostests/winetests/mscoree/metahost.c ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/rostests/winetests/mscoree/mscoree.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mscoree/mscoree…
============================================================================== --- trunk/rostests/winetests/mscoree/mscoree.c (added) +++ trunk/rostests/winetests/mscoree/mscoree.c [iso-8859-1] Sat Jan 28 17:34:42 2012 @@ -1,0 +1,356 @@ +/* + * Copyright 2010 Louis Lenders + * Copyright 2011 André Hentschel + * + * 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 + */ + +#define COBJMACROS + +#include "corerror.h" +#include "mscoree.h" +#include "shlwapi.h" +#include "wine/test.h" + +static HMODULE hmscoree; + +static HRESULT (WINAPI *pGetCORVersion)(LPWSTR, DWORD, DWORD*); +static HRESULT (WINAPI *pGetCORSystemDirectory)(LPWSTR, DWORD, DWORD*); +static HRESULT (WINAPI *pGetRequestedRuntimeInfo)(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, DWORD, LPWSTR, DWORD, DWORD*, LPWSTR, DWORD, DWORD*); +static HRESULT (WINAPI *pLoadLibraryShim)(LPCWSTR, LPCWSTR, LPVOID, HMODULE*); +static HRESULT (WINAPI *pCreateConfigStream)(LPCWSTR, IStream**); + +static BOOL init_functionpointers(void) +{ + hmscoree = LoadLibraryA("mscoree.dll"); + + if (!hmscoree) + { + win_skip("mscoree.dll not available\n"); + return FALSE; + } + + pGetCORVersion = (void *)GetProcAddress(hmscoree, "GetCORVersion"); + pGetCORSystemDirectory = (void *)GetProcAddress(hmscoree, "GetCORSystemDirectory"); + pGetRequestedRuntimeInfo = (void *)GetProcAddress(hmscoree, "GetRequestedRuntimeInfo"); + pLoadLibraryShim = (void *)GetProcAddress(hmscoree, "LoadLibraryShim"); + pCreateConfigStream = (void *)GetProcAddress(hmscoree, "CreateConfigStream"); + + if (!pGetCORVersion || !pGetCORSystemDirectory || !pGetRequestedRuntimeInfo || !pLoadLibraryShim) + { + win_skip("functions not available\n"); + FreeLibrary(hmscoree); + return FALSE; + } + + return TRUE; +} + +static void test_versioninfo(void) +{ + const WCHAR v2_0[] = {'v','2','.','0','.','5','0','7','2','7',0}; + const WCHAR v1_1[] = {'v','1','.','1','.','4','3','2','2',0}; + + WCHAR version[MAX_PATH]; + WCHAR path[MAX_PATH]; + DWORD size, path_len; + HRESULT hr; + + if (0) /* crashes on <= w2k3 */ + { + hr = pGetCORVersion(NULL, MAX_PATH, &size); + ok(hr == E_POINTER,"GetCORVersion returned %08x\n", hr); + } + + hr = pGetCORVersion(version, 1, &size); + if (hr == CLR_E_SHIM_RUNTIME) + { + /* FIXME: Get Mono packaged properly so we can fail here. */ + todo_wine ok(hr == HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER),"GetCORVersion returned %08x\n", hr); + skip("No .NET runtimes are installed\n"); + return; + } + + ok(hr == HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER),"GetCORVersion returned %08x\n", hr); + + hr = pGetCORVersion(version, MAX_PATH, &size); + ok(hr == S_OK,"GetCORVersion returned %08x\n", hr); + + trace("latest installed .net runtime: %s\n", wine_dbgstr_w(version)); + + hr = pGetCORSystemDirectory(path, MAX_PATH , &size); + ok(hr == S_OK, "GetCORSystemDirectory returned %08x\n", hr); + /* size includes terminating null-character */ + ok(size == (lstrlenW(path) + 1),"size is %d instead of %d\n", size, (lstrlenW(path) + 1)); + + path_len = size; + + hr = pGetCORSystemDirectory(path, path_len-1 , &size); + ok(hr == HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER), "GetCORSystemDirectory returned %08x\n", hr); + + if (0) /* crashes on <= w2k3 */ + { + hr = pGetCORSystemDirectory(NULL, MAX_PATH , &size); + ok(hr == HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER), "GetCORSystemDirectory returned %08x\n", hr); + } + + hr = pGetCORSystemDirectory(path, MAX_PATH , NULL); + ok(hr == E_POINTER,"GetCORSystemDirectory returned %08x\n", hr); + + trace("latest installed .net installed in directory: %s\n", wine_dbgstr_w(path)); + + /* test GetRequestedRuntimeInfo, first get info about different versions of runtime */ + hr = pGetRequestedRuntimeInfo( NULL, v2_0, NULL, 0, 0, path, MAX_PATH, &path_len, version, MAX_PATH, &size); + + if(hr == CLR_E_SHIM_RUNTIME) return; /* skipping rest of tests on win2k as .net 2.0 not installed */ + + ok(hr == S_OK, "GetRequestedRuntimeInfo returned %08x\n", hr); + trace(" installed in directory %s is .net version %s\n", wine_dbgstr_w(path), wine_dbgstr_w(version)); + + hr = pGetRequestedRuntimeInfo( NULL, v1_1, NULL, 0, 0, path, MAX_PATH, &path_len, version, MAX_PATH, &size); + ok(hr == S_OK || hr == CLR_E_SHIM_RUNTIME /*v1_1 not installed*/, "GetRequestedRuntimeInfo returned %08x\n", hr); + if(hr == S_OK) + trace(" installed in directory %s is .net version %s\n", wine_dbgstr_w(path), wine_dbgstr_w(version)); + /* version number NULL not allowed without RUNTIME_INFO_UPGRADE_VERSION flag */ + hr = pGetRequestedRuntimeInfo( NULL, NULL, NULL, 0, 0, path, MAX_PATH, &path_len, version, MAX_PATH, &size); + ok(hr == CLR_E_SHIM_RUNTIME, "GetRequestedRuntimeInfo returned %08x\n", hr); + /* with RUNTIME_INFO_UPGRADE_VERSION flag and version number NULL, latest installed version is returned */ + hr = pGetRequestedRuntimeInfo( NULL, NULL, NULL, 0, RUNTIME_INFO_UPGRADE_VERSION, path, MAX_PATH, &path_len, version, MAX_PATH, &size); + ok(hr == S_OK, "GetRequestedRuntimeInfo returned %08x\n", hr); + + hr = pGetRequestedRuntimeInfo( NULL, v2_0, NULL, 0, 0, path, 1, &path_len, version, MAX_PATH, &size); + ok(hr == HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER), "GetRequestedRuntimeInfo returned %08x\n", hr); + + /* if one of the buffers is NULL, the other one is still happily filled */ + memset(version, 0, sizeof(version)); + hr = pGetRequestedRuntimeInfo( NULL, v2_0, NULL, 0, 0, NULL, MAX_PATH, &path_len, version, MAX_PATH, &size); + ok(hr == S_OK, "GetRequestedRuntimeInfo returned %08x\n", hr); + ok(!winetest_strcmpW(version, v2_0), "version is %s , expected %s\n", wine_dbgstr_w(version), wine_dbgstr_w(v2_0)); + /* With NULL-pointer for bufferlength, the buffer itself still gets filled with correct string */ + memset(version, 0, sizeof(version)); + hr = pGetRequestedRuntimeInfo( NULL, v2_0, NULL, 0, 0, path, MAX_PATH, &path_len, version, MAX_PATH, NULL); + ok(hr == S_OK, "GetRequestedRuntimeInfo returned %08x\n", hr); + ok(!winetest_strcmpW(version, v2_0), "version is %s , expected %s\n", wine_dbgstr_w(version), wine_dbgstr_w(v2_0)); +} + +static void test_loadlibraryshim(void) +{ + const WCHAR v4_0[] = {'v','4','.','0','.','3','0','3','1','9',0}; + const WCHAR v2_0[] = {'v','2','.','0','.','5','0','7','2','7',0}; + const WCHAR v1_1[] = {'v','1','.','1','.','4','3','2','2',0}; + const WCHAR vbogus[] = {'v','b','o','g','u','s',0}; + const WCHAR fusion[] = {'f','u','s','i','o','n',0}; + const WCHAR fusiondll[] = {'f','u','s','i','o','n','.','d','l','l',0}; + const WCHAR nosuchdll[] = {'j','n','v','n','l','.','d','l','l',0}; + const WCHAR gdidll[] = {'g','d','i','3','2','.','d','l','l',0}; + HRESULT hr; + const WCHAR *latest = NULL; + CHAR latestA[MAX_PATH]; + HMODULE hdll; + CHAR dllpath[MAX_PATH]; + + hr = pLoadLibraryShim(fusion, v1_1, NULL, &hdll); + ok(hr == S_OK || hr == E_HANDLE, "LoadLibraryShim failed, hr=%x\n", hr); + if (SUCCEEDED(hr)) + { + latest = v1_1; + + GetModuleFileNameA(hdll, dllpath, MAX_PATH); + + todo_wine ok(StrStrIA(dllpath, "v1.1.4322") != 0, "incorrect fusion.dll path %s\n", dllpath); + ok(StrStrIA(dllpath, "fusion.dll") != 0, "incorrect fusion.dll path %s\n", dllpath); + + FreeLibrary(hdll); + } + + hr = pLoadLibraryShim(fusion, v2_0, NULL, &hdll); + ok(hr == S_OK || hr == E_HANDLE, "LoadLibraryShim failed, hr=%x\n", hr); + if (SUCCEEDED(hr)) + { + latest = v2_0; + + GetModuleFileNameA(hdll, dllpath, MAX_PATH); + + todo_wine ok(StrStrIA(dllpath, "v2.0.50727") != 0, "incorrect fusion.dll path %s\n", dllpath); + ok(StrStrIA(dllpath, "fusion.dll") != 0, "incorrect fusion.dll path %s\n", dllpath); + + FreeLibrary(hdll); + } + + hr = pLoadLibraryShim(fusion, v4_0, NULL, &hdll); + ok(hr == S_OK || hr == E_HANDLE, "LoadLibraryShim failed, hr=%x\n", hr); + if (SUCCEEDED(hr)) + { + /* LoadLibraryShim with a NULL version prefers 2.0 and earlier */ + if (!latest) + latest = v4_0; + + GetModuleFileNameA(hdll, dllpath, MAX_PATH); + + todo_wine ok(StrStrIA(dllpath, "v4.0.30319") != 0, "incorrect fusion.dll path %s\n", dllpath); + ok(StrStrIA(dllpath, "fusion.dll") != 0, "incorrect fusion.dll path %s\n", dllpath); + + FreeLibrary(hdll); + } + + hr = pLoadLibraryShim(fusion, vbogus, NULL, &hdll); + todo_wine ok(hr == E_HANDLE, "LoadLibraryShim failed, hr=%x\n", hr); + if (SUCCEEDED(hr)) + FreeLibrary(hdll); + + WideCharToMultiByte(CP_ACP, 0, latest, -1, latestA, MAX_PATH, NULL, NULL); + + hr = pLoadLibraryShim(fusion, NULL, NULL, &hdll); + ok(hr == S_OK, "LoadLibraryShim failed, hr=%x\n", hr); + if (SUCCEEDED(hr)) + { + GetModuleFileNameA(hdll, dllpath, MAX_PATH); + + if (latest) + todo_wine ok(StrStrIA(dllpath, latestA) != 0, "incorrect fusion.dll path %s\n", dllpath); + ok(StrStrIA(dllpath, "fusion.dll") != 0, "incorrect fusion.dll path %s\n", dllpath); + + FreeLibrary(hdll); + } + + hr = pLoadLibraryShim(fusiondll, NULL, NULL, &hdll); + ok(hr == S_OK, "LoadLibraryShim failed, hr=%x\n", hr); + if (SUCCEEDED(hr)) + { + GetModuleFileNameA(hdll, dllpath, MAX_PATH); + + if (latest) + todo_wine ok(StrStrIA(dllpath, latestA) != 0, "incorrect fusion.dll path %s\n", dllpath); + ok(StrStrIA(dllpath, "fusion.dll") != 0, "incorrect fusion.dll path %s\n", dllpath); + + FreeLibrary(hdll); + } + + hr = pLoadLibraryShim(nosuchdll, latest, NULL, &hdll); + ok(hr == E_HANDLE, "LoadLibraryShim failed, hr=%x\n", hr); + if (SUCCEEDED(hr)) + FreeLibrary(hdll); + + hr = pLoadLibraryShim(gdidll, latest, NULL, &hdll); + todo_wine ok(hr == E_HANDLE, "LoadLibraryShim failed, hr=%x\n", hr); + if (SUCCEEDED(hr)) + FreeLibrary(hdll); +} + +static const char xmldata[] = + "<?xml version=\"1.0\" ?>\n" + "<!DOCTYPE Config>\n" + "<Configuration>\n" + " <Name>Test</Name>\n" + " <Value>1234</Value>\n" + "</Configuration>"; + +static void create_xml_file(LPCWSTR filename) +{ + DWORD dwNumberOfBytesWritten; + HANDLE hfile = CreateFileW(filename, GENERIC_WRITE, 0, NULL, + CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); + ok(hfile != INVALID_HANDLE_VALUE, "File creation failed\n"); + WriteFile(hfile, xmldata, sizeof(xmldata) - 1, &dwNumberOfBytesWritten, NULL); + CloseHandle(hfile); +} + +static void test_createconfigstream(void) +{ + IStream *stream = NULL; + WCHAR file[] = {'c', 'o', 'n', 'f', '.', 'x', 'm', 'l', 0}; + WCHAR nonexistent[] = {'n', 'o', 'n', 'e', 'x', 'i', 's', 't', '.', 'x', 'm', 'l', 0}; + WCHAR path[MAX_PATH]; + HRESULT hr; + char buffer[256] = {0}; + + if (!pCreateConfigStream) + { + win_skip("CreateConfigStream not available\n"); + return; + } + + create_xml_file(file); + GetFullPathNameW(file, MAX_PATH, path, NULL); + + hr = pCreateConfigStream(NULL, &stream); + todo_wine ok(hr == E_FAIL || + broken(hr == HRESULT_FROM_WIN32(ERROR_PROC_NOT_FOUND)) || /* some WinXP, Win2K3 and Win7 */ + broken(hr == S_OK && !stream), /* some Win2K3 */ + "CreateConfigStream returned %x\n", hr); + + hr = pCreateConfigStream(path, NULL); + todo_wine ok(hr == COR_E_NULLREFERENCE, "CreateConfigStream returned %x\n", hr); + + hr = pCreateConfigStream(NULL, NULL); + todo_wine ok(hr == COR_E_NULLREFERENCE, "CreateConfigStream returned %x\n", hr); + + hr = pCreateConfigStream(nonexistent, &stream); + todo_wine ok(hr == COR_E_FILENOTFOUND, "CreateConfigStream returned %x\n", hr); + ok(stream == NULL, "Expected stream to be NULL\n"); + + hr = pCreateConfigStream(path, &stream); + todo_wine ok(hr == S_OK, "CreateConfigStream failed, hr=%x\n", hr); + todo_wine ok(stream != NULL, "Expected non-NULL stream\n"); + + if (stream) + { + DWORD count; + LARGE_INTEGER pos; + ULARGE_INTEGER size; + IStream *stream2 = NULL; + + hr = IStream_Read(stream, buffer, strlen(xmldata), &count); + ok(hr == S_OK, "IStream_Read failed, hr=%x\n", hr); + ok(count == strlen(xmldata), "wrong count: %u\n", count); + ok(!strcmp(buffer, xmldata), "Strings do not match\n"); + + hr = IStream_Write(stream, xmldata, strlen(xmldata), &count); + ok(hr == E_FAIL, "IStream_Write returned hr=%x\n", hr); + + pos.QuadPart = strlen(xmldata); + hr = IStream_Seek(stream, pos, STREAM_SEEK_SET, NULL); + ok(hr == E_NOTIMPL, "IStream_Seek returned hr=%x\n", hr); + + size.QuadPart = strlen(xmldata); + hr = IStream_SetSize(stream, size); + ok(hr == E_NOTIMPL, "IStream_SetSize returned hr=%x\n", hr); + + hr = IStream_Clone(stream, &stream2); + ok(hr == E_NOTIMPL, "IStream_Clone returned hr=%x\n", hr); + + hr = IStream_Commit(stream, STGC_DEFAULT); + ok(hr == E_NOTIMPL, "IStream_Commit returned hr=%x\n", hr); + + hr = IStream_Revert(stream); + ok(hr == E_NOTIMPL, "IStream_Revert returned hr=%x\n", hr); + + hr = IStream_Release(stream); + ok(hr == S_OK, "IStream_Release returned hr=%x\n", hr); + } + DeleteFileW(file); +} + +START_TEST(mscoree) +{ + if (!init_functionpointers()) + return; + + test_versioninfo(); + test_loadlibraryshim(); + test_createconfigstream(); + + FreeLibrary(hmscoree); +} Propchange: trunk/rostests/winetests/mscoree/mscoree.c ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/rostests/winetests/mscoree/mscoree.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mscoree/mscoree…
============================================================================== --- trunk/rostests/winetests/mscoree/mscoree.rbuild (added) +++ trunk/rostests/winetests/mscoree/mscoree.rbuild [iso-8859-1] Sat Jan 28 17:34:42 2012 @@ -1,0 +1,13 @@ +<module name="mscoree_winetest" type="win32cui" installbase="bin" installname="mscoree_winetest.exe" allowwarnings="true"> + <include base="mscoree_winetest">.</include> + <define name="__ROS_LONG64__" /> + <file>debugging.c</file> + <file>metahost.c</file> + <file>mscoree.c</file> + <file>testlist.c</file> + <library>wine</library> + <library>uuid</library> + <library>ole32</library> + <library>shlwapi</library> + <library>ntdll</library> +</module> Propchange: trunk/rostests/winetests/mscoree/mscoree.rbuild ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/rostests/winetests/mscoree/testlist.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mscoree/testlis…
============================================================================== --- trunk/rostests/winetests/mscoree/testlist.c (added) +++ trunk/rostests/winetests/mscoree/testlist.c [iso-8859-1] Sat Jan 28 17:34:42 2012 @@ -1,0 +1,17 @@ +#define WIN32_LEAN_AND_MEAN +#include <windows.h> + +#define STANDALONE +#include "wine/test.h" + +extern void func_debugging(void); +extern void func_metahost(void); +extern void func_mscoree(void); + +const struct test winetest_testlist[] = +{ + { "debugging", func_debugging }, + { "metahost", func_metahost }, + { "mscoree", func_mscoree }, + { 0, 0 } +}; Propchange: trunk/rostests/winetests/mscoree/testlist.c ------------------------------------------------------------------------------ svn:eol-style = native
12 years, 11 months
1
0
0
0
[akhaldi] 55276: [MSCOREE] * Sync to Wine 1.3.37.
by akhaldi@svn.reactos.org
Author: akhaldi Date: Sat Jan 28 17:34:24 2012 New Revision: 55276 URL:
http://svn.reactos.org/svn/reactos?rev=55276&view=rev
Log: [MSCOREE] * Sync to Wine 1.3.37. Added: trunk/reactos/dll/win32/mscoree/assembly.c (with props) trunk/reactos/dll/win32/mscoree/config.c (with props) trunk/reactos/dll/win32/mscoree/cordebug.c (with props) trunk/reactos/dll/win32/mscoree/metadata.c (with props) trunk/reactos/dll/win32/mscoree/metahost.c (with props) trunk/reactos/dll/win32/mscoree/mscoree.rc (with props) trunk/reactos/dll/win32/mscoree/mscoree.rgs (with props) Modified: trunk/reactos/dll/win32/mscoree/CMakeLists.txt trunk/reactos/dll/win32/mscoree/corruntimehost.c trunk/reactos/dll/win32/mscoree/mscoree.rbuild trunk/reactos/dll/win32/mscoree/mscoree.spec trunk/reactos/dll/win32/mscoree/mscoree_main.c trunk/reactos/dll/win32/mscoree/mscoree_private.h trunk/reactos/lib/sdk/uuid/CMakeLists.txt trunk/reactos/media/doc/README.WINE [This mail would be too long, it was shortened to contain the URLs only.] Modified: trunk/reactos/dll/win32/mscoree/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mscoree/CMakeLis…
Added: trunk/reactos/dll/win32/mscoree/assembly.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mscoree/assembly…
Added: trunk/reactos/dll/win32/mscoree/config.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mscoree/config.c…
Added: trunk/reactos/dll/win32/mscoree/cordebug.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mscoree/cordebug…
Modified: trunk/reactos/dll/win32/mscoree/corruntimehost.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mscoree/corrunti…
Added: trunk/reactos/dll/win32/mscoree/metadata.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mscoree/metadata…
Added: trunk/reactos/dll/win32/mscoree/metahost.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mscoree/metahost…
Modified: trunk/reactos/dll/win32/mscoree/mscoree.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mscoree/mscoree.…
Added: trunk/reactos/dll/win32/mscoree/mscoree.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mscoree/mscoree.…
Added: trunk/reactos/dll/win32/mscoree/mscoree.rgs URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mscoree/mscoree.…
Modified: trunk/reactos/dll/win32/mscoree/mscoree.spec URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mscoree/mscoree.…
Modified: trunk/reactos/dll/win32/mscoree/mscoree_main.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mscoree/mscoree_…
Modified: trunk/reactos/dll/win32/mscoree/mscoree_private.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mscoree/mscoree_…
Modified: trunk/reactos/lib/sdk/uuid/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/uuid/CMakeLists.tx…
Modified: trunk/reactos/media/doc/README.WINE URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=…
12 years, 11 months
1
0
0
0
[akhaldi] 55275: [WINEMP3.ACM] * Sync to Wine 1.3.37.
by akhaldi@svn.reactos.org
Author: akhaldi Date: Sat Jan 28 17:21:07 2012 New Revision: 55275 URL:
http://svn.reactos.org/svn/reactos?rev=55275&view=rev
Log: [WINEMP3.ACM] * Sync to Wine 1.3.37. Modified: trunk/reactos/dll/win32/winemp3.acm/mpegl3.c trunk/reactos/media/doc/README.WINE Modified: trunk/reactos/dll/win32/winemp3.acm/mpegl3.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/winemp3.acm/mpeg…
============================================================================== --- trunk/reactos/dll/win32/winemp3.acm/mpegl3.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/winemp3.acm/mpegl3.c [iso-8859-1] Sat Jan 28 17:21:07 2012 @@ -29,7 +29,7 @@ #include <string.h> #ifdef HAVE_MPG123_H -# include "mpg123.h" +# include <mpg123.h> #else # ifdef HAVE_COREAUDIO_COREAUDIO_H # include <CoreFoundation/CoreFoundation.h> @@ -106,6 +106,7 @@ hi = NUM_PCM_FORMATS; fmts = PCM_Formats; break; + case WAVE_FORMAT_MPEG: case WAVE_FORMAT_MPEGLAYER3: hi = NUM_MPEG3_FORMATS; fmts = MPEG3_Formats; @@ -192,7 +193,7 @@ TRACE("New format: %li Hz, %i channels, encoding value %i\n", rate, channels, enc); } dpos += size; - if (dpos > *ndst) break; + if (dpos >= *ndst) break; } while (ret != MPG123_ERR && ret != MPG123_NEED_MORE); *ndst = dpos; } @@ -233,7 +234,8 @@ { goto theEnd; } - else if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_MPEGLAYER3 && + else if ((adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_MPEGLAYER3 || + adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_MPEG) && adsi->pwfxDst->wFormatTag == WAVE_FORMAT_PCM) { /* resampling or mono <=> stereo not available @@ -290,7 +292,7 @@ typedef struct tagAcmMpeg3Data { - LRESULT (*convert)(PACMDRVSTREAMINSTANCE adsi, const unsigned char*, + LRESULT (*convert)(PACMDRVSTREAMINSTANCE adsi, unsigned char*, LPDWORD, unsigned char*, LPDWORD); AudioConverterRef acr; AudioStreamBasicDescription in,out; @@ -395,7 +397,7 @@ and *nsrc to the length of the unwanted data and return no error. */ static LRESULT mp3_leopard_horse(PACMDRVSTREAMINSTANCE adsi, - const unsigned char* src, LPDWORD nsrc, + unsigned char* src, LPDWORD nsrc, unsigned char* dst, LPDWORD ndst) { OSStatus err; @@ -406,7 +408,7 @@ TRACE("ndst %u %p <- %u %p\n", *ndst, dst, *nsrc, src); - TRACE("First 16 bytes to input: %s\n", wine_dbgstr_an(src, 16)); + TRACE("First 16 bytes to input: %s\n", wine_dbgstr_an((const char *)src, 16)); /* Parse ID3 tag */ if (!memcmp(src, "ID3", 3) && amd->tagBytesLeft == -1) @@ -429,7 +431,7 @@ { src += amd->tagBytesLeft; *nsrc -= amd->tagBytesLeft; - TRACE("Skipping %d for ID3 tag\n", amd->tagBytesLeft); + TRACE("Skipping %ld for ID3 tag\n", amd->tagBytesLeft); } /* @@ -460,7 +462,7 @@ syncSkip = psrc - src; src += syncSkip; *nsrc -= syncSkip; - TRACE("Skipping %d for frame sync\n", syncSkip); + TRACE("Skipping %ld for frame sync\n", syncSkip); } break; } @@ -583,7 +585,8 @@ adsi->dwDriver = (DWORD_PTR)aad; - if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_MPEGLAYER3 && + if ((adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_MPEGLAYER3 || + adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_MPEG) && adsi->pwfxDst->wFormatTag == WAVE_FORMAT_PCM) { OSStatus err; @@ -660,7 +663,7 @@ add->vdwACM = 0x01000000; add->vdwDriver = 0x01000000; add->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC; - add->cFormatTags = 2; /* PCM, MPEG3 */ + add->cFormatTags = 3; /* PCM, MPEG3 */ add->cFilterTags = 0; add->hicon = NULL; MultiByteToWideChar( CP_ACP, 0, "WINE-MPEG3", -1, @@ -684,16 +687,17 @@ { static const WCHAR szPcm[]={'P','C','M',0}; static const WCHAR szMpeg3[]={'M','P','e','g','3',0}; + static const WCHAR szMpeg[]={'M','P','e','g',0}; switch (dwQuery) { case ACM_FORMATTAGDETAILSF_INDEX: - if (aftd->dwFormatTagIndex >= 2) return ACMERR_NOTPOSSIBLE; + if (aftd->dwFormatTagIndex > 2) return ACMERR_NOTPOSSIBLE; break; case ACM_FORMATTAGDETAILSF_LARGESTSIZE: if (aftd->dwFormatTag == WAVE_FORMAT_UNKNOWN) { - aftd->dwFormatTagIndex = 1; /* WAVE_FORMAT_MPEGLAYER3 is bigger than PCM */ + aftd->dwFormatTagIndex = 2; /* WAVE_FORMAT_MPEG is biggest */ break; } /* fall thru */ @@ -702,6 +706,7 @@ { case WAVE_FORMAT_PCM: aftd->dwFormatTagIndex = 0; break; case WAVE_FORMAT_MPEGLAYER3: aftd->dwFormatTagIndex = 1; break; + case WAVE_FORMAT_MPEG: aftd->dwFormatTagIndex = 2; break; default: return ACMERR_NOTPOSSIBLE; } break; @@ -725,11 +730,17 @@ aftd->cStandardFormats = NUM_MPEG3_FORMATS; lstrcpyW(aftd->szFormatTag, szMpeg3); break; + case 2: + aftd->dwFormatTag = WAVE_FORMAT_MPEG; + aftd->cbFormatSize = sizeof(MPEG1WAVEFORMAT); + aftd->cStandardFormats = NUM_MPEG3_FORMATS; + lstrcpyW(aftd->szFormatTag, szMpeg); + break; } return MMSYSERR_NOERROR; } -static void fill_in_wfx(unsigned cbwfx, WAVEFORMATEX* wfx, unsigned bit_rate) +static void fill_in_mp3(unsigned cbwfx, WAVEFORMATEX* wfx, unsigned bit_rate) { MPEGLAYER3WAVEFORMAT* mp3wfx = (MPEGLAYER3WAVEFORMAT*)wfx; @@ -743,6 +754,24 @@ mp3wfx->nBlockSize = (bit_rate * 144) / wfx->nSamplesPerSec; mp3wfx->nFramesPerBlock = 1; mp3wfx->nCodecDelay = 0x0571; + } +} + +static void fill_in_mpeg(unsigned cbwfx, WAVEFORMATEX* wfx, unsigned bit_rate) +{ + MPEG1WAVEFORMAT* mp3wfx = (MPEG1WAVEFORMAT*)wfx; + + wfx->nAvgBytesPerSec = bit_rate / 8; + if (cbwfx >= sizeof(WAVEFORMATEX)) + wfx->cbSize = sizeof(MPEG1WAVEFORMAT) - sizeof(WAVEFORMATEX); + if (cbwfx >= sizeof(MPEG1WAVEFORMAT)) + { + mp3wfx->fwHeadLayer = ACM_MPEG_LAYER3; + mp3wfx->dwHeadBitrate = wfx->nAvgBytesPerSec * 8; + mp3wfx->fwHeadMode = ACM_MPEG_JOINTSTEREO; + mp3wfx->fwHeadModeExt = 0xf; + mp3wfx->wHeadEmphasis = 1; + mp3wfx->fwHeadFlags = ACM_MPEG_ID_MPEG1; } } @@ -775,12 +804,16 @@ afd->pwfx->nSamplesPerSec * afd->pwfx->nBlockAlign; break; case WAVE_FORMAT_MPEGLAYER3: + case WAVE_FORMAT_MPEG: if (afd->dwFormatIndex >= NUM_MPEG3_FORMATS) return ACMERR_NOTPOSSIBLE; afd->pwfx->nChannels = MPEG3_Formats[afd->dwFormatIndex].nChannels; afd->pwfx->nSamplesPerSec = MPEG3_Formats[afd->dwFormatIndex].rate; afd->pwfx->wBitsPerSample = MPEG3_Formats[afd->dwFormatIndex].nBits; afd->pwfx->nBlockAlign = 1; - fill_in_wfx(afd->cbwfx, afd->pwfx, 192000); + if (afd->dwFormatTag == WAVE_FORMAT_MPEGLAYER3) + fill_in_mp3(afd->cbwfx, afd->pwfx, 192000); + else + fill_in_mpeg(afd->cbwfx, afd->pwfx, 192000); break; default: WARN("Unsupported tag %08x\n", afd->dwFormatTag); @@ -840,9 +873,13 @@ adfs->pwfxDst->nBlockAlign = (adfs->pwfxDst->nChannels * adfs->pwfxDst->wBitsPerSample) / 8; adfs->pwfxDst->nAvgBytesPerSec = adfs->pwfxDst->nSamplesPerSec * adfs->pwfxDst->nBlockAlign; break; + case WAVE_FORMAT_MPEG: + adfs->pwfxDst->nBlockAlign = 1; + fill_in_mpeg(adfs->cbwfxDst, adfs->pwfxDst, 192000); + break; case WAVE_FORMAT_MPEGLAYER3: adfs->pwfxDst->nBlockAlign = 1; - fill_in_wfx(adfs->cbwfxDst, adfs->pwfxDst, 192000); + fill_in_mp3(adfs->cbwfxDst, adfs->pwfxDst, 192000); break; default: FIXME("\n"); @@ -865,14 +902,16 @@ case ACM_STREAMSIZEF_DESTINATION: /* cbDstLength => cbSrcLength */ if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_PCM && - adsi->pwfxDst->wFormatTag == WAVE_FORMAT_MPEGLAYER3) + (adsi->pwfxDst->wFormatTag == WAVE_FORMAT_MPEGLAYER3 || + adsi->pwfxDst->wFormatTag == WAVE_FORMAT_MPEG)) { nblocks = (adss->cbDstLength - 3000) / (DWORD)(adsi->pwfxDst->nAvgBytesPerSec * 1152 / adsi->pwfxDst->nSamplesPerSec + 0.5); if (nblocks == 0) return ACMERR_NOTPOSSIBLE; adss->cbSrcLength = nblocks * 1152 * adsi->pwfxSrc->nBlockAlign; } - else if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_MPEGLAYER3 && + else if ((adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_MPEGLAYER3 || + adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_MPEG) && adsi->pwfxDst->wFormatTag == WAVE_FORMAT_PCM) { nblocks = adss->cbDstLength / (adsi->pwfxDst->nBlockAlign * 1152); @@ -888,7 +927,8 @@ case ACM_STREAMSIZEF_SOURCE: /* cbSrcLength => cbDstLength */ if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_PCM && - adsi->pwfxDst->wFormatTag == WAVE_FORMAT_MPEGLAYER3) + (adsi->pwfxDst->wFormatTag == WAVE_FORMAT_MPEGLAYER3 || + adsi->pwfxDst->wFormatTag == WAVE_FORMAT_MPEG)) { nblocks = adss->cbSrcLength / (adsi->pwfxSrc->nBlockAlign * 1152); if (nblocks == 0) @@ -898,7 +938,8 @@ nblocks++; adss->cbDstLength = 3000 + nblocks * (DWORD)(adsi->pwfxDst->nAvgBytesPerSec * 1152 / adsi->pwfxDst->nSamplesPerSec + 0.5); } - else if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_MPEGLAYER3 && + else if ((adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_MPEGLAYER3 || + adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_MPEG) && adsi->pwfxDst->wFormatTag == WAVE_FORMAT_PCM) { nblocks = adss->cbSrcLength / (DWORD)(adsi->pwfxSrc->nAvgBytesPerSec * 1152 / adsi->pwfxSrc->nSamplesPerSec); Modified: trunk/reactos/media/doc/README.WINE URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=…
============================================================================== --- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original) +++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Sat Jan 28 17:21:07 2012 @@ -170,7 +170,7 @@ reactos/dll/win32/version # Autosync reactos/dll/win32/wer # Autosync reactos/dll/win32/windowscodecs # Autosync -reactos/dll/win32/winemp3.acm # Autosync +reactos/dll/win32/winemp3.acm # Synced to Wine-1.3.37 reactos/dll/win32/wininet # Autosync reactos/dll/win32/winhttp # Autosync reactos/dll/win32/winmm # Forked at Wine-20050628
12 years, 11 months
1
0
0
0
[akhaldi] 55274: [MLANG_WINETEST] * Sync to Wine 1.3.37.
by akhaldi@svn.reactos.org
Author: akhaldi Date: Sat Jan 28 17:12:03 2012 New Revision: 55274 URL:
http://svn.reactos.org/svn/reactos?rev=55274&view=rev
Log: [MLANG_WINETEST] * Sync to Wine 1.3.37. Modified: trunk/rostests/winetests/mlang/CMakeLists.txt trunk/rostests/winetests/mlang/mlang.c trunk/rostests/winetests/mlang/mlang.rbuild Modified: trunk/rostests/winetests/mlang/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mlang/CMakeList…
============================================================================== --- trunk/rostests/winetests/mlang/CMakeLists.txt [iso-8859-1] (original) +++ trunk/rostests/winetests/mlang/CMakeLists.txt [iso-8859-1] Sat Jan 28 17:12:03 2012 @@ -6,5 +6,5 @@ add_executable(mlang_winetest mlang.c testlist.c) target_link_libraries(mlang_winetest wine uuid) set_module_type(mlang_winetest win32cui) -add_importlibs(mlang_winetest oleaut32 ole32 gdi32 msvcrt kernel32 ntdll) +add_importlibs(mlang_winetest mlang oleaut32 ole32 gdi32 msvcrt kernel32 ntdll) add_cd_file(TARGET mlang_winetest DESTINATION reactos/bin FOR all) Modified: trunk/rostests/winetests/mlang/mlang.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mlang/mlang.c?r…
============================================================================== --- trunk/rostests/winetests/mlang/mlang.c [iso-8859-1] (original) +++ trunk/rostests/winetests/mlang/mlang.c [iso-8859-1] Sat Jan 28 17:12:03 2012 @@ -253,28 +253,6 @@ WideCharToMultiByte(CP_ACP, 0, (szString2), -1, string2, 256, NULL, NULL); \ ok(0, (format), string1, string2); \ } - -/* lstrcmpW is not supported on Win9x! */ -static int mylstrcmpW(const WCHAR* str1, const WCHAR* str2) -{ - if (!str2) return 1; - while (*str1 && *str1==*str2) { - str1++; - str2++; - } - return *str1-*str2; -} - -/* lstrcpyW is not supported on Win95 */ -static void mylstrcpyW(WCHAR* str1, const WCHAR* str2) -{ - while (str2 && *str2) { - *str1 = *str2; - str1++; - str2++; - } - *str1 = '\0'; -} static void test_multibyte_to_unicode_translations(IMultiLanguage2 *iML2) { @@ -586,8 +564,6 @@ #ifdef DUMP_CP_INFO trace("%u: codepage %u family %u\n", i, cpinfo[i].uiCodePage, cpinfo[i].uiFamilyCodePage); #endif - /* Win95 does not support UTF-7 */ - if (cpinfo[i].uiCodePage == CP_UTF7) continue; /* support files for some codepages might be not installed, or * the codepage is just an alias. @@ -773,7 +749,6 @@ if (!flags) { ok(n == total, "IEnumScript_Next: expected %u, got %u\n", total, n); - flags = SCRIPTCONTF_SCRIPT_USER | SCRIPTCONTF_SCRIPT_HIDE | SCRIPTCONTF_SCRIPT_SYSTEM; } total = n; @@ -834,7 +809,7 @@ DWORD dwCodePages, dwManyCodePages; DWORD dwCmpCodePages; UINT CodePage; - static const WCHAR str[3] = { 'd', 0x0436, 0xff90 }; + static const WCHAR str[] = { 'd', 0x0436, 0xff90 }; LONG processed; HRESULT ret; @@ -1227,28 +1202,32 @@ ok(!lstrcmpA(rfc1766A, info_table[i].rfc1766), "#%02d: got '%s' (expected '%s')\n", i, rfc1766A, info_table[i].rfc1766); - /* Some IE versions truncate an oversized name one character to short */ - mylstrcpyW(short_broken_name, info_table[i].broken_name); - short_broken_name[MAX_LOCALE_NAME - 2] = '\0'; + /* Some IE versions truncate an oversized name one character too short */ + if (info_table[i].broken_name) { + lstrcpyW(short_broken_name, info_table[i].broken_name); + short_broken_name[MAX_LOCALE_NAME - 2] = 0; + } if (info_table[i].todo & TODO_NAME) { todo_wine - ok( (!mylstrcmpW(prfc->wszLocaleName, info_table[i].localename)) || - broken(!mylstrcmpW(prfc->wszLocaleName, info_table[i].broken_name)) || /* IE < 6.0 */ - broken(!mylstrcmpW(prfc->wszLocaleName, short_broken_name)), + ok( (!lstrcmpW(prfc->wszLocaleName, info_table[i].localename)) || + (info_table[i].broken_name && ( + broken(!lstrcmpW(prfc->wszLocaleName, info_table[i].broken_name)) || /* IE < 6.0 */ + broken(!lstrcmpW(prfc->wszLocaleName, short_broken_name)))), "#%02d: got %s (expected %s)\n", i, wine_dbgstr_w(prfc->wszLocaleName), wine_dbgstr_w(info_table[i].localename)); } else - ok( (!mylstrcmpW(prfc->wszLocaleName, info_table[i].localename)) || - broken(!mylstrcmpW(prfc->wszLocaleName, info_table[i].broken_name)) || /* IE < 6.0 */ - broken(!mylstrcmpW(prfc->wszLocaleName, short_broken_name)), + ok( (!lstrcmpW(prfc->wszLocaleName, info_table[i].localename)) || + (info_table[i].broken_name && ( + broken(!lstrcmpW(prfc->wszLocaleName, info_table[i].broken_name)) || /* IE < 6.0 */ + broken(!lstrcmpW(prfc->wszLocaleName, short_broken_name)))), "#%02d: got %s (expected %s)\n", i, wine_dbgstr_w(prfc->wszLocaleName), wine_dbgstr_w(info_table[i].localename)); } - /* SUBLANG_NEUTRAL only allowed for english, arabic, chinese */ + /* SUBLANG_NEUTRAL only allowed for English, Arabic, Chinese */ ret = IMultiLanguage2_GetRfc1766Info(iML2, MAKELANGID(LANG_GERMAN, SUBLANG_NEUTRAL), LANG_ENGLISH, prfc); ok(ret == E_FAIL, "got 0x%x (expected E_FAIL)\n", ret); @@ -1903,20 +1882,6 @@ UINT i; HRESULT hr; - SetLastError(0xdeadbeef); - lstrcmpW(NULL, NULL); - if (GetLastError() == ERROR_CALL_NOT_IMPLEMENTED) - { - /* This corruption leads (sometimes) to test failures in oleaut32 but also - * to the inability to use the Regional Settings. - * This only seems to be an issue with Win98 and IE6 (mlang version 6.0.2800.1106). - * - * A reboot restores the codepages again. - */ - win_skip("IsCodePageInstallable could mess up the codepages on Win98\n"); - return; - } - for (i = 0; i < 0xffff; i++) { hr = IMultiLanguage2_IsCodePageInstallable(ml2, i); @@ -1932,6 +1897,23 @@ } } +static void test_GetGlobalFontLinkObject(void) +{ + HRESULT ret; + void *unknown; + + ret = GetGlobalFontLinkObject(NULL); + ok(ret == E_INVALIDARG, "expected E_INVALIDARG got %#x\n", ret); + + unknown = (void *)0xdeadbeef; + ret = GetGlobalFontLinkObject(&unknown); +todo_wine { + ok(ret == S_OK, "expected S_OK got %#x\n", ret); + ok(unknown != NULL && unknown != (void *)0xdeadbeef, + "GetGlobalFontLinkObject() returned %p\n", unknown); + } +} + START_TEST(mlang) { IMultiLanguage *iML = NULL; @@ -1950,6 +1932,7 @@ test_ConvertINetUnicodeToMultiByte(); test_JapaneseConversion(); + test_GetGlobalFontLinkObject(); trace("IMultiLanguage\n"); ret = CoCreateInstance(&CLSID_CMultiLanguage, NULL, CLSCTX_INPROC_SERVER, Modified: trunk/rostests/winetests/mlang/mlang.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mlang/mlang.rbu…
============================================================================== --- trunk/rostests/winetests/mlang/mlang.rbuild [iso-8859-1] (original) +++ trunk/rostests/winetests/mlang/mlang.rbuild [iso-8859-1] Sat Jan 28 17:12:03 2012 @@ -8,6 +8,7 @@ <file>testlist.c</file> <library>wine</library> <library>uuid</library> + <library>mlang</library> <library>oleaut32</library> <library>ole32</library> <library>gdi32</library>
12 years, 11 months
1
0
0
0
[akhaldi] 55273: [MLANG] * Sync to Wine 1.3.37.
by akhaldi@svn.reactos.org
Author: akhaldi Date: Sat Jan 28 17:11:55 2012 New Revision: 55273 URL:
http://svn.reactos.org/svn/reactos?rev=55273&view=rev
Log: [MLANG] * Sync to Wine 1.3.37. Added: trunk/reactos/dll/win32/mlang/mlang.rc (with props) trunk/reactos/dll/win32/mlang/mlang.rgs (with props) trunk/reactos/dll/win32/mlang/mlang_classes.idl (with props) Removed: trunk/reactos/dll/win32/mlang/regsvr.c Modified: trunk/reactos/dll/win32/mlang/CMakeLists.txt trunk/reactos/dll/win32/mlang/mlang.c trunk/reactos/dll/win32/mlang/mlang.rbuild trunk/reactos/dll/win32/mlang/mlang.spec trunk/reactos/include/psdk/mlang.idl trunk/reactos/media/doc/README.WINE Modified: trunk/reactos/dll/win32/mlang/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mlang/CMakeLists…
============================================================================== --- trunk/reactos/dll/win32/mlang/CMakeLists.txt [iso-8859-1] (original) +++ trunk/reactos/dll/win32/mlang/CMakeLists.txt [iso-8859-1] Sat Jan 28 17:11:55 2012 @@ -1,21 +1,24 @@ -add_definitions(-D__WINESRC__) +add_definitions( + -D__WINESRC__ + -DCOM_NO_WINDOWS_H) remove_definitions(-D_WIN32_WINNT=0x502) add_definitions(-D_WIN32_WINNT=0x600) include_directories(${REACTOS_SOURCE_DIR}/include/reactos/wine) +set_rc_compiler() spec2def(mlang.dll mlang.spec) list(APPEND SOURCE mlang.c - regsvr.c + mlang.rc ${CMAKE_CURRENT_BINARY_DIR}/mlang_stubs.c ${CMAKE_CURRENT_BINARY_DIR}/mlang.def) add_library(mlang SHARED ${SOURCE}) -set_module_type(mlang win32dll ENTRYPOINT 0 ) +set_module_type(mlang win32dll ENTRYPOINT 0) target_link_libraries(mlang uuid wine) add_delay_importlibs(mlang oleaut32) Modified: trunk/reactos/dll/win32/mlang/mlang.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mlang/mlang.c?re…
============================================================================== --- trunk/reactos/dll/win32/mlang/mlang.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/mlang/mlang.c [iso-8859-1] Sat Jan 28 17:11:55 2012 @@ -33,6 +33,8 @@ #include "wingdi.h" #include "winuser.h" #include "ole2.h" +#include "objbase.h" +#include "rpcproxy.h" #include "mlang.h" #include "wine/unicode.h" @@ -47,6 +49,7 @@ static HRESULT MultiLanguage_create(IUnknown *pUnkOuter, LPVOID *ppObj); static HRESULT EnumRfc1766_create(LANGID LangId, IEnumRfc1766 **ppEnum); +static HINSTANCE instance; static DWORD MLANG_tls_index; /* to store various per thead data */ /* FIXME: @@ -879,6 +882,7 @@ { switch(fdwReason) { case DLL_PROCESS_ATTACH: + instance = hInstDLL; MLANG_tls_index = TlsAlloc(); DisableThreadLibraryCalls(hInstDLL); break; @@ -1417,11 +1421,11 @@ typedef struct tagMLang_impl { - const IMLangFontLinkVtbl *vtbl_IMLangFontLink; - const IMultiLanguageVtbl *vtbl_IMultiLanguage; - const IMultiLanguage3Vtbl *vtbl_IMultiLanguage3; - const IMLangFontLink2Vtbl *vtbl_IMLangFontLink2; - const IMLangLineBreakConsoleVtbl *vtbl_IMLangLineBreakConsole; + IMLangFontLink IMLangFontLink_iface; + IMultiLanguage IMultiLanguage_iface; + IMultiLanguage3 IMultiLanguage3_iface; + IMLangFontLink2 IMLangFontLink2_iface; + IMLangLineBreakConsole IMLangLineBreakConsole_iface; LONG ref; DWORD total_cp, total_scripts; } MLang_impl; @@ -1459,7 +1463,7 @@ { MLang_AddRef(This); TRACE("Returning IID_IMLangFontLink %p ref = %d\n", This, This->ref); - *ppvObject = &(This->vtbl_IMLangFontLink); + *ppvObject = &This->IMLangFontLink_iface; return S_OK; } @@ -1467,7 +1471,7 @@ { MLang_AddRef(This); TRACE("Returning IID_IMLangFontLink2 %p ref = %d\n", This, This->ref); - *ppvObject = &(This->vtbl_IMLangFontLink2); + *ppvObject = &This->IMLangFontLink2_iface; return S_OK; } @@ -1475,14 +1479,14 @@ { MLang_AddRef(This); TRACE("Returning IID_IMultiLanguage %p ref = %d\n", This, This->ref); - *ppvObject = &(This->vtbl_IMultiLanguage); + *ppvObject = &This->IMultiLanguage_iface; return S_OK; } if (IsEqualGUID(riid, &IID_IMultiLanguage2) ) { MLang_AddRef(This); - *ppvObject = &(This->vtbl_IMultiLanguage3); + *ppvObject = &This->IMultiLanguage3_iface; TRACE("Returning IID_IMultiLanguage2 %p ref = %d\n", This, This->ref); return S_OK; } @@ -1490,7 +1494,7 @@ if (IsEqualGUID(riid, &IID_IMultiLanguage3) ) { MLang_AddRef(This); - *ppvObject = &(This->vtbl_IMultiLanguage3); + *ppvObject = &This->IMultiLanguage3_iface; TRACE("Returning IID_IMultiLanguage3 %p ref = %d\n", This, This->ref); return S_OK; } @@ -1499,7 +1503,7 @@ { MLang_AddRef(This); TRACE("Returning IID_IMLangLineBreakConsole %p ref = %d\n", This, This->ref); - *ppvObject = &(This->vtbl_IMLangLineBreakConsole); + *ppvObject = &This->IMLangLineBreakConsole_iface; return S_OK; } @@ -1512,7 +1516,7 @@ typedef struct tagEnumCodePage_impl { - const IEnumCodePageVtbl *vtbl_IEnumCodePage; + IEnumCodePage IEnumCodePage_iface; LONG ref; MIMECPINFO *cpinfo; DWORD total, pos; @@ -1520,7 +1524,7 @@ static inline EnumCodePage_impl *impl_from_IEnumCodePage( IEnumCodePage *iface ) { - return CONTAINING_RECORD( iface, EnumCodePage_impl, vtbl_IEnumCodePage ); + return CONTAINING_RECORD( iface, EnumCodePage_impl, IEnumCodePage_iface ); } static HRESULT WINAPI fnIEnumCodePage_QueryInterface( @@ -1537,7 +1541,7 @@ { IEnumCodePage_AddRef(iface); TRACE("Returning IID_IEnumCodePage %p ref = %d\n", This, This->ref); - *ppvObject = &(This->vtbl_IEnumCodePage); + *ppvObject = &This->IEnumCodePage_iface; return S_OK; } @@ -1668,7 +1672,7 @@ grfFlags = MIMECONTF_MIME_LATEST; ecp = HeapAlloc( GetProcessHeap(), 0, sizeof (EnumCodePage_impl) ); - ecp->vtbl_IEnumCodePage = &IEnumCodePage_vtbl; + ecp->IEnumCodePage_iface.lpVtbl = &IEnumCodePage_vtbl; ecp->ref = 1; ecp->pos = 0; ecp->total = 0; @@ -1696,7 +1700,7 @@ TRACE("enumerated %d codepages with flags %08x\n", ecp->total, grfFlags); - *ppEnumCodePage = (IEnumCodePage*) ecp; + *ppEnumCodePage = &ecp->IEnumCodePage_iface; return S_OK; } @@ -1705,7 +1709,7 @@ typedef struct tagEnumScript_impl { - const IEnumScriptVtbl *vtbl_IEnumScript; + IEnumScript IEnumScript_iface; LONG ref; SCRIPTINFO *script_info; DWORD total, pos; @@ -1713,7 +1717,7 @@ static inline EnumScript_impl *impl_from_IEnumScript( IEnumScript *iface ) { - return CONTAINING_RECORD( iface, EnumScript_impl, vtbl_IEnumScript ); + return CONTAINING_RECORD( iface, EnumScript_impl, IEnumScript_iface ); } static HRESULT WINAPI fnIEnumScript_QueryInterface( @@ -1730,7 +1734,7 @@ { IEnumScript_AddRef(iface); TRACE("Returning IID_IEnumScript %p ref = %d\n", This, This->ref); - *ppvObject = &(This->vtbl_IEnumScript); + *ppvObject = &This->IEnumScript_iface; return S_OK; } @@ -1845,7 +1849,7 @@ dwFlags = SCRIPTCONTF_SCRIPT_USER | SCRIPTCONTF_SCRIPT_HIDE | SCRIPTCONTF_SCRIPT_SYSTEM; es = HeapAlloc( GetProcessHeap(), 0, sizeof (EnumScript_impl) ); - es->vtbl_IEnumScript = &IEnumScript_vtbl; + es->IEnumScript_iface.lpVtbl = &IEnumScript_vtbl; es->ref = 1; es->pos = 0; /* do not enumerate unicode flavours */ @@ -1866,7 +1870,7 @@ TRACE("enumerated %d scripts with flags %08x\n", es->total, dwFlags); - *ppEnumScript = (IEnumScript *)es; + *ppEnumScript = &es->IEnumScript_iface; return S_OK; } @@ -1875,7 +1879,7 @@ static inline MLang_impl *impl_from_IMLangFontLink( IMLangFontLink *iface ) { - return CONTAINING_RECORD( iface, MLang_impl, vtbl_IMLangFontLink ); + return CONTAINING_RECORD( iface, MLang_impl, IMLangFontLink_iface ); } static HRESULT WINAPI fnIMLangFontLink_QueryInterface( @@ -2113,7 +2117,7 @@ static inline MLang_impl *impl_from_IMultiLanguage( IMultiLanguage *iface ) { - return CONTAINING_RECORD( iface, MLang_impl, vtbl_IMultiLanguage ); + return CONTAINING_RECORD( iface, MLang_impl, IMultiLanguage_iface ); } static HRESULT WINAPI fnIMultiLanguage_QueryInterface( @@ -2128,13 +2132,13 @@ static ULONG WINAPI fnIMultiLanguage_AddRef( IMultiLanguage* iface ) { MLang_impl *This = impl_from_IMultiLanguage( iface ); - return IMLangFontLink_AddRef( ((IMLangFontLink*)This) ); + return IMLangFontLink_AddRef( &This->IMLangFontLink_iface ); } static ULONG WINAPI fnIMultiLanguage_Release( IMultiLanguage* iface ) { MLang_impl *This = impl_from_IMultiLanguage( iface ); - return IMLangFontLink_Release( ((IMLangFontLink*)This) ); + return IMLangFontLink_Release( &This->IMLangFontLink_iface ); } static HRESULT WINAPI fnIMultiLanguage_GetNumberOfCodePageInfo( @@ -2202,7 +2206,7 @@ PMIMECSETINFO pCharsetInfo) { MLang_impl *This = impl_from_IMultiLanguage( iface ); - return IMultiLanguage3_GetCharsetInfo((IMultiLanguage3*)&This->vtbl_IMultiLanguage3, Charset, pCharsetInfo); + return IMultiLanguage3_GetCharsetInfo( &This->IMultiLanguage3_iface, Charset, pCharsetInfo ); } static HRESULT WINAPI fnIMultiLanguage_IsConvertible( @@ -2306,7 +2310,7 @@ typedef struct tagEnumRfc1766_impl { - const IEnumRfc1766Vtbl *vtbl_IEnumRfc1766; + IEnumRfc1766 IEnumRfc1766_iface; LONG ref; RFC1766INFO *info; DWORD total, pos; @@ -2314,7 +2318,7 @@ static inline EnumRfc1766_impl *impl_from_IEnumRfc1766( IEnumRfc1766 *iface ) { - return CONTAINING_RECORD( iface, EnumRfc1766_impl, vtbl_IEnumRfc1766 ); + return CONTAINING_RECORD( iface, EnumRfc1766_impl, IEnumRfc1766_iface ); } static HRESULT WINAPI fnIEnumRfc1766_QueryInterface( @@ -2331,7 +2335,7 @@ { IEnumRfc1766_AddRef(iface); TRACE("Returning IID_IEnumRfc1766 %p ref = %d\n", This, This->ref); - *ppvObject = &(This->vtbl_IEnumRfc1766); + *ppvObject = &This->IEnumRfc1766_iface; return S_OK; } @@ -2490,7 +2494,7 @@ TRACE("%04x, %p\n", LangId, ppEnum); rfc = HeapAlloc( GetProcessHeap(), 0, sizeof(EnumRfc1766_impl) ); - rfc->vtbl_IEnumRfc1766 = &IEnumRfc1766_vtbl; + rfc->IEnumRfc1766_iface.lpVtbl = &IEnumRfc1766_vtbl; rfc->ref = 1; rfc->pos = 0; rfc->total = 0; @@ -2520,7 +2524,7 @@ rfc->info = data.info; rfc->total = data.total; - *ppEnum = (IEnumRfc1766 *)rfc; + *ppEnum = &rfc->IEnumRfc1766_iface; return S_OK; } @@ -2614,7 +2618,7 @@ static inline MLang_impl *impl_from_IMultiLanguage3( IMultiLanguage3 *iface ) { - return CONTAINING_RECORD( iface, MLang_impl, vtbl_IMultiLanguage3 ); + return CONTAINING_RECORD( iface, MLang_impl, IMultiLanguage3_iface ); } static HRESULT WINAPI fnIMultiLanguage2_QueryInterface( @@ -2936,7 +2940,7 @@ if ((PRIMARYLANGID(LangId) != LANG_ENGLISH) && (last_lang != LangId)) { - FIXME("Only english names supported (requested: 0x%04x)\n", LangId); + FIXME("Only English names supported (requested: 0x%04x)\n", LangId); last_lang = LangId; } @@ -3275,7 +3279,7 @@ static inline MLang_impl *impl_from_IMLangFontLink2( IMLangFontLink2 *iface ) { - return CONTAINING_RECORD( iface, MLang_impl, vtbl_IMLangFontLink2 ); + return CONTAINING_RECORD( iface, MLang_impl, IMLangFontLink2_iface ); } static HRESULT WINAPI fnIMLangFontLink2_QueryInterface( @@ -3464,7 +3468,7 @@ static inline MLang_impl *impl_from_IMLangLineBreakConsole( IMLangLineBreakConsole *iface ) { - return CONTAINING_RECORD( iface, MLang_impl, vtbl_IMLangLineBreakConsole ); + return CONTAINING_RECORD( iface, MLang_impl, IMLangLineBreakConsole_iface ); } static HRESULT WINAPI fnIMLangLineBreakConsole_QueryInterface( @@ -3558,11 +3562,11 @@ return CLASS_E_NOAGGREGATION; mlang = HeapAlloc( GetProcessHeap(), 0, sizeof (MLang_impl) ); - mlang->vtbl_IMLangFontLink = &IMLangFontLink_vtbl; - mlang->vtbl_IMultiLanguage = &IMultiLanguage_vtbl; - mlang->vtbl_IMultiLanguage3 = &IMultiLanguage3_vtbl; - mlang->vtbl_IMLangFontLink2 = &IMLangFontLink2_vtbl; - mlang->vtbl_IMLangLineBreakConsole = &IMLangLineBreakConsole_vtbl; + mlang->IMLangFontLink_iface.lpVtbl = &IMLangFontLink_vtbl; + mlang->IMultiLanguage_iface.lpVtbl = &IMultiLanguage_vtbl; + mlang->IMultiLanguage3_iface.lpVtbl = &IMultiLanguage3_vtbl; + mlang->IMLangFontLink2_iface.lpVtbl = &IMLangFontLink2_vtbl; + mlang->IMLangLineBreakConsole_iface.lpVtbl = &IMLangLineBreakConsole_vtbl; mlang->total_cp = 0; for (i = 0; i < sizeof(mlang_data)/sizeof(mlang_data[0]); i++) @@ -3587,8 +3591,28 @@ return dll_count == 0 ? S_OK : S_FALSE; } -HRESULT WINAPI GetGlobalFontLinkObject(void) -{ - FIXME("\n"); + +/*********************************************************************** + * DllRegisterServer (MLANG.@) + */ +HRESULT WINAPI DllRegisterServer(void) +{ + return __wine_register_resources( instance ); +} + +/*********************************************************************** + * DllUnregisterServer (MLANG.@) + */ +HRESULT WINAPI DllUnregisterServer(void) +{ + return __wine_unregister_resources( instance ); +} + +HRESULT WINAPI GetGlobalFontLinkObject(void **unknown) +{ + if (!unknown) return E_INVALIDARG; + + FIXME("%p: stub\n", unknown); + return S_FALSE; } Modified: trunk/reactos/dll/win32/mlang/mlang.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mlang/mlang.rbui…
============================================================================== --- trunk/reactos/dll/win32/mlang/mlang.rbuild [iso-8859-1] (original) +++ trunk/reactos/dll/win32/mlang/mlang.rbuild [iso-8859-1] Sat Jan 28 17:11:55 2012 @@ -7,9 +7,10 @@ <include base="mlang">.</include> <include base="ReactOS">include/reactos/wine</include> <define name="__WINESRC__" /> + <define name="COM_NO_WINDOWS_H" /> <redefine name="_WIN32_WINNT">0x600</redefine> <file>mlang.c</file> - <file>regsvr.c</file> + <file>mlang.rc</file> <library>wine</library> <library>ole32</library> <library>user32</library> Added: trunk/reactos/dll/win32/mlang/mlang.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mlang/mlang.rc?r…
============================================================================== --- trunk/reactos/dll/win32/mlang/mlang.rc (added) +++ trunk/reactos/dll/win32/mlang/mlang.rc [iso-8859-1] Sat Jan 28 17:11:55 2012 @@ -1,0 +1,1 @@ +1 WINE_REGISTRY mlang.rgs Propchange: trunk/reactos/dll/win32/mlang/mlang.rc ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/dll/win32/mlang/mlang.rgs URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mlang/mlang.rgs?…
============================================================================== --- trunk/reactos/dll/win32/mlang/mlang.rgs (added) +++ trunk/reactos/dll/win32/mlang/mlang.rgs [iso-8859-1] Sat Jan 28 17:11:55 2012 @@ -1,0 +1,21 @@ +HKCR +{ + NoRemove Interface + { + } + NoRemove CLSID + { + '{275C23E2-3747-11D0-9FEA-00AA003F8646}' = s 'Multi Language Support' + { + InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Both' } + } + '{C04D65CF-B70D-11D0-B188-00AA0038C969}' = s 'Multi Language String' + { + InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Both' } + } + '{D66D6F99-CDAA-11D0-B822-00C04FC9B31F}' = s 'Multi Language ConvertCharset' + { + InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Both' } + } + } +} Propchange: trunk/reactos/dll/win32/mlang/mlang.rgs ------------------------------------------------------------------------------ svn:eol-style = native Modified: trunk/reactos/dll/win32/mlang/mlang.spec URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mlang/mlang.spec…
============================================================================== --- trunk/reactos/dll/win32/mlang/mlang.spec [iso-8859-1] (original) +++ trunk/reactos/dll/win32/mlang/mlang.spec [iso-8859-1] Sat Jan 28 17:11:55 2012 @@ -12,4 +12,4 @@ @ stdcall -private DllGetClassObject(ptr ptr ptr) @ stdcall -private DllRegisterServer() @ stdcall -private DllUnregisterServer() -@ stdcall GetGlobalFontLinkObject() +@ stdcall GetGlobalFontLinkObject(ptr) Added: trunk/reactos/dll/win32/mlang/mlang_classes.idl URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mlang/mlang_clas…
============================================================================== --- trunk/reactos/dll/win32/mlang/mlang_classes.idl (added) +++ trunk/reactos/dll/win32/mlang/mlang_classes.idl [iso-8859-1] Sat Jan 28 17:11:55 2012 @@ -1,0 +1,40 @@ +/* + * COM Classes for mlang + * + * Copyright 2010 Alexandre Julliard + * + * 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 + */ + +[ + helpstring("Multi Language Support"), + threading(both), + uuid(275c23e2-3747-11d0-9fea-00aa003f8646) +] +coclass CMultiLanguage { interface IMultiLanguage; } + +[ + helpstring("Multi Language String"), + threading(both), + uuid(c04d65cf-b70d-11d0-b188-00aa0038c969) +] +coclass CMLangString { interface IMultiLanguage; } + +[ + helpstring("Multi Language ConvertCharset"), + threading(both), + uuid(d66d6f99-cdaa-11d0-b822-00c04fc9b31f) +] +coclass CMLangConvertCharset { interface IMultiLanguage; } Propchange: trunk/reactos/dll/win32/mlang/mlang_classes.idl ------------------------------------------------------------------------------ svn:eol-style = native Removed: trunk/reactos/dll/win32/mlang/regsvr.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mlang/regsvr.c?r…
============================================================================== --- trunk/reactos/dll/win32/mlang/regsvr.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/mlang/regsvr.c (removed) @@ -1,510 +1,0 @@ -/* - * self-registerable dll functions for mlang.dll - * - * Copyright (C) 2003 John K. Hohm - * Copyright (C) 2004 Steven Edwards for ReactOS - * - * 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 - */ - -#include <stdarg.h> -#include <string.h> - -#include "windef.h" -#include "winbase.h" -#include "winuser.h" -#include "wingdi.h" -#include "winreg.h" -#include "winerror.h" - -#include "objbase.h" -#include "mlang.h" - -#include "wine/debug.h" -#include "wine/unicode.h" - -#include "initguid.h" - -WINE_DEFAULT_DEBUG_CHANNEL(mlang); - -/* This one should probably be defined in mlang.idl but MSDN claims it is no longer supported */ -DEFINE_GUID(CLSID_CMLangString, 0xc04d65cf, 0xb70d, 0x11d0, 0xb1,0x88, 0x00,0xaa,0x00,0x38,0xc9,0x69); - -/* - * Near the bottom of this file are the exported DllRegisterServer and - * DllUnregisterServer, which make all this worthwhile. - */ - -/*********************************************************************** - * interface for self-registering - */ -struct regsvr_interface -{ - IID const *iid; /* NULL for end of list */ - LPCSTR name; /* can be NULL to omit */ - IID const *base_iid; /* can be NULL to omit */ - int num_methods; /* can be <0 to omit */ - CLSID const *ps_clsid; /* can be NULL to omit */ - CLSID const *ps_clsid32; /* can be NULL to omit */ -}; - -static HRESULT register_interfaces(struct regsvr_interface const *list); -static HRESULT unregister_interfaces(struct regsvr_interface const *list); - -struct regsvr_coclass -{ - CLSID const *clsid; /* NULL for end of list */ - LPCSTR name; /* can be NULL to omit */ - LPCSTR ips; /* can be NULL to omit */ - LPCSTR ips32; /* can be NULL to omit */ - LPCSTR ips32_tmodel; /* can be NULL to omit */ - LPCSTR progid; /* can be NULL to omit */ - LPCSTR viprogid; /* can be NULL to omit */ - LPCSTR progid_extra; /* can be NULL to omit */ -}; - -static HRESULT register_coclasses(struct regsvr_coclass const *list); -static HRESULT unregister_coclasses(struct regsvr_coclass const *list); - -/*********************************************************************** - * static string constants - */ -static WCHAR const interface_keyname[10] = { - 'I', 'n', 't', 'e', 'r', 'f', 'a', 'c', 'e', 0 }; -static WCHAR const base_ifa_keyname[14] = { - 'B', 'a', 's', 'e', 'I', 'n', 't', 'e', 'r', 'f', 'a', 'c', - 'e', 0 }; -static WCHAR const num_methods_keyname[11] = { - 'N', 'u', 'm', 'M', 'e', 't', 'h', 'o', 'd', 's', 0 }; -static WCHAR const ps_clsid_keyname[15] = { - 'P', 'r', 'o', 'x', 'y', 'S', 't', 'u', 'b', 'C', 'l', 's', - 'i', 'd', 0 }; -static WCHAR const ps_clsid32_keyname[17] = { - 'P', 'r', 'o', 'x', 'y', 'S', 't', 'u', 'b', 'C', 'l', 's', - 'i', 'd', '3', '2', 0 }; -static WCHAR const clsid_keyname[6] = { - 'C', 'L', 'S', 'I', 'D', 0 }; -static WCHAR const curver_keyname[7] = { - 'C', 'u', 'r', 'V', 'e', 'r', 0 }; -static WCHAR const ips_keyname[13] = { - 'I', 'n', 'P', 'r', 'o', 'c', 'S', 'e', 'r', 'v', 'e', 'r', - 0 }; -static WCHAR const ips32_keyname[15] = { - 'I', 'n', 'P', 'r', 'o', 'c', 'S', 'e', 'r', 'v', 'e', 'r', - '3', '2', 0 }; -static WCHAR const progid_keyname[7] = { - 'P', 'r', 'o', 'g', 'I', 'D', 0 }; -static WCHAR const viprogid_keyname[25] = { - 'V', 'e', 'r', 's', 'i', 'o', 'n', 'I', 'n', 'd', 'e', 'p', - 'e', 'n', 'd', 'e', 'n', 't', 'P', 'r', 'o', 'g', 'I', 'D', - 0 }; -static char const tmodel_valuename[] = "ThreadingModel"; - -/*********************************************************************** - * static helper functions - */ -static LONG register_key_guid(HKEY base, WCHAR const *name, GUID const *guid); -static LONG register_key_defvalueW(HKEY base, WCHAR const *name, - WCHAR const *value); -static LONG register_key_defvalueA(HKEY base, WCHAR const *name, - char const *value); -static LONG register_progid(WCHAR const *clsid, - char const *progid, char const *curver_progid, - char const *name, char const *extra); - -/*********************************************************************** - * register_interfaces - */ -static HRESULT register_interfaces(struct regsvr_interface const *list) -{ - LONG res = ERROR_SUCCESS; - HKEY interface_key; - - res = RegCreateKeyExW(HKEY_CLASSES_ROOT, interface_keyname, 0, NULL, 0, - KEY_READ | KEY_WRITE, NULL, &interface_key, NULL); - if (res != ERROR_SUCCESS) goto error_return; - - for (; res == ERROR_SUCCESS && list->iid; ++list) { - WCHAR buf[39]; - HKEY iid_key; - - StringFromGUID2(list->iid, buf, 39); - res = RegCreateKeyExW(interface_key, buf, 0, NULL, 0, - KEY_READ | KEY_WRITE, NULL, &iid_key, NULL); - if (res != ERROR_SUCCESS) goto error_close_interface_key; - - if (list->name) { - res = RegSetValueExA(iid_key, NULL, 0, REG_SZ, - (CONST BYTE*)(list->name), - strlen(list->name) + 1); - if (res != ERROR_SUCCESS) goto error_close_iid_key; - } - - if (list->base_iid) { - res = register_key_guid(iid_key, base_ifa_keyname, list->base_iid); - if (res != ERROR_SUCCESS) goto error_close_iid_key; - } - - if (0 <= list->num_methods) { - static WCHAR const fmt[3] = { '%', 'd', 0 }; - HKEY key; - - res = RegCreateKeyExW(iid_key, num_methods_keyname, 0, NULL, 0, - KEY_READ | KEY_WRITE, NULL, &key, NULL); - if (res != ERROR_SUCCESS) goto error_close_iid_key; - - sprintfW(buf, fmt, list->num_methods); - res = RegSetValueExW(key, NULL, 0, REG_SZ, - (CONST BYTE*)buf, - (lstrlenW(buf) + 1) * sizeof(WCHAR)); - RegCloseKey(key); - - if (res != ERROR_SUCCESS) goto error_close_iid_key; - } - - if (list->ps_clsid) { - res = register_key_guid(iid_key, ps_clsid_keyname, list->ps_clsid); - if (res != ERROR_SUCCESS) goto error_close_iid_key; - } - - if (list->ps_clsid32) { - res = register_key_guid(iid_key, ps_clsid32_keyname, list->ps_clsid32); - if (res != ERROR_SUCCESS) goto error_close_iid_key; - } - - error_close_iid_key: - RegCloseKey(iid_key); - } - -error_close_interface_key: - RegCloseKey(interface_key); -error_return: - return res != ERROR_SUCCESS ? HRESULT_FROM_WIN32(res) : S_OK; -} - -/*********************************************************************** - * unregister_interfaces - */ -static HRESULT unregister_interfaces(struct regsvr_interface const *list) -{ - LONG res = ERROR_SUCCESS; - HKEY interface_key; - - res = RegOpenKeyExW(HKEY_CLASSES_ROOT, interface_keyname, 0, - KEY_READ | KEY_WRITE, &interface_key); - if (res == ERROR_FILE_NOT_FOUND) return S_OK; - if (res != ERROR_SUCCESS) goto error_return; - - for (; res == ERROR_SUCCESS && list->iid; ++list) { - WCHAR buf[39]; - - StringFromGUID2(list->iid, buf, 39); - res = RegDeleteTreeW(interface_key, buf); - if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; - } - - RegCloseKey(interface_key); -error_return: - return res != ERROR_SUCCESS ? HRESULT_FROM_WIN32(res) : S_OK; -} - -/*********************************************************************** - * register_coclasses - */ -static HRESULT register_coclasses(struct regsvr_coclass const *list) -{ - LONG res = ERROR_SUCCESS; - HKEY coclass_key; - - res = RegCreateKeyExW(HKEY_CLASSES_ROOT, clsid_keyname, 0, NULL, 0, - KEY_READ | KEY_WRITE, NULL, &coclass_key, NULL); - if (res != ERROR_SUCCESS) goto error_return; - - for (; res == ERROR_SUCCESS && list->clsid; ++list) { - WCHAR buf[39]; - HKEY clsid_key; - - StringFromGUID2(list->clsid, buf, 39); - res = RegCreateKeyExW(coclass_key, buf, 0, NULL, 0, - KEY_READ | KEY_WRITE, NULL, &clsid_key, NULL); - if (res != ERROR_SUCCESS) goto error_close_coclass_key; - - if (list->name) { - res = RegSetValueExA(clsid_key, NULL, 0, REG_SZ, - (CONST BYTE*)(list->name), - strlen(list->name) + 1); - if (res != ERROR_SUCCESS) goto error_close_clsid_key; - } - - if (list->ips) { - res = register_key_defvalueA(clsid_key, ips_keyname, list->ips); - if (res != ERROR_SUCCESS) goto error_close_clsid_key; - } - - if (list->ips32) { - HKEY ips32_key; - - res = RegCreateKeyExW(clsid_key, ips32_keyname, 0, NULL, 0, - KEY_READ | KEY_WRITE, NULL, - &ips32_key, NULL); - if (res != ERROR_SUCCESS) goto error_close_clsid_key; - - res = RegSetValueExA(ips32_key, NULL, 0, REG_SZ, - (CONST BYTE*)list->ips32, - lstrlenA(list->ips32) + 1); - if (res == ERROR_SUCCESS && list->ips32_tmodel) - res = RegSetValueExA(ips32_key, tmodel_valuename, 0, REG_SZ, - (CONST BYTE*)list->ips32_tmodel, - strlen(list->ips32_tmodel) + 1); - RegCloseKey(ips32_key); - if (res != ERROR_SUCCESS) goto error_close_clsid_key; - } - - if (list->progid) { - res = register_key_defvalueA(clsid_key, progid_keyname, - list->progid); - if (res != ERROR_SUCCESS) goto error_close_clsid_key; - - res = register_progid(buf, list->progid, NULL, - list->name, list->progid_extra); - if (res != ERROR_SUCCESS) goto error_close_clsid_key; - } - - if (list->viprogid) { - res = register_key_defvalueA(clsid_key, viprogid_keyname, - list->viprogid); - if (res != ERROR_SUCCESS) goto error_close_clsid_key; - - res = register_progid(buf, list->viprogid, list->progid, - list->name, list->progid_extra); - if (res != ERROR_SUCCESS) goto error_close_clsid_key; - } - - error_close_clsid_key: - RegCloseKey(clsid_key); - } - -error_close_coclass_key: - RegCloseKey(coclass_key); -error_return: - return res != ERROR_SUCCESS ? HRESULT_FROM_WIN32(res) : S_OK; -} - -/*********************************************************************** - * unregister_coclasses - */ -static HRESULT unregister_coclasses(struct regsvr_coclass const *list) -{ - LONG res = ERROR_SUCCESS; - HKEY coclass_key; - - res = RegOpenKeyExW(HKEY_CLASSES_ROOT, clsid_keyname, 0, - KEY_READ | KEY_WRITE, &coclass_key); - if (res == ERROR_FILE_NOT_FOUND) return S_OK; - if (res != ERROR_SUCCESS) goto error_return; - - for (; res == ERROR_SUCCESS && list->clsid; ++list) { - WCHAR buf[39]; - - StringFromGUID2(list->clsid, buf, 39); - res = RegDeleteTreeW(coclass_key, buf); - if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; - if (res != ERROR_SUCCESS) goto error_close_coclass_key; - - if (list->progid) { - res = RegDeleteTreeA(HKEY_CLASSES_ROOT, list->progid); - if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; - if (res != ERROR_SUCCESS) goto error_close_coclass_key; - } - - if (list->viprogid) { - res = RegDeleteTreeA(HKEY_CLASSES_ROOT, list->viprogid); - if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; - if (res != ERROR_SUCCESS) goto error_close_coclass_key; - } - } - -error_close_coclass_key: - RegCloseKey(coclass_key); -error_return: - return res != ERROR_SUCCESS ? HRESULT_FROM_WIN32(res) : S_OK; -} - -/*********************************************************************** - * regsvr_key_guid - */ -static LONG register_key_guid(HKEY base, WCHAR const *name, GUID const *guid) -{ - WCHAR buf[39]; - - StringFromGUID2(guid, buf, 39); - return register_key_defvalueW(base, name, buf); -} - -/*********************************************************************** - * regsvr_key_defvalueW - */ -static LONG register_key_defvalueW( - HKEY base, - WCHAR const *name, - WCHAR const *value) -{ - LONG res; - HKEY key; - - res = RegCreateKeyExW(base, name, 0, NULL, 0, - KEY_READ | KEY_WRITE, NULL, &key, NULL); - if (res != ERROR_SUCCESS) return res; - res = RegSetValueExW(key, NULL, 0, REG_SZ, (CONST BYTE*)value, - (lstrlenW(value) + 1) * sizeof(WCHAR)); - RegCloseKey(key); - return res; -} - -/*********************************************************************** - * regsvr_key_defvalueA - */ -static LONG register_key_defvalueA( - HKEY base, - WCHAR const *name, - char const *value) -{ - LONG res; - HKEY key; - - res = RegCreateKeyExW(base, name, 0, NULL, 0, - KEY_READ | KEY_WRITE, NULL, &key, NULL); - if (res != ERROR_SUCCESS) return res; - res = RegSetValueExA(key, NULL, 0, REG_SZ, (CONST BYTE*)value, - lstrlenA(value) + 1); - RegCloseKey(key); - return res; -} - -/*********************************************************************** - * regsvr_progid - */ -static LONG register_progid( - WCHAR const *clsid, - char const *progid, - char const *curver_progid, - char const *name, - char const *extra) -{ - LONG res; - HKEY progid_key; - - res = RegCreateKeyExA(HKEY_CLASSES_ROOT, progid, 0, - NULL, 0, KEY_READ | KEY_WRITE, NULL, - &progid_key, NULL); - if (res != ERROR_SUCCESS) return res; - - if (name) { - res = RegSetValueExA(progid_key, NULL, 0, REG_SZ, - (CONST BYTE*)name, strlen(name) + 1); - if (res != ERROR_SUCCESS) goto error_close_progid_key; - } - - if (clsid) { - res = register_key_defvalueW(progid_key, clsid_keyname, clsid); - if (res != ERROR_SUCCESS) goto error_close_progid_key; - } - - if (curver_progid) { - res = register_key_defvalueA(progid_key, curver_keyname, - curver_progid); - if (res != ERROR_SUCCESS) goto error_close_progid_key; - } - - if (extra) { - HKEY extra_key; - - res = RegCreateKeyExA(progid_key, extra, 0, - NULL, 0, KEY_READ | KEY_WRITE, NULL, - &extra_key, NULL); - if (res == ERROR_SUCCESS) - RegCloseKey(extra_key); - } - -error_close_progid_key: - RegCloseKey(progid_key); - return res; -} - -/*********************************************************************** - * coclass list - */ -static struct regsvr_coclass const coclass_list[] = { - { - &CLSID_CMultiLanguage, - "Multi Language Support", - NULL, - "mlang.dll", - "Both" - }, - { - &CLSID_CMLangString, - "Multi Language String", - NULL, - "mlang.dll", - "Both" - }, - { - &CLSID_CMLangConvertCharset, - "Multi Language ConvertCharset", - NULL, - "mlang.dll", - "Both" - }, - { NULL } /* list terminator */ -}; - -/*********************************************************************** - * interface list - */ - -static struct regsvr_interface const interface_list[] = { - { NULL } /* list terminator */ -}; - -/*********************************************************************** - * DllRegisterServer (MLANG.@) - */ -HRESULT WINAPI DllRegisterServer(void) -{ - HRESULT hr; - - TRACE("\n"); - - hr = register_coclasses(coclass_list); - if (SUCCEEDED(hr)) - hr = register_interfaces(interface_list); - return hr; -} - -/*********************************************************************** - * DllUnregisterServer (MLANG.@) - */ -HRESULT WINAPI DllUnregisterServer(void) -{ - HRESULT hr; - - TRACE("\n"); - - hr = unregister_coclasses(coclass_list); - if (SUCCEEDED(hr)) - hr = unregister_interfaces(interface_list); - return hr; -} Modified: trunk/reactos/include/psdk/mlang.idl URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/mlang.idl?rev…
============================================================================== --- trunk/reactos/include/psdk/mlang.idl [iso-8859-1] (original) +++ trunk/reactos/include/psdk/mlang.idl [iso-8859-1] Sat Jan 28 17:11:55 2012 @@ -750,7 +750,7 @@ cpp_quote("STDAPI Rfc1766ToLcidW(LCID *, LPCWSTR);") cpp_quote("#define Rfc1766ToLcid WINELIB_NAME_AW(Rfc1766ToLcid)") -cpp_quote("STDAPI GetGlobalFontLinkObject(void);") +cpp_quote("STDAPI GetGlobalFontLinkObject(void **unknown);") cpp_quote("STDAPI IsConvertINetStringAvailable(DWORD, DWORD);") cpp_quote("STDAPI ConvertINetString(LPDWORD, DWORD, DWORD, LPCSTR, LPINT, LPSTR, LPINT);") cpp_quote("STDAPI ConvertINetMultiByteToUnicode(LPDWORD, DWORD, LPCSTR, LPINT, LPWSTR, LPINT);") Modified: trunk/reactos/media/doc/README.WINE URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=…
============================================================================== --- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original) +++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Sat Jan 28 17:11:55 2012 @@ -88,7 +88,7 @@ reactos/dll/win32/mciqtz32 # Autosync reactos/dll/win32/mciseq # Synced to Wine-1.3.37 reactos/dll/win32/mciwave # Synced to Wine-1.3.37 -reactos/dll/win32/mlang # Autosync +reactos/dll/win32/mlang # Synced to Wine-1.3.37 reactos/dll/win32/mpr # Autosync reactos/dll/win32/mprapi # Autosync reactos/dll/win32/msacm32 # Autosync
12 years, 11 months
1
0
0
0
[akhaldi] 55272: [PSDK] * Import cor.idl, cordebug.idl and metahost.idl from Wine. * Remove the now unneeded cor.h. * Update corerror.h, corhdr.h, mscoree.idl and winsxs.idl from Wine. * Update the...
by akhaldi@svn.reactos.org
Author: akhaldi Date: Sat Jan 28 11:58:18 2012 New Revision: 55272 URL:
http://svn.reactos.org/svn/reactos?rev=55272&view=rev
Log: [PSDK] * Import cor.idl, cordebug.idl and metahost.idl from Wine. * Remove the now unneeded cor.h. * Update corerror.h, corhdr.h, mscoree.idl and winsxs.idl from Wine. * Update the cmake and rbuild files to reflect the changes. Added: trunk/reactos/include/psdk/cor.idl (with props) trunk/reactos/include/psdk/cordebug.idl (with props) trunk/reactos/include/psdk/metahost.idl (with props) Removed: trunk/reactos/include/psdk/cor.h Modified: trunk/reactos/include/psdk/CMakeLists.txt trunk/reactos/include/psdk/corerror.h trunk/reactos/include/psdk/corhdr.h trunk/reactos/include/psdk/mscoree.idl trunk/reactos/include/psdk/psdk.rbuild trunk/reactos/include/psdk/winsxs.idl Modified: trunk/reactos/include/psdk/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/CMakeLists.tx…
============================================================================== --- trunk/reactos/include/psdk/CMakeLists.txt [iso-8859-1] (original) +++ trunk/reactos/include/psdk/CMakeLists.txt [iso-8859-1] Sat Jan 28 11:58:18 2012 @@ -21,6 +21,8 @@ comcat.idl commoncontrols.idl control.idl + cor.idl + cordebug.idl # crtrow.idl ctxtcall.idl # dbccmd.idl @@ -44,6 +46,7 @@ imnact.idl imnxport.idl indexsrv.idl + metahost.idl mimeinfo.idl mimeole.idl mlang.idl Removed: trunk/reactos/include/psdk/cor.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/cor.h?rev=552…
============================================================================== --- trunk/reactos/include/psdk/cor.h [iso-8859-1] (original) +++ trunk/reactos/include/psdk/cor.h (removed) @@ -1,43 +1,0 @@ -/* - * Copyright (C) 2007 Francois Gouget - * - * 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 - */ - -#ifndef __WINE_COR_H -#define __WINE_COR_H - -#include "ole2.h" -/* FIXME: #include "specstrings.h" */ -/* FIXME: #include "corerror.h" */ -/* FIXME: #include "corhdr.h" */ - -#ifdef __cplusplus -extern "C" { -#endif - -BOOL WINAPI _CorDllMain(HINSTANCE,DWORD,LPVOID); -__int32 WINAPI _CorExeMain(void); -__int32 WINAPI _CorExeMain2(PBYTE,DWORD,LPWSTR,LPWSTR,LPWSTR); -VOID WINAPI _CorImageUnloading(PVOID); -HRESULT WINAPI _CorValidateImage(PVOID*,LPCWSTR); -HRESULT WINAPI CoInitializeCor(DWORD); -void WINAPI CoUninitializeCor(void); - -#ifdef __cplusplus -} -#endif - -#endif /* __WINE_COR_H */ Added: trunk/reactos/include/psdk/cor.idl URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/cor.idl?rev=5…
============================================================================== --- trunk/reactos/include/psdk/cor.idl (added) +++ trunk/reactos/include/psdk/cor.idl [iso-8859-1] Sat Jan 28 11:58:18 2012 @@ -1,0 +1,108 @@ +/* + * Copyright (C) 2007 Francois Gouget + * + * 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 + */ + +import "propidl.idl"; + +cpp_quote("#include <ole2.h>") +/* FIXME: #include "specstrings.h" */ +cpp_quote("#include <corerror.h>") +cpp_quote("#include <corhdr.h>") + +cpp_quote("DEFINE_GUID(CLSID_CorMetaDataDispenser, 0xe5cb7a31,0x7512,0x11d2,0x89,0xce,0x00,0x80,0xc7,0x92,0xe5,0xd8);") +cpp_quote("DEFINE_GUID(CLSID_CorMetaDataDispenserRuntime, 0x1ec2de53,0x75cc,0x11d2,0x97,0x75,0x00,0xa0,0xc9,0xb4,0xd5,0x0c);") + +[ + object, + local, + uuid(809c652e-7396-11d2-9771-00a0c9b4d50c) +] +interface IMetaDataDispenser : IUnknown +{ + HRESULT DefineScope( + [in] REFCLSID rclsid, + [in] DWORD dwCreateFlags, + [in] REFIID riid, + [out] IUnknown **ppIUnk); + + HRESULT OpenScope( + [in] LPCWSTR szScope, + [in] DWORD dwOpenFlags, + [in] REFIID riid, + [out] IUnknown **ppIUnk); + + HRESULT OpenScopeOnMemory( + [in] const void *pData, + [in] ULONG cbData, + [in] DWORD dwOpenFlags, + [in] REFIID riid, + [out] IUnknown **ppIUnk); +} + +[ + object, + local, + uuid(31bcfce2-dafb-11d2-9f81-00c04f79a0a3) +] +interface IMetaDataDispenserEx : IMetaDataDispenser +{ + HRESULT SetOption( + [in] REFGUID optionid, + [in] const VARIANT *value); + + HRESULT GetOption( + [in] REFGUID optionid, + [out] VARIANT *pvalue); + + HRESULT OpenScopeOnITypeInfo( + [in] ITypeInfo *pITI, + [in] DWORD dwOpenFlags, + [in] REFIID riid, + [out] IUnknown **ppIUnk); + + HRESULT GetCORSystemDirectory( + [out, size_is(cchBuffer)] LPWSTR szBuffer, + [in] DWORD cchBuffer, + [out] DWORD *pchBuffer); + + HRESULT FindAssembly( + [in] LPCWSTR szAppBase, + [in] LPCWSTR szPrivateBin, + [in] LPCWSTR szGlobalBin, + [in] LPCWSTR szAssemblyName, + [out, size_is(cchName)] LPWSTR szName, + [in] ULONG cchName, + [out] ULONG *pcName); + + HRESULT FindAssemblyModule( + [in] LPCWSTR szAppBase, + [in] LPCWSTR szPrivateBin, + [in] LPCWSTR szGlobalBin, + [in] LPCWSTR szAssemblyName, + [in] LPCWSTR szModuleName, + [out, size_is(cchName)] LPWSTR szName, + [in] ULONG cchName, + [out] ULONG *pcName); +} + +cpp_quote("BOOL WINAPI _CorDllMain(HINSTANCE,DWORD,LPVOID);") +cpp_quote("__int32 WINAPI _CorExeMain(void);") +cpp_quote("__int32 WINAPI _CorExeMain2(PBYTE,DWORD,LPWSTR,LPWSTR,LPWSTR);") +cpp_quote("VOID WINAPI _CorImageUnloading(PVOID);") +cpp_quote("HRESULT WINAPI _CorValidateImage(PVOID*,LPCWSTR);") +cpp_quote("HRESULT WINAPI CoInitializeCor(DWORD);") +cpp_quote("void WINAPI CoUninitializeCor(void);") Propchange: trunk/reactos/include/psdk/cor.idl ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/include/psdk/cordebug.idl URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/cordebug.idl?…
============================================================================== --- trunk/reactos/include/psdk/cordebug.idl (added) +++ trunk/reactos/include/psdk/cordebug.idl [iso-8859-1] Sat Jan 28 11:58:18 2012 @@ -1,0 +1,1041 @@ +/* + * Copyright (C) 2011 Alistair Leslie-Hughes + * + * 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 + */ + +import "unknwn.idl"; +import "objidl.idl"; + +cpp_quote("#ifdef WINE_NO_UNICODE_MACROS") +cpp_quote("#undef CreateProcess") +cpp_quote("#endif") + +interface ICorDebugAppDomain; +interface ICorDebugAppDomainEnum; +interface ICorDebugAssembly; +interface ICorDebugAssemblyEnum; +interface ICorDebugBreakpoint; +interface ICorDebugBreakpointEnum; +interface ICorDebugChain; +interface ICorDebugChainEnum; +interface ICorDebugClass; +interface ICorDebugCode; +interface ICorDebugContext; +interface ICorDebugEditAndContinueSnapshot; +interface ICorDebugEditAndContinueErrorInfo; +interface ICorDebugEnum; +interface ICorDebugErrorInfoEnum; +interface ICorDebugEval; +interface ICorDebugFrame; +interface ICorDebugFrameEnum; +interface ICorDebugFunction; +interface ICorDebugFunctionBreakpoint; +interface ICorDebugManagedCallback; +interface ICorDebugManagedCallback2; +interface ICorDebugMDA; +interface ICorDebugModule; +interface ICorDebugModuleBreakpoint; +interface ICorDebugModuleEnum; +interface ICorDebugObjectEnum; +interface ICorDebugObjectValue; +interface ICorDebugProcess; +interface ICorDebugProcessEnum; +interface ICorDebugRegisterSet; +interface ICorDebugStepper; +interface ICorDebugStepperEnum; +interface ICorDebugThreadEnum; +interface ICorDebugUnmanagedCallback; +interface ICorDebugValue; +interface ICorDebugValueBreakpoint; + + +typedef [wire_marshal(unsigned long)] void *HPROCESS; +typedef [wire_marshal(unsigned long)] void *HTHREAD; + +/* These are defined in corhrd.idl but used here. */ +cpp_quote("#if 0") + +typedef UINT32 mdToken; +typedef mdToken mdModule; +typedef SIZE_T mdScope; +typedef mdToken mdTypeDef; +typedef mdToken mdSourceFile; +typedef mdToken mdMemberRef; +typedef mdToken mdMethodDef; +typedef mdToken mdFieldDef; +typedef mdToken mdSignature; +typedef ULONG CorElementType; +typedef SIZE_T PCCOR_SIGNATURE; + +typedef SIZE_T LPDEBUG_EVENT; + +typedef SIZE_T LPSTARTUPINFOW; +typedef SIZE_T LPPROCESS_INFORMATION; + +cpp_quote("#endif") + +typedef ULONG64 CORDB_ADDRESS; +typedef ULONG64 CORDB_REGISTER; + +typedef UINT64 TASKID; +typedef DWORD CONNID; + + +cpp_quote("#ifndef _COR_IL_MAP") +cpp_quote("#define _COR_IL_MAP") + +typedef struct _COR_IL_MAP +{ + ULONG32 oldOffset; + ULONG32 newOffset; + BOOL fAccurate; +} COR_IL_MAP; + +cpp_quote("#endif /* _COR_IL_MAP */") + +cpp_quote("#ifndef _COR_DEBUG_IL_TO_NATIVE_MAP_") +cpp_quote("#define _COR_DEBUG_IL_TO_NATIVE_MAP_") + +typedef enum CorDebugIlToNativeMappingTypes +{ + NO_MAPPING = -1, + PROLOG = -2, + EPILOG = -3 +} CorDebugIlToNativeMappingTypes; + +typedef struct COR_DEBUG_IL_TO_NATIVE_MAP +{ + ULONG32 ilOffset; + ULONG32 nativeStartOffset; + ULONG32 nativeEndOffset; +} COR_DEBUG_IL_TO_NATIVE_MAP; + +cpp_quote("#endif /* _COR_DEBUG_IL_TO_NATIVE_MAP_ */") + + +typedef enum CorDebugThreadState +{ + THREAD_RUN, + THREAD_SUSPEND +} CorDebugThreadState; + +typedef enum CorDebugCreateProcessFlags +{ + DEBUG_NO_SPECIAL_OPTIONS = 0x0000 +} CorDebugCreateProcessFlags; + +[ + object, + local, + uuid(CC7BCAF7-8A68-11d2-983C-0000F808342D), + pointer_default(unique) +] +interface ICorDebugValue : IUnknown +{ + HRESULT GetType([out] CorElementType *pType); + HRESULT GetSize([out] ULONG32 *pSize); + HRESULT GetAddress([out] CORDB_ADDRESS *pAddress); + HRESULT CreateBreakpoint([out] ICorDebugValueBreakpoint **ppBreakpoint); +}; + +[ + object, + local, + uuid(938c6d66-7fb6-4f69-b389-425b8987329b), + pointer_default(unique) +] +interface ICorDebugThread : IUnknown +{ + HRESULT GetProcess([out] ICorDebugProcess **ppProcess); + HRESULT GetID([out] DWORD *pdwThreadId); + HRESULT GetHandle([out] HTHREAD *phThreadHandle); + HRESULT GetAppDomain([out] ICorDebugAppDomain **ppAppDomain); + HRESULT SetDebugState([in] CorDebugThreadState state); + HRESULT GetDebugState([out] CorDebugThreadState *pState); + + typedef enum CorDebugUserState + { + USER_STOP_REQUESTED = 0x01, + USER_SUSPEND_REQUESTED = 0x02, + USER_BACKGROUND = 0x04, + USER_UNSTARTED = 0x08, + USER_STOPPED = 0x10, + USER_WAIT_SLEEP_JOIN = 0x20, + USER_SUSPENDED = 0x40, + + USER_UNSAFE_POINT = 0x80, + } CorDebugUserState; + + HRESULT GetUserState([out] CorDebugUserState *pState); + HRESULT GetCurrentException([out] ICorDebugValue **ppExceptionObject); + HRESULT ClearCurrentException(); + HRESULT CreateStepper([out] ICorDebugStepper **ppStepper); + HRESULT EnumerateChains([out] ICorDebugChainEnum **ppChains); + HRESULT GetActiveChain([out] ICorDebugChain **ppChain); + HRESULT GetActiveFrame([out] ICorDebugFrame **ppFrame); + HRESULT GetRegisterSet([out] ICorDebugRegisterSet **ppRegisters); + HRESULT CreateEval([out] ICorDebugEval **ppEval); + HRESULT GetObject([out] ICorDebugValue **ppObject); +}; + +[ + object, + local, + uuid(3d6f5f62-7538-11d3-8d5b-00104b35e7ef), + pointer_default(unique) +] + +interface ICorDebugController : IUnknown +{ + HRESULT Stop([in] DWORD dwTimeoutIgnored); + HRESULT Continue([in] BOOL fIsOutOfBand); + HRESULT IsRunning([out] BOOL *pbRunning); + HRESULT HasQueuedCallbacks([in] ICorDebugThread *pThread, + [out] BOOL *pbQueued); + HRESULT EnumerateThreads([out] ICorDebugThreadEnum **ppThreads); + HRESULT SetAllThreadsDebugState([in] CorDebugThreadState state, + [in] ICorDebugThread *pExceptThisThread); + HRESULT Detach(); + HRESULT Terminate([in] UINT exitCode); + HRESULT CanCommitChanges([in] ULONG cSnapshots, + [in] ICorDebugEditAndContinueSnapshot *pSnapshots[], + [out] ICorDebugErrorInfoEnum **pError); + HRESULT CommitChanges([in] ULONG cSnapshots, + [in] ICorDebugEditAndContinueSnapshot *pSnapshots[], + [out] ICorDebugErrorInfoEnum **pError); +}; + +[ + object, + local, + uuid(3d6f5f64-7538-11d3-8d5b-00104b35e7ef), + pointer_default(unique) +] +interface ICorDebugProcess : ICorDebugController +{ + HRESULT GetID([out] DWORD *pdwProcessId); + HRESULT GetHandle([out] HPROCESS *phProcessHandle); + HRESULT GetThread([in] DWORD dwThreadId, [out] ICorDebugThread **ppThread); + HRESULT EnumerateObjects([out] ICorDebugObjectEnum **ppObjects); + HRESULT IsTransitionStub([in] CORDB_ADDRESS address, [out] BOOL *pbTransitionStub); + HRESULT IsOSSuspended([in] DWORD threadID, [out] BOOL *pbSuspended); + HRESULT GetThreadContext([in] DWORD threadID, [in] ULONG32 contextSize, + [in, out] BYTE context[]); + HRESULT SetThreadContext([in] DWORD threadID, [in] ULONG32 contextSize, [in] BYTE context[]); + HRESULT ReadMemory([in] CORDB_ADDRESS address, [in] DWORD size, [out] BYTE buffer[], [out] SIZE_T *read); + HRESULT WriteMemory([in] CORDB_ADDRESS address, [in] DWORD size, [in] BYTE buffer[], [out] SIZE_T *written); + HRESULT ClearCurrentException([in] DWORD threadID); + HRESULT EnableLogMessages([in]BOOL fOnOff); + HRESULT ModifyLogSwitch([in] WCHAR *pLogSwitchName, + [in]LONG lLevel); + HRESULT EnumerateAppDomains([out] ICorDebugAppDomainEnum **ppAppDomains); + HRESULT GetObject([out] ICorDebugValue **ppObject); + HRESULT ThreadForFiberCookie([in] DWORD fiberCookie, [out] ICorDebugThread **ppThread); + HRESULT GetHelperThreadID([out] DWORD *pThreadID); +}; + +[ + object, + local, + uuid(3d6f5f63-7538-11d3-8d5b-00104b35e7ef), + pointer_default(unique) +] +interface ICorDebugAppDomain : ICorDebugController +{ + HRESULT GetProcess([out] ICorDebugProcess **ppProcess); + HRESULT EnumerateAssemblies([out] ICorDebugAssemblyEnum **ppAssemblies); + HRESULT GetModuleFromMetaDataInterface([in] IUnknown *pIMetaData, + [out] ICorDebugModule **ppModule); + HRESULT EnumerateBreakpoints([out] ICorDebugBreakpointEnum **ppBreakpoints); + HRESULT EnumerateSteppers([out] ICorDebugStepperEnum **ppSteppers); + HRESULT IsAttached([out] BOOL *pbAttached); + HRESULT GetName([in] ULONG32 cchName, [out] ULONG32 *pcchName, [out] WCHAR szName[]); + HRESULT GetObject([out] ICorDebugValue **ppObject); + HRESULT Attach(); + HRESULT GetID([out] ULONG32 *pId); +}; + +[ + object, + local, + uuid(3d6f5f60-7538-11d3-8d5b-00104b35e7ef), + pointer_default(unique) +] +interface ICorDebugManagedCallback : IUnknown +{ + HRESULT Breakpoint([in] ICorDebugAppDomain *pAppDomain, + [in] ICorDebugThread *pThread, + [in] ICorDebugBreakpoint *pBreakpoint); + + typedef enum CorDebugStepReason + { + STEP_NORMAL, + STEP_RETURN, + STEP_CALL, + STEP_EXCEPTION_FILTER, + STEP_EXCEPTION_HANDLER, + STEP_INTERCEPT, + STEP_EXIT + } CorDebugStepReason; + + HRESULT StepComplete([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread, + [in] ICorDebugStepper *pStepper, [in] CorDebugStepReason reason); + HRESULT Break([in] ICorDebugAppDomain *pAppDomain, + [in] ICorDebugThread *thread); + HRESULT Exception([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread, + [in] BOOL unhandled); + HRESULT EvalComplete([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread, + [in] ICorDebugEval *pEval); + HRESULT EvalException([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread, + [in] ICorDebugEval *pEval); + HRESULT CreateProcess([in] ICorDebugProcess *pProcess); + HRESULT ExitProcess([in] ICorDebugProcess *pProcess); + HRESULT CreateThread([in] ICorDebugAppDomain *pAppDomain,[in] ICorDebugThread *thread); + HRESULT ExitThread([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *thread); + HRESULT LoadModule([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugModule *pModule); + HRESULT UnloadModule([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugModule *pModule); + HRESULT LoadClass([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugClass *c); + HRESULT UnloadClass([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugClass *c); + HRESULT DebuggerError([in] ICorDebugProcess *pProcess, [in] HRESULT errorHR, + [in] DWORD errorCode); + + typedef enum LoggingLevelEnum + { + LTraceLevel0 = 0, + LTraceLevel1, + LTraceLevel2, + LTraceLevel3, + LTraceLevel4, + LStatusLevel0 = 20, + LStatusLevel1, + LStatusLevel2, + LStatusLevel3, + LStatusLevel4, + LWarningLevel = 40, + LErrorLevel = 50, + LPanicLevel = 100 + } LoggingLevelEnum; + + typedef enum LogSwitchCallReason + { + SWITCH_CREATE, + SWITCH_MODIFY, + SWITCH_DELETE + } LogSwitchCallReason; + + HRESULT LogMessage([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread, + [in] LONG lLevel, [in] WCHAR *pLogSwitchName, [in] WCHAR *pMessage); + HRESULT LogSwitch([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread, + [in] LONG lLevel, [in] ULONG ulReason, [in] WCHAR *pLogSwitchName, + [in] WCHAR *pParentName); + HRESULT CreateAppDomain([in] ICorDebugProcess *pProcess, [in] ICorDebugAppDomain *pAppDomain); + HRESULT ExitAppDomain([in] ICorDebugProcess *pProcess, [in] ICorDebugAppDomain *pAppDomain); + HRESULT LoadAssembly([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugAssembly *pAssembly); + HRESULT UnloadAssembly([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugAssembly *pAssembly); + HRESULT ControlCTrap([in] ICorDebugProcess *pProcess); + HRESULT NameChange([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread); + HRESULT UpdateModuleSymbols([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugModule *pModule, + [in] IStream *pSymbolStream); + HRESULT EditAndContinueRemap([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread, + [in] ICorDebugFunction *pFunction, [in] BOOL fAccurate); + + HRESULT BreakpointSetError([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread, + [in] ICorDebugBreakpoint *pBreakpoint, [in] DWORD dwError); +}; + +[ + object, + local, + uuid(250E5EEA-DB5C-4C76-B6F3-8C46F12E3203), + pointer_default(unique) +] +interface ICorDebugManagedCallback2 : IUnknown +{ + HRESULT FunctionRemapOpportunity([in] ICorDebugAppDomain *pAppDomain, + [in] ICorDebugThread *pThread, [in] ICorDebugFunction *pOldFunction, + [in] ICorDebugFunction *pNewFunction, [in] ULONG32 oldILOffset); + + HRESULT CreateConnection([in] ICorDebugProcess *pProcess, [in] CONNID dwConnectionId, + [in] WCHAR *pConnName); + + HRESULT ChangeConnection([in] ICorDebugProcess *pProcess, [in] CONNID dwConnectionId ); + + HRESULT DestroyConnection([in] ICorDebugProcess *pProcess, [in] CONNID dwConnectionId ); + + + typedef enum CorDebugExceptionCallbackType + { + DEBUG_EXCEPTION_FIRST_CHANCE = 1, + DEBUG_EXCEPTION_USER_FIRST_CHANCE = 2, + DEBUG_EXCEPTION_CATCH_HANDLER_FOUND = 3, + DEBUG_EXCEPTION_UNHANDLED = 4 + } CorDebugExceptionCallbackType; + + typedef enum CorDebugExceptionFlags + { + DEBUG_EXCEPTION_CAN_BE_INTERCEPTED = 0x0001 + } CorDebugExceptionFlags; + + HRESULT Exception( [in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread, + [in] ICorDebugFrame *pFrame, [in] ULONG32 nOffset, + [in] CorDebugExceptionCallbackType dwEventType, [in] DWORD dwFlags ); + + typedef enum CorDebugExceptionUnwindCallbackType + { + DEBUG_EXCEPTION_UNWIND_BEGIN = 1, + DEBUG_EXCEPTION_INTERCEPTED = 2 + } CorDebugExceptionUnwindCallbackType; + + HRESULT ExceptionUnwind( [in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread, + [in] CorDebugExceptionUnwindCallbackType dwEventType, + [in] DWORD dwFlags ); + + HRESULT FunctionRemapComplete([in] ICorDebugAppDomain *pAppDomain, + [in] ICorDebugThread *pThread, [in] ICorDebugFunction *pFunction); + + HRESULT MDANotification([in] ICorDebugController * pController, + [in] ICorDebugThread *pThread, [in] ICorDebugMDA * pMDA + ); + +}; +[ + object, + local, + uuid(3d6f5f61-7538-11d3-8d5b-00104b35e7ef), + pointer_default(unique) +] +interface ICorDebug : IUnknown +{ + HRESULT Initialize(); + HRESULT Terminate(); + HRESULT SetManagedHandler([in] ICorDebugManagedCallback *pCallback); + HRESULT SetUnmanagedHandler([in] ICorDebugUnmanagedCallback *pCallback); + HRESULT CreateProcess([in] LPCWSTR lpApplicationName, [in] LPWSTR lpCommandLine, + [in] LPSECURITY_ATTRIBUTES lpProcessAttributes, + [in] LPSECURITY_ATTRIBUTES lpThreadAttributes, + [in] BOOL bInheritHandles, [in] DWORD dwCreationFlags, + [in] PVOID lpEnvironment, [in] LPCWSTR lpCurrentDirectory, + [in] LPSTARTUPINFOW lpStartupInfo, + [in] LPPROCESS_INFORMATION lpProcessInformation, + [in] CorDebugCreateProcessFlags debuggingFlags, + [out] ICorDebugProcess **ppProcess); + + HRESULT DebugActiveProcess([in] DWORD id, [in] BOOL win32Attach, + [out] ICorDebugProcess **ppProcess); + HRESULT EnumerateProcesses([out] ICorDebugProcessEnum **ppProcess); + HRESULT GetProcess([in] DWORD dwProcessId, [out] ICorDebugProcess **ppProcess); + HRESULT CanLaunchOrAttach([in] DWORD dwProcessId, [in] BOOL win32DebuggingEnabled); +}; + + +[ + object, + local, + uuid(CC7BCAE8-8A68-11d2-983C-0000F808342D), + pointer_default(unique) +] +interface ICorDebugBreakpoint : IUnknown +{ + HRESULT Activate([in] BOOL bActive); + HRESULT IsActive([out] BOOL *pbActive); +}; + +[ + object, + local, + uuid(CC7BCAE9-8A68-11d2-983C-0000F808342D), + pointer_default(unique) +] +interface ICorDebugFunctionBreakpoint : ICorDebugBreakpoint +{ + HRESULT GetFunction([out] ICorDebugFunction **ppFunction); + HRESULT GetOffset([out] ULONG32 *pnOffset); +}; + +[ + object, + local, + uuid(CC7BCAEA-8A68-11d2-983C-0000F808342D), + pointer_default(unique) +] +interface ICorDebugModuleBreakpoint : ICorDebugBreakpoint +{ + HRESULT GetModule([out] ICorDebugModule **ppModule); +}; + +[ + object, + local, + uuid(CC7BCAEB-8A68-11d2-983C-0000F808342D), + pointer_default(unique) +] +interface ICorDebugValueBreakpoint : ICorDebugBreakpoint +{ + HRESULT GetValue([out] ICorDebugValue **ppValue); +}; + +[ + object, + local, + uuid(CC7BCAEC-8A68-11d2-983C-0000F808342D), + pointer_default(unique) +] +interface ICorDebugStepper : IUnknown +{ + HRESULT IsActive([out] BOOL *pbActive); + HRESULT Deactivate(); + + typedef enum CorDebugIntercept + { + INTERCEPT_NONE = 0x0 , + INTERCEPT_CLASS_INIT = 0x01, + INTERCEPT_EXCEPTION_FILTER = 0x02, + INTERCEPT_SECURITY = 0x04, + INTERCEPT_CONTEXT_POLICY = 0x08, + INTERCEPT_INTERCEPTION = 0x10, + INTERCEPT_ALL = 0xffff + } CorDebugIntercept; + + HRESULT SetInterceptMask([in] CorDebugIntercept mask); + + typedef enum CorDebugUnmappedStop + { + STOP_NONE = 0x0, + STOP_PROLOG = 0x01, + STOP_EPILOG = 0x02, + STOP_NO_MAPPING_INFO = 0x04, + STOP_OTHER_UNMAPPED = 0x08, + STOP_UNMANAGED = 0x10, + + STOP_ALL = 0xffff, + + } CorDebugUnmappedStop; + + HRESULT SetUnmappedStopMask([in] CorDebugUnmappedStop mask); + HRESULT Step([in] BOOL bStepIn); + + typedef struct COR_DEBUG_STEP_RANGE + { + ULONG32 startOffset, endOffset; + } COR_DEBUG_STEP_RANGE; + + HRESULT StepRange([in] BOOL bStepIn, [in] COR_DEBUG_STEP_RANGE ranges[], [in] ULONG32 cRangeCount); + HRESULT StepOut(); + HRESULT SetRangeIL([in] BOOL bIL); +}; + +[ + object, + local, + uuid(CC7BCB01-8A68-11d2-983C-0000F808342D), + pointer_default(unique) +] +interface ICorDebugEnum : IUnknown +{ + HRESULT Skip([in] ULONG celt); + HRESULT Reset(); + HRESULT Clone([out] ICorDebugEnum **ppEnum); + HRESULT GetCount([out] ULONG *pcelt); +}; + +[ + object, + local, + uuid(63ca1b24-4359-4883-bd57-13f815f58744), + pointer_default(unique) +] + +interface ICorDebugAppDomainEnum : ICorDebugEnum +{ + HRESULT Next([in] ULONG celt, [out] ICorDebugAppDomain *values[], [out] ULONG *pceltFetched); + +}; + +[ + object, + local, + uuid(4a2a1ec9-85ec-4bfb-9f15-a89fdfe0fe83), + pointer_default(unique) +] +interface ICorDebugAssemblyEnum : ICorDebugEnum +{ + HRESULT Next([in] ULONG celt, [out] ICorDebugAssembly *values[], [out] ULONG *pceltFetched); + +}; + +[ + object, + local, + uuid(CC7BCB03-8A68-11d2-983C-0000F808342D), + pointer_default(unique) +] +interface ICorDebugBreakpointEnum : ICorDebugEnum +{ + HRESULT Next([in] ULONG celt, [out] ICorDebugBreakpoint *breakpoints[], [out] ULONG *pceltFetched); +}; + +[ + object, + local, + uuid(CC7BCB08-8A68-11d2-983C-0000F808342D), + pointer_default(unique) +] +interface ICorDebugChainEnum : ICorDebugEnum +{ + HRESULT Next([in] ULONG celt, [out] ICorDebugChain *chains[], [out] ULONG *pceltFetched); +}; + +[ + object, + local, + uuid(F0E18809-72B5-11d2-976F-00A0C9B4D50C), + pointer_default(unique) +] +interface ICorDebugErrorInfoEnum : ICorDebugEnum +{ + HRESULT Next([in] ULONG celt, [out] ICorDebugEditAndContinueErrorInfo *errors[], + [out] ULONG *pceltFetched); +}; + +[ + object, + local, + uuid(CC7BCB07-8A68-11d2-983C-0000F808342D), + pointer_default(unique) +] +interface ICorDebugFrameEnum : ICorDebugEnum +{ + HRESULT Next([in] ULONG celt, [out] ICorDebugFrame *frames[], [out] ULONG *pceltFetched); +}; + +[ + object, + local, + uuid(CC7BCB09-8A68-11d2-983C-0000F808342D), + pointer_default(unique) +] +interface ICorDebugModuleEnum : ICorDebugEnum +{ + HRESULT Next([in] ULONG celt, [out] ICorDebugModule *modules[], [out] ULONG *pceltFetched); +}; + +[ + object, + local, + uuid(CC7BCB02-8A68-11d2-983C-0000F808342D), + pointer_default(unique) +] +interface ICorDebugObjectEnum : ICorDebugEnum +{ + HRESULT Next([in] ULONG celt, [out] CORDB_ADDRESS objects[], [out] ULONG *pceltFetched); +}; + +[ + object, + local, + uuid(CC7BCB05-8A68-11d2-983C-0000F808342D), + pointer_default(unique) +] +interface ICorDebugProcessEnum : ICorDebugEnum +{ + HRESULT Next([in] ULONG celt, [out] ICorDebugProcess *processes[], [out] ULONG *pceltFetched); +}; + +[ + object, + local, + uuid(CC7BCB04-8A68-11d2-983C-0000F808342D), + pointer_default(unique) +] +interface ICorDebugStepperEnum : ICorDebugEnum +{ + HRESULT Next([in] ULONG celt, [out] ICorDebugStepper *steppers[], [out] ULONG *pceltFetched); +}; + +[ + object, + local, + uuid(CC7BCB06-8A68-11d2-983C-0000F808342D), + pointer_default(unique) +] +interface ICorDebugThreadEnum : ICorDebugEnum +{ + HRESULT Next([in] ULONG celt, [out] ICorDebugThread *threads[], [out] ULONG *pceltFetched); +}; + +[ + object, + local, + uuid(CC7BCAEE-8A68-11d2-983C-0000F808342D), + pointer_default(unique) +] +interface ICorDebugChain : IUnknown +{ + HRESULT GetThread([out] ICorDebugThread **ppThread); + HRESULT GetStackRange([out] CORDB_ADDRESS *pStart, [out] CORDB_ADDRESS *pEnd); + HRESULT GetContext([out] ICorDebugContext **ppContext); + HRESULT GetCaller([out] ICorDebugChain **ppChain); + HRESULT GetCallee([out] ICorDebugChain **ppChain); + HRESULT GetPrevious([out] ICorDebugChain **ppChain); + HRESULT GetNext([out] ICorDebugChain **ppChain); + HRESULT IsManaged([out] BOOL *pManaged); + HRESULT EnumerateFrames([out] ICorDebugFrameEnum **ppFrames); + HRESULT GetActiveFrame([out] ICorDebugFrame **ppFrame); + HRESULT GetRegisterSet([out] ICorDebugRegisterSet **ppRegisters); + typedef enum CorDebugChainReason + { + CHAIN_NONE = 0x000, + CHAIN_CLASS_INIT = 0x001, + CHAIN_EXCEPTION_FILTER = 0x002, + CHAIN_SECURITY = 0x004, + CHAIN_CONTEXT_POLICY = 0x008, + CHAIN_INTERCEPTION = 0x010, + CHAIN_PROCESS_START = 0x020, + CHAIN_THREAD_START = 0x040, + CHAIN_ENTER_MANAGED = 0x080, + CHAIN_ENTER_UNMANAGED = 0x100, + CHAIN_DEBUGGER_EVAL = 0x200, + CHAIN_CONTEXT_SWITCH = 0x400, + CHAIN_FUNC_EVAL = 0x800, + } CorDebugChainReason; + + HRESULT GetReason([out] CorDebugChainReason *pReason); +}; + +[ + object, + local, + uuid(CC7BCAEF-8A68-11d2-983C-0000F808342D), + pointer_default(unique) +] +interface ICorDebugFrame : IUnknown +{ + HRESULT GetChain([out] ICorDebugChain **ppChain); + HRESULT GetCode([out] ICorDebugCode **ppCode); + HRESULT GetFunction([out] ICorDebugFunction **ppFunction); + HRESULT GetFunctionToken([out] mdMethodDef *pToken); + HRESULT GetStackRange([out] CORDB_ADDRESS *pStart, [out] CORDB_ADDRESS *pEnd); + HRESULT GetCaller([out] ICorDebugFrame **ppFrame); + HRESULT GetCallee([out] ICorDebugFrame **ppFrame); + HRESULT CreateStepper([out] ICorDebugStepper **ppStepper); +}; + + +[ + object, + local, + uuid(CC7BCB0B-8A68-11d2-983C-0000F808342D), + pointer_default(unique) +] +interface ICorDebugRegisterSet : IUnknown +{ + typedef enum CorDebugRegister + { + REGISTER_INSTRUCTION_POINTER = 0, + REGISTER_STACK_POINTER, + REGISTER_FRAME_POINTER, + + REGISTER_X86_EIP = 0, + REGISTER_X86_ESP, + REGISTER_X86_EBP, + + REGISTER_X86_EAX, + REGISTER_X86_ECX, + REGISTER_X86_EDX, + REGISTER_X86_EBX, + + REGISTER_X86_ESI, + REGISTER_X86_EDI, + + REGISTER_X86_FPSTACK_0, + REGISTER_X86_FPSTACK_1, + REGISTER_X86_FPSTACK_2, + REGISTER_X86_FPSTACK_3, + REGISTER_X86_FPSTACK_4, + REGISTER_X86_FPSTACK_5, + REGISTER_X86_FPSTACK_6, + REGISTER_X86_FPSTACK_7, + + REGISTER_AMD64_RIP = 0, + REGISTER_AMD64_RSP, + REGISTER_AMD64_RBP, + + REGISTER_AMD64_RAX, + REGISTER_AMD64_RCX, + REGISTER_AMD64_RDX, + REGISTER_AMD64_RBX, + + REGISTER_AMD64_RSI, + REGISTER_AMD64_RDI, + + REGISTER_AMD64_R8, + REGISTER_AMD64_R9, + REGISTER_AMD64_R10, + REGISTER_AMD64_R11, + REGISTER_AMD64_R12, + REGISTER_AMD64_R13, + REGISTER_AMD64_R14, + REGISTER_AMD64_R15, + + REGISTER_AMD64_XMM0, + REGISTER_AMD64_XMM1, + REGISTER_AMD64_XMM2, + REGISTER_AMD64_XMM3, + REGISTER_AMD64_XMM4, + REGISTER_AMD64_XMM5, + REGISTER_AMD64_XMM6, + REGISTER_AMD64_XMM7, + REGISTER_AMD64_XMM8, + REGISTER_AMD64_XMM9, + REGISTER_AMD64_XMM10, + REGISTER_AMD64_XMM11, + REGISTER_AMD64_XMM12, + REGISTER_AMD64_XMM13, + REGISTER_AMD64_XMM14, + REGISTER_AMD64_XMM15, + + REGISTER_IA64_BSP = REGISTER_FRAME_POINTER, + + REGISTER_IA64_R0 = REGISTER_IA64_BSP + 1, + REGISTER_IA64_F0 = REGISTER_IA64_R0 + 128, + + } CorDebugRegister; + + HRESULT GetRegistersAvailable([out] ULONG64 *pAvailable); + + HRESULT GetRegisters([in] ULONG64 mask, [in] ULONG32 regCount, + [out] CORDB_REGISTER regBuffer[]); + HRESULT SetRegisters([in] ULONG64 mask, [in] ULONG32 regCount, + [in] CORDB_REGISTER regBuffer[]); + HRESULT GetThreadContext([in] ULONG32 contextSize, [in, out] BYTE context[]); + HRESULT SetThreadContext([in] ULONG32 contextSize, [in] BYTE context[]); +} + +[ + object, + local, + uuid(CC7BCAF6-8A68-11d2-983C-0000F808342D), + pointer_default(unique) +] +interface ICorDebugEval : IUnknown +{ + HRESULT CallFunction([in] ICorDebugFunction *pFunction, [in] ULONG32 nArgs, + [in] ICorDebugValue *ppArgs[]); + HRESULT NewObject([in] ICorDebugFunction *pConstructor, [in] ULONG32 nArgs, + [in] ICorDebugValue *ppArgs[]); + HRESULT NewObjectNoConstructor([in] ICorDebugClass *pClass); + HRESULT NewString([in] LPCWSTR string); + HRESULT NewArray([in] CorElementType elementType, [in] ICorDebugClass *pElementClass, + [in] ULONG32 rank, [in] ULONG32 dims[], [in] ULONG32 lowBounds[]); + HRESULT IsActive([out] BOOL *pbActive); + HRESULT Abort(); + HRESULT GetResult([out] ICorDebugValue **ppResult); + HRESULT GetThread([out] ICorDebugThread **ppThread); + HRESULT CreateValue([in] CorElementType elementType, [in] ICorDebugClass *pElementClass, + [out] ICorDebugValue **ppValue); +}; + +[ + object, + local, + uuid(6DC3FA01-D7CB-11d2-8A95-0080C792E5D8), + pointer_default(unique) +] +interface ICorDebugEditAndContinueSnapshot : IUnknown +{ + HRESULT CopyMetaData([in] IStream *pIStream, [out] GUID *pMvid); + HRESULT GetMvid([out] GUID *pMvid); + HRESULT GetRoDataRVA([out] ULONG32 *pRoDataRVA); + HRESULT GetRwDataRVA([out] ULONG32 *pRwDataRVA); + HRESULT SetPEBytes([in] IStream *pIStream); + HRESULT SetILMap([in] mdToken mdFunction, [in] ULONG cMapSize, [in] COR_IL_MAP map[]); + HRESULT SetPESymbolBytes([in] IStream *pIStream); +}; + +[ + object, + local, + uuid(dba2d8c1-e5c5-4069-8c13-10a7c6abf43d), + pointer_default(unique) +] +interface ICorDebugModule : IUnknown +{ + HRESULT GetProcess([out] ICorDebugProcess **ppProcess); + HRESULT GetBaseAddress([out] CORDB_ADDRESS *pAddress); + HRESULT GetAssembly([out] ICorDebugAssembly **ppAssembly); + HRESULT GetName([in] ULONG32 cchName, [out] ULONG32 *pcchName, [out] WCHAR szName[]); + HRESULT EnableJITDebugging([in] BOOL bTrackJITInfo, [in] BOOL bAllowJitOpts); + HRESULT EnableClassLoadCallbacks([in] BOOL bClassLoadCallbacks); + HRESULT GetFunctionFromToken([in] mdMethodDef methodDef, [out] ICorDebugFunction **ppFunction); + HRESULT GetFunctionFromRVA([in] CORDB_ADDRESS rva, [out] ICorDebugFunction **ppFunction); + HRESULT GetClassFromToken([in] mdTypeDef typeDef, [out] ICorDebugClass **ppClass); + HRESULT CreateBreakpoint([out] ICorDebugModuleBreakpoint **ppBreakpoint); + HRESULT GetEditAndContinueSnapshot([out] ICorDebugEditAndContinueSnapshot **ppEditAndContinueSnapshot); + HRESULT GetMetaDataInterface([in] REFIID riid, [out] IUnknown **ppObj); + HRESULT GetToken([out] mdModule *pToken); + HRESULT IsDynamic([out] BOOL *pDynamic); + HRESULT GetGlobalVariableValue([in] mdFieldDef fieldDef, [out] ICorDebugValue **ppValue); + HRESULT GetSize([out] ULONG32 *pcBytes); + HRESULT IsInMemory([out] BOOL *pInMemory); +}; + +[ + object, + local, + uuid(CC7BCAF5-8A68-11d2-983C-0000F808342D), + pointer_default(unique) +] +interface ICorDebugClass : IUnknown +{ + HRESULT GetModule([out] ICorDebugModule **pModule); + HRESULT GetToken([out] mdTypeDef *pTypeDef); + HRESULT GetStaticFieldValue([in] mdFieldDef fieldDef, [in] ICorDebugFrame *pFrame, + [out] ICorDebugValue **ppValue); +}; + +[ + object, + local, + uuid(df59507c-d47a-459e-bce2-6427eac8fd06), + pointer_default(unique) +] +interface ICorDebugAssembly : IUnknown +{ + HRESULT GetProcess([out] ICorDebugProcess **ppProcess); + HRESULT GetAppDomain([out] ICorDebugAppDomain **ppAppDomain); + HRESULT EnumerateModules([out] ICorDebugModuleEnum **ppModules); + HRESULT GetCodeBase([in] ULONG32 cchName, [out] ULONG32 *pcchName, [out] WCHAR szName[]); + HRESULT GetName([in] ULONG32 cchName, [out] ULONG32 *pcchName, [out] WCHAR szName[]); +}; + + +[ + object, + local, + uuid(CC7BCAF3-8A68-11d2-983C-0000F808342D), + pointer_default(unique) +] +interface ICorDebugFunction : IUnknown +{ + HRESULT GetModule([out] ICorDebugModule **ppModule); + HRESULT GetClass([out] ICorDebugClass **ppClass); + HRESULT GetToken([out] mdMethodDef *pMethodDef); + HRESULT GetILCode([out] ICorDebugCode **ppCode); + HRESULT GetNativeCode([out] ICorDebugCode **ppCode); + HRESULT CreateBreakpoint([out] ICorDebugFunctionBreakpoint **ppBreakpoint); + HRESULT GetLocalVarSigToken([out] mdSignature *pmdSig); + HRESULT GetCurrentVersionNumber([out] ULONG32 *pnCurrentVersion); +}; + +[ + object, + local, + uuid(5263E909-8CB5-11d3-BD2F-0000F80849BD), + pointer_default(unique) +] +interface ICorDebugUnmanagedCallback : IUnknown +{ + HRESULT DebugEvent([in] LPDEBUG_EVENT pDebugEvent, [in] BOOL fOutOfBand); +}; + +[ + object, + local, + uuid(8D600D41-F4F6-4cb3-B7EC-7BD164944036), + pointer_default(unique) +] +interface ICorDebugEditAndContinueErrorInfo : IUnknown +{ + HRESULT GetModule([out] ICorDebugModule **ppModule); + HRESULT GetToken([out]mdToken *pToken); + HRESULT GetErrorCode([out]HRESULT *pHr); + HRESULT GetString([in] ULONG32 cchString, [out] ULONG32 *pcchString, + [out] WCHAR szString[]); +} + +[ + object, + local, + uuid(18AD3D6E-B7D2-11d2-BD04-0000F80849BD), + pointer_default(unique) +] +interface ICorDebugObjectValue : ICorDebugValue +{ + HRESULT GetClass([out] ICorDebugClass **ppClass); + HRESULT GetFieldValue([in] ICorDebugClass *pClass, [in] mdFieldDef fieldDef, + [out] ICorDebugValue **ppValue); + HRESULT GetVirtualMethod([in] mdMemberRef memberRef, [out] ICorDebugFunction **ppFunction); + HRESULT GetContext([out] ICorDebugContext **ppContext); + HRESULT IsValueClass([out] BOOL *pbIsValueClass); + HRESULT GetManagedCopy([out] IUnknown **ppObject); + HRESULT SetFromManagedCopy([in] IUnknown *pObject); +}; + +[ + object, + local, + uuid(CC7BCB00-8A68-11d2-983C-0000F808342D), + pointer_default(unique) +] +interface ICorDebugContext : ICorDebugObjectValue +{ +}; + +[ + object, + local, + uuid(CC7BCAF4-8A68-11d2-983C-0000F808342D), + pointer_default(unique) +] +interface ICorDebugCode : IUnknown +{ + HRESULT IsIL([out] BOOL *pbIL); + HRESULT GetFunction([out] ICorDebugFunction **ppFunction); + HRESULT GetAddress([out] CORDB_ADDRESS *pStart); + HRESULT GetSize([out] ULONG32 *pcBytes); + HRESULT CreateBreakpoint([in] ULONG32 offset, [out] ICorDebugFunctionBreakpoint **ppBreakpoint); + HRESULT GetCode([in] ULONG32 startOffset, [in] ULONG32 endOffset, + [in] ULONG32 cBufferAlloc, [out] BYTE buffer[], [out] ULONG32 *pcBufferSize); + HRESULT GetVersionNumber([out] ULONG32 *nVersion); + HRESULT GetILToNativeMapping([in] ULONG32 cMap, [out] ULONG32 *pcMap, + [out] COR_DEBUG_IL_TO_NATIVE_MAP map[]); + HRESULT GetEnCRemapSequencePoints([in] ULONG32 cMap,[out] ULONG32 *pcMap, + [out] ULONG32 offsets[]); +}; + +[ + object, + local, + uuid(CC726F2F-1DB7-459b-B0EC-05F01D841B42), + pointer_default(unique) +] +interface ICorDebugMDA : IUnknown +{ + HRESULT GetName([in] ULONG32 cchName, [out] ULONG32 * pcchName, [out] WCHAR szName[]); + + HRESULT GetDescription([in] ULONG32 cchName, [out] ULONG32 * pcchName, [out] WCHAR szName[]); + + HRESULT GetXML([in] ULONG32 cchName, [out] ULONG32 * pcchName, [out] WCHAR szName[]); + + typedef enum CorDebugMDAFlags + { + MDA_FLAG_SLIP = 0x2 + } CorDebugMDAFlags; + + HRESULT GetFlags([in] CorDebugMDAFlags * pFlags); + + HRESULT GetOSThreadId([out] DWORD * pOsTid); +}; Propchange: trunk/reactos/include/psdk/cordebug.idl ------------------------------------------------------------------------------ svn:eol-style = native Modified: trunk/reactos/include/psdk/corerror.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/corerror.h?re…
============================================================================== --- trunk/reactos/include/psdk/corerror.h [iso-8859-1] (original) +++ trunk/reactos/include/psdk/corerror.h [iso-8859-1] Sat Jan 28 11:58:18 2012 @@ -44,83 +44,86 @@ #define COR_E_DIRECTORYNOTFOUND HRESULT_FROM_WIN32(ERROR_PATH_NOT_FOUND) #define COR_E_PATHTOOLONG HRESULT_FROM_WIN32(ERROR_FILENAME_EXCED_RANGE) -#define COR_E_AMBIGUOUSMATCH _HRESULT_TYPEDEF_(0x8000211DL) -#define COR_E_TARGETPARAMCOUNT _HRESULT_TYPEDEF_(0x8002000EL) -#define COR_E_DIVIDEBYZERO _HRESULT_TYPEDEF_(0x80020012L) -#define COR_E_BADIMAGEFORMAT _HRESULT_TYPEDEF_(0x8007000BL) +#define COR_E_AMBIGUOUSMATCH _HRESULT_TYPEDEF_(0x8000211D) +#define COR_E_TARGETPARAMCOUNT _HRESULT_TYPEDEF_(0x8002000E) +#define COR_E_DIVIDEBYZERO _HRESULT_TYPEDEF_(0x80020012) +#define COR_E_BADIMAGEFORMAT _HRESULT_TYPEDEF_(0x8007000B) -#define COR_E_ASSEMBLYEXPECTED EMAKEHR(0x1018L) -#define COR_E_TYPEUNLOADED EMAKEHR(0x1013L) -#define COR_E_EXCEPTION EMAKEHR(0x1500L) -#define COR_E_SYSTEM EMAKEHR(0x1501L) -#define COR_E_ARGUMENTOUTOFRANGE EMAKEHR(0x1502L) -#define COR_E_ARRAYTYPEMISMATCH EMAKEHR(0x1503L) -#define COR_E_CONTEXTMARSHAL EMAKEHR(0x1504L) -#define COR_E_TIMEOUT EMAKEHR(0x1505L) -#define COR_E_EXECUTIONENGINE EMAKEHR(0x1506L) -#define COR_E_FIELDACCESS EMAKEHR(0x1507L) -#define COR_E_INDEXOUTOFRANGE EMAKEHR(0x1508L) -#define COR_E_INVALIDOPERATION EMAKEHR(0x1509L) -#define COR_E_SECURITY EMAKEHR(0x150AL) -#define COR_E_REMOTING EMAKEHR(0x150BL) -#define COR_E_SERIALIZATION EMAKEHR(0x150CL) -#define COR_E_VERIFICATION EMAKEHR(0x150DL) -#define COR_E_SERVER EMAKEHR(0x150EL) -#define COR_E_SERVICEDCOMPONENT EMAKEHR(0x150FL) -#define COR_E_METHODACCESS EMAKEHR(0x1510L) -#define COR_E_MISSINGFIELD EMAKEHR(0x1511L) -#define COR_E_MISSINGMEMBER EMAKEHR(0x1512L) -#define COR_E_MISSINGMETHOD EMAKEHR(0x1513L) -#define COR_E_MULTICASTNOTSUPPORTED EMAKEHR(0x1514L) -#define COR_E_NOTSUPPORTED EMAKEHR(0x1515L) -#define COR_E_OVERFLOW EMAKEHR(0x1516L) -#define COR_E_RANK EMAKEHR(0x1517L) -#define COR_E_SYNCHRONIZATIONLOCK EMAKEHR(0x1518L) -#define COR_E_THREADINTERRUPTED EMAKEHR(0x1519L) -#define COR_E_MEMBERACCESS EMAKEHR(0x151AL) -#define COR_E_THREADSTATE EMAKEHR(0x1520L) -#define COR_E_THREADSTOP EMAKEHR(0x1521L) -#define COR_E_TYPELOAD EMAKEHR(0x1522L) -#define COR_E_ENTRYPOINTNOTFOUND EMAKEHR(0x1523L) -#define COR_E_DLLNOTFOUND EMAKEHR(0x1524L) -#define COR_E_THREADSTART EMAKEHR(0x1525L) -#define COR_E_INVALIDCOMOBJECT EMAKEHR(0x1527L) -#define COR_E_NOTFINITENUMBER EMAKEHR(0x1528L) -#define COR_E_DUPLICATEWAITOBJECT EMAKEHR(0x1529L) -#define COR_E_SEMAPHOREFULL EMAKEHR(0x152BL) -#define COR_E_WAITHANDLECANNOTBEOPENED EMAKEHR(0x152CL) -#define COR_E_ABANDONEDMUTEX EMAKEHR(0x152DL) -#define COR_E_INVALIDOLEVARIANTTYPE EMAKEHR(0x1531L) -#define COR_E_MISSINGMANIFESTRESOURCE EMAKEHR(0x1532L) -#define COR_E_SAFEARRAYTYPEMISMATCH EMAKEHR(0x1533L) -#define COR_E_TYPEINITIALIZATION EMAKEHR(0x1534L) -#define COR_E_MARSHALDIRECTIVE EMAKEHR(0x1535L) -#define COR_E_MISSINGSATELLITEASSEMBLY EMAKEHR(0x1536L) -#define COR_E_FORMAT EMAKEHR(0x1537L) -#define COR_E_SAFEARRAYRANKMISMATCH EMAKEHR(0x1538L) -#define COR_E_PLATFORMNOTSUPPORTED EMAKEHR(0x1539L) -#define COR_E_INVALIDPROGRAM EMAKEHR(0x153AL) -#define COR_E_OPERATIONCANCELED EMAKEHR(0x153BL) -#define COR_E_INSUFFICIENTMEMORY EMAKEHR(0x153DL) -#define COR_E_RUNTIMEWRAPPED EMAKEHR(0x153EL) -#define COR_E_DEVICESNOTSUPPORTED EMAKEHR(0x1540L) -#define COR_E_DATAMISALIGNED EMAKEHR(0x1541L) -#define COR_E_KEYNOTFOUND EMAKEHR(0x1577L) -#define COR_E_APPLICATION EMAKEHR(0x1600L) -#define COR_E_INVALIDFILTERCRITERIA EMAKEHR(0x1601L) -#define COR_E_REFLECTIONTYPELOAD EMAKEHR(0x1602L) -#define COR_E_TARGET EMAKEHR(0x1603L) -#define COR_E_TARGETINVOCATION EMAKEHR(0x1604L) -#define COR_E_CUSTOMATTRIBUTEFORMAT EMAKEHR(0x1605L) -#define COR_E_IO EMAKEHR(0x1620L) -#define COR_E_FILELOAD EMAKEHR(0x1621L) -#define COR_E_OBJECTDISPOSED EMAKEHR(0x1622L) -#define COR_E_FAILFAST EMAKEHR(0x1623L) -#define COR_E_HOSTPROTECTION EMAKEHR(0x1640L) -#define COR_E_ILLEGAL_REENTRANCY EMAKEHR(0x1641L) +#define COR_E_ASSEMBLYEXPECTED EMAKEHR(0x1018) +#define COR_E_TYPEUNLOADED EMAKEHR(0x1013) +#define COR_E_EXCEPTION EMAKEHR(0x1500) +#define COR_E_SYSTEM EMAKEHR(0x1501) +#define COR_E_ARGUMENTOUTOFRANGE EMAKEHR(0x1502) +#define COR_E_ARRAYTYPEMISMATCH EMAKEHR(0x1503) +#define COR_E_CONTEXTMARSHAL EMAKEHR(0x1504) +#define COR_E_TIMEOUT EMAKEHR(0x1505) +#define COR_E_EXECUTIONENGINE EMAKEHR(0x1506) +#define COR_E_FIELDACCESS EMAKEHR(0x1507) +#define COR_E_INDEXOUTOFRANGE EMAKEHR(0x1508) +#define COR_E_INVALIDOPERATION EMAKEHR(0x1509) +#define COR_E_SECURITY EMAKEHR(0x150A) +#define COR_E_REMOTING EMAKEHR(0x150B) +#define COR_E_SERIALIZATION EMAKEHR(0x150C) +#define COR_E_VERIFICATION EMAKEHR(0x150D) +#define COR_E_SERVER EMAKEHR(0x150E) +#define COR_E_SERVICEDCOMPONENT EMAKEHR(0x150F) +#define COR_E_METHODACCESS EMAKEHR(0x1510) +#define COR_E_MISSINGFIELD EMAKEHR(0x1511) +#define COR_E_MISSINGMEMBER EMAKEHR(0x1512) +#define COR_E_MISSINGMETHOD EMAKEHR(0x1513) +#define COR_E_MULTICASTNOTSUPPORTED EMAKEHR(0x1514) +#define COR_E_NOTSUPPORTED EMAKEHR(0x1515) +#define COR_E_OVERFLOW EMAKEHR(0x1516) +#define COR_E_RANK EMAKEHR(0x1517) +#define COR_E_SYNCHRONIZATIONLOCK EMAKEHR(0x1518) +#define COR_E_THREADINTERRUPTED EMAKEHR(0x1519) +#define COR_E_MEMBERACCESS EMAKEHR(0x151A) +#define COR_E_THREADSTATE EMAKEHR(0x1520) +#define COR_E_THREADSTOP EMAKEHR(0x1521) +#define COR_E_TYPELOAD EMAKEHR(0x1522) +#define COR_E_ENTRYPOINTNOTFOUND EMAKEHR(0x1523) +#define COR_E_DLLNOTFOUND EMAKEHR(0x1524) +#define COR_E_THREADSTART EMAKEHR(0x1525) +#define COR_E_INVALIDCOMOBJECT EMAKEHR(0x1527) +#define COR_E_NOTFINITENUMBER EMAKEHR(0x1528) +#define COR_E_DUPLICATEWAITOBJECT EMAKEHR(0x1529) +#define COR_E_SEMAPHOREFULL EMAKEHR(0x152B) +#define COR_E_WAITHANDLECANNOTBEOPENED EMAKEHR(0x152C) +#define COR_E_ABANDONEDMUTEX EMAKEHR(0x152D) +#define COR_E_INVALIDOLEVARIANTTYPE EMAKEHR(0x1531) +#define COR_E_MISSINGMANIFESTRESOURCE EMAKEHR(0x1532) +#define COR_E_SAFEARRAYTYPEMISMATCH EMAKEHR(0x1533) +#define COR_E_TYPEINITIALIZATION EMAKEHR(0x1534) +#define COR_E_MARSHALDIRECTIVE EMAKEHR(0x1535) +#define COR_E_MISSINGSATELLITEASSEMBLY EMAKEHR(0x1536) +#define COR_E_FORMAT EMAKEHR(0x1537) +#define COR_E_SAFEARRAYRANKMISMATCH EMAKEHR(0x1538) +#define COR_E_PLATFORMNOTSUPPORTED EMAKEHR(0x1539) +#define COR_E_INVALIDPROGRAM EMAKEHR(0x153A) +#define COR_E_OPERATIONCANCELED EMAKEHR(0x153B) +#define COR_E_INSUFFICIENTMEMORY EMAKEHR(0x153D) +#define COR_E_RUNTIMEWRAPPED EMAKEHR(0x153E) +#define COR_E_DEVICESNOTSUPPORTED EMAKEHR(0x1540) +#define COR_E_DATAMISALIGNED EMAKEHR(0x1541) +#define COR_E_KEYNOTFOUND EMAKEHR(0x1577) +#define COR_E_APPLICATION EMAKEHR(0x1600) +#define COR_E_INVALIDFILTERCRITERIA EMAKEHR(0x1601) +#define COR_E_REFLECTIONTYPELOAD EMAKEHR(0x1602) +#define COR_E_TARGET EMAKEHR(0x1603) +#define COR_E_TARGETINVOCATION EMAKEHR(0x1604) +#define COR_E_CUSTOMATTRIBUTEFORMAT EMAKEHR(0x1605) +#define COR_E_IO EMAKEHR(0x1620) +#define COR_E_FILELOAD EMAKEHR(0x1621) +#define COR_E_OBJECTDISPOSED EMAKEHR(0x1622) +#define COR_E_FAILFAST EMAKEHR(0x1623) +#define COR_E_HOSTPROTECTION EMAKEHR(0x1640) +#define COR_E_ILLEGAL_REENTRANCY EMAKEHR(0x1641) #define FUSION_E_INVALID_NAME EMAKEHR(0x1047) #define CLDB_E_FILE_OLDVER EMAKEHR(0x1107) +#define CLR_E_SHIM_RUNTIME EMAKEHR(0x1700) +#define CLR_E_SHIM_RUNTIMEEXPORT EMAKEHR(0x1701) + #endif /* __WINE_CORERROR_H */ Modified: trunk/reactos/include/psdk/corhdr.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/corhdr.h?rev=…
============================================================================== --- trunk/reactos/include/psdk/corhdr.h [iso-8859-1] (original) +++ trunk/reactos/include/psdk/corhdr.h [iso-8859-1] Sat Jan 28 11:58:18 2012 @@ -49,10 +49,82 @@ mdtBaseType = 0x72000000, } CorTokenType; +typedef enum CorElementType +{ + ELEMENT_TYPE_END = 0x00, + ELEMENT_TYPE_VOID = 0x01, + ELEMENT_TYPE_BOOLEAN = 0x02, + ELEMENT_TYPE_CHAR = 0x03, + ELEMENT_TYPE_I1 = 0x04, + ELEMENT_TYPE_U1 = 0x05, + ELEMENT_TYPE_I2 = 0x06, + ELEMENT_TYPE_U2 = 0x07, + ELEMENT_TYPE_I4 = 0x08, + ELEMENT_TYPE_U4 = 0x09, + ELEMENT_TYPE_I8 = 0x0a, + ELEMENT_TYPE_U8 = 0x0b, + ELEMENT_TYPE_R4 = 0x0c, + ELEMENT_TYPE_R8 = 0x0d, + ELEMENT_TYPE_STRING = 0x0e, + ELEMENT_TYPE_PTR = 0x0f, + ELEMENT_TYPE_BYREF = 0x10, + ELEMENT_TYPE_VALUETYPE = 0x11, + ELEMENT_TYPE_CLASS = 0x12, + ELEMENT_TYPE_VAR = 0x13, + ELEMENT_TYPE_ARRAY = 0x14, + ELEMENT_TYPE_GENERICINST = 0x15, + ELEMENT_TYPE_TYPEDBYREF = 0x16, + ELEMENT_TYPE_I = 0x18, + ELEMENT_TYPE_U = 0x19, + ELEMENT_TYPE_FNPTR = 0x1b, + ELEMENT_TYPE_OBJECT = 0x1c, + ELEMENT_TYPE_SZARRAY = 0x1d, + ELEMENT_TYPE_MVAR = 0x1e, + ELEMENT_TYPE_CMOD_REQD = 0x1f, + ELEMENT_TYPE_CMOD_OPT = 0x20, + ELEMENT_TYPE_INTERNAL = 0x21, + ELEMENT_TYPE_MAX = 0x22, + ELEMENT_TYPE_MODIFIER = 0x40, + ELEMENT_TYPE_SENTINEL = 0x01 | ELEMENT_TYPE_MODIFIER, + ELEMENT_TYPE_PINNED = 0x05 | ELEMENT_TYPE_MODIFIER, + ELEMENT_TYPE_R4_HFA = 0x06 | ELEMENT_TYPE_MODIFIER, + ELEMENT_TYPE_R8_HFA = 0x07 | ELEMENT_TYPE_MODIFIER, + +} CorElementType; + #define RidToToken(rid,tktype) ((rid) |= (tktype)) #define TokenFromRid(rid,tktype) ((rid) | (tktype)) #define RidFromToken(tk) ((RID)((tk) & 0x00ffffff)) #define TypeFromToken(tk) ((ULONG32)((tk) & 0xff000000)) #define IsNilToken(tk) ((RidFromToken(tk)) == 0) +typedef LPVOID mdScope; +typedef ULONG32 mdToken; + +typedef mdToken mdModule; +typedef mdToken mdTypeRef; +typedef mdToken mdTypeDef; +typedef mdToken mdFieldDef; +typedef mdToken mdMethodDef; +typedef mdToken mdParamDef; +typedef mdToken mdInterfaceImpl; +typedef mdToken mdMemberRef; +typedef mdToken mdCustomAttribute; +typedef mdToken mdPermission; +typedef mdToken mdSignature; +typedef mdToken mdEvent; +typedef mdToken mdProperty; +typedef mdToken mdModuleRef; +typedef mdToken mdAssembly; +typedef mdToken mdAssemblyRef; +typedef mdToken mdFile; +typedef mdToken mdExportedType; +typedef mdToken mdManifestResource; +typedef mdToken mdTypeSpec; +typedef mdToken mdGenericParam; +typedef mdToken mdMethodSpec; +typedef mdToken mdGenericParamConstraint; +typedef mdToken mdString; +typedef mdToken mdCPToken; + #endif /* __WINE_CORHDR_H */ Added: trunk/reactos/include/psdk/metahost.idl URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/metahost.idl?…
============================================================================== --- trunk/reactos/include/psdk/metahost.idl (added) +++ trunk/reactos/include/psdk/metahost.idl [iso-8859-1] Sat Jan 28 11:58:18 2012 @@ -1,0 +1,131 @@ +/* + * Copyright 2010 Vincent Povirk for CodeWeavers + * + * 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 + */ + +import "unknwn.idl"; +import "oaidl.idl"; +import "ocidl.idl"; +import "mscoree.idl"; + +cpp_quote("#ifdef WINE_NO_UNICODE_MACROS") +cpp_quote("#undef LoadLibrary") +cpp_quote("#endif") + +[ + object, + local, + uuid(bd39d1d2-ba2f-486a-89b0-b4b0cb466891) +] +interface ICLRRuntimeInfo : IUnknown +{ + HRESULT GetVersionString( + [out, size_is(*pcchBuffer)] LPWSTR pwzBuffer, + [in, out] DWORD *pcchBuffer); + + HRESULT GetRuntimeDirectory( + [out, size_is(*pcchBuffer)] LPWSTR pwzBuffer, + [in, out] DWORD *pcchBuffer); + + HRESULT IsLoaded( + [in] HANDLE hndProcess, + [out, retval] BOOL *pbLoaded); + + HRESULT LoadErrorString( + [in] UINT iResourceID, + [out, size_is(*pcchBuffer)] LPWSTR pwzBuffer, + [in, out] DWORD *pcchBuffer, + [in] LONG iLocaleid); + + HRESULT LoadLibrary( + [in] LPCWSTR pwzDllName, + [out, retval] HMODULE *phndModule); + + HRESULT GetProcAddress( + [in] LPCSTR pszProcName, + [out, retval] LPVOID *ppProc); + + HRESULT GetInterface( + [in] REFCLSID rclsid, + [in] REFIID riid, + [out, iid_is(riid), retval] LPVOID *ppUnk); + + HRESULT IsLoadable( + [out, retval] BOOL *pbLoadable); + + HRESULT SetDefaultStartupFlags( + [in] DWORD dwStartupFlags, + [in] LPCWSTR pwzHostConfigFile); + + HRESULT GetDefaultStartupFlags( + [out] DWORD *pdwStartupFlags, + [out, size_is(*pcchHostConfigFile)] LPWSTR pwzHostConfigFile, + [in, out] DWORD *pcchHostConfigFile); + + HRESULT BindAsLegacyV2Runtime(); + + HRESULT IsStarted( + [out] BOOL *pbStarted, + [out] DWORD *pdwStartupFlags); +}; + +typedef HRESULT (__stdcall *CallbackThreadSetFnPtr)(); +typedef HRESULT (__stdcall *CallbackThreadUnsetFnPtr)(); + +typedef void (__stdcall *RuntimeLoadedCallbackFnPtr)( + ICLRRuntimeInfo *pRuntimeInfo, + CallbackThreadSetFnPtr pfnCallbackThreadSet, + CallbackThreadUnsetFnPtr pfnCallbackThreadUnset); + +cpp_quote("DEFINE_GUID(CLSID_CLRDebuggingLegacy, 0xDF8395B5,0xA4BA,0x450b,0xA7,0x7C,0xA9,0xA4,0x77,0x62,0xC5,0x20);") +cpp_quote("DEFINE_GUID(CLSID_CLRMetaHost, 0x9280188d,0x0e8e,0x4867,0xb3,0x0c,0x7f,0xa8,0x38,0x84,0xe8,0xde);") + +[ + object, + local, + uuid(d332db9e-b9b3-4125-8207-a14884f53216) +] +interface ICLRMetaHost : IUnknown +{ + HRESULT GetRuntime( + [in] LPCWSTR pwzVersion, + [in] REFIID iid, + [out, iid_is(iid), retval] LPVOID *ppRuntime); + + HRESULT GetVersionFromFile( + [in] LPCWSTR pwzFilePath, + [out, size_is(*pcchBuffer)] LPWSTR pwzBuffer, + [in, out] DWORD *pcchBuffer); + + HRESULT EnumerateInstalledRuntimes( + [out, retval] IEnumUnknown **ppEnumerator); + + HRESULT EnumerateLoadedRuntimes( + [in] HANDLE hndProcess, + [out, retval] IEnumUnknown **ppEnumerator); + + HRESULT RequestRuntimeLoadedNotification( + [in] RuntimeLoadedCallbackFnPtr pCallbackFunction); + + HRESULT QueryLegacyV2RuntimeBinding( + [in] REFIID riid, + [out, iid_is(riid), retval] LPVOID *ppUnk); + + HRESULT ExitProcess( + [in] INT32 iExitCode); +}; + +cpp_quote("HRESULT WINAPI CLRCreateInstance(REFCLSID clsid, REFIID riid, LPVOID *ppInterface);") Propchange: trunk/reactos/include/psdk/metahost.idl ------------------------------------------------------------------------------ svn:eol-style = native Modified: trunk/reactos/include/psdk/mscoree.idl URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/mscoree.idl?r…
============================================================================== --- trunk/reactos/include/psdk/mscoree.idl [iso-8859-1] (original) +++ trunk/reactos/include/psdk/mscoree.idl [iso-8859-1] Sat Jan 28 11:58:18 2012 @@ -224,3 +224,17 @@ [in] LPCWSTR pwzArgument, [out] DWORD *pReturnValue); } + +[ + uuid(C3FCC19E-A970-11d2-8B5A-00A0C9B7C9C4), + local, + object +] +interface IManagedObject : IUnknown +{ + HRESULT GetSerializedBuffer([out] BSTR *pBSTR); + + HRESULT GetObjectIdentity([out] BSTR *pBSTRGUID, + [out] int *AppDomainID, + [out] int *pCCW); +} Modified: trunk/reactos/include/psdk/psdk.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/psdk.rbuild?r…
============================================================================== --- trunk/reactos/include/psdk/psdk.rbuild [iso-8859-1] (original) +++ trunk/reactos/include/psdk/psdk.rbuild [iso-8859-1] Sat Jan 28 11:58:18 2012 @@ -13,6 +13,8 @@ <file>bits.idl</file> <file>commoncontrols.idl</file> <file>control.idl</file> + <file>cor.idl</file> + <file>cordebug.idl</file> <file>ctfutb.idl</file> <file>ctxtcall.idl</file> <file>dimm.idl</file> @@ -27,8 +29,10 @@ <file>imnact.idl</file> <file>imnxport.idl</file> <file>indexsrv.idl</file> + <file>metahost.idl</file> <file>mimeinfo.idl</file> <file>mlang.idl</file> + <file>mscoree.idl</file> <file>msctf.idl</file> <file>msdadc.idl</file> <file>mshtml.idl</file> Modified: trunk/reactos/include/psdk/winsxs.idl URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/winsxs.idl?re…
============================================================================== --- trunk/reactos/include/psdk/winsxs.idl [iso-8859-1] (original) +++ trunk/reactos/include/psdk/winsxs.idl [iso-8859-1] Sat Jan 28 11:58:18 2012 @@ -17,6 +17,7 @@ */ import "objidl.idl"; +import "oleidl.idl"; interface IAssemblyCache; interface IAssemblyCacheItem;
12 years, 11 months
1
0
0
0
[akhaldi] 55271: [NTPRINT_WINETEST] * Sync to Wine 1.3.37.
by akhaldi@svn.reactos.org
Author: akhaldi Date: Sat Jan 28 10:29:55 2012 New Revision: 55271 URL:
http://svn.reactos.org/svn/reactos?rev=55271&view=rev
Log: [NTPRINT_WINETEST] * Sync to Wine 1.3.37. Modified: trunk/rostests/winetests/ntprint/ntprint.c Modified: trunk/rostests/winetests/ntprint/ntprint.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/ntprint/ntprint…
============================================================================== --- trunk/rostests/winetests/ntprint/ntprint.c [iso-8859-1] (original) +++ trunk/rostests/winetests/ntprint/ntprint.c [iso-8859-1] Sat Jan 28 10:29:55 2012 @@ -214,14 +214,7 @@ START_TEST(ntprint) { - LPCSTR ptr; - - /* ntprint.dll does not exist on win9x */ - ptr = load_functions(); - if (ptr) { - skip("%s not found\n", ptr); - return; - } + load_functions(); test_PSetupCreateMonitorInfo(); test_PSetupDestroyMonitorInfo();
12 years, 11 months
1
0
0
0
[akhaldi] 55270: [NTPRINT] * Sync to Wine 1.3.37.
by akhaldi@svn.reactos.org
Author: akhaldi Date: Sat Jan 28 10:29:40 2012 New Revision: 55270 URL:
http://svn.reactos.org/svn/reactos?rev=55270&view=rev
Log: [NTPRINT] * Sync to Wine 1.3.37. Modified: trunk/reactos/dll/win32/ntprint/ntprint.c trunk/reactos/dll/win32/ntprint/ntprint.rc trunk/reactos/media/doc/README.WINE Modified: trunk/reactos/dll/win32/ntprint/ntprint.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ntprint/ntprint.…
============================================================================== --- trunk/reactos/dll/win32/ntprint/ntprint.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ntprint/ntprint.c [iso-8859-1] Sat Jan 28 10:29:40 2012 @@ -36,7 +36,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(ntprint); -HINSTANCE NTPRINT_hInstance = NULL; +static HINSTANCE NTPRINT_hInstance = NULL; typedef struct { LPMONITOR_INFO_2W mi2; /* Buffer for installed Monitors */ Modified: trunk/reactos/dll/win32/ntprint/ntprint.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ntprint/ntprint.…
============================================================================== --- trunk/reactos/dll/win32/ntprint/ntprint.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ntprint/ntprint.rc [iso-8859-1] Sat Jan 28 10:29:40 2012 @@ -19,9 +19,6 @@ * */ -#include "windef.h" -#include "winbase.h" -#include "winuser.h" #include "winver.h" #define WINE_FILENAME_STR "ntprint.dll" Modified: trunk/reactos/media/doc/README.WINE URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=…
============================================================================== --- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original) +++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Sat Jan 28 10:29:40 2012 @@ -118,7 +118,7 @@ reactos/dll/win32/nddeapi # Synced to Wine-1.3.37 reactos/dll/win32/netapi32 # Autosync reactos/dll/win32/ntdsapi # Autosync -reactos/dll/win32/ntprint # Autosync +reactos/dll/win32/ntprint # Synced to Wine-1.3.37 reactos/dll/win32/objsel # Synced to Wine-1.3.37 reactos/dll/win32/odbc32 # Out of sync. Depends on port of Linux ODBC. reactos/dll/win32/odbccp32 # Autosync
12 years, 11 months
1
0
0
0
[akhaldi] 55269: [MOUNTMGR] * Silence some gcc warnings.
by akhaldi@svn.reactos.org
Author: akhaldi Date: Fri Jan 27 23:11:19 2012 New Revision: 55269 URL:
http://svn.reactos.org/svn/reactos?rev=55269&view=rev
Log: [MOUNTMGR] * Silence some gcc warnings. Modified: branches/usb-bringup-trunk/drivers/filters/mountmgr/mountmgr.c Modified: branches/usb-bringup-trunk/drivers/filters/mountmgr/mountmgr.c URL:
http://svn.reactos.org/svn/reactos/branches/usb-bringup-trunk/drivers/filte…
============================================================================== --- branches/usb-bringup-trunk/drivers/filters/mountmgr/mountmgr.c [iso-8859-1] (original) +++ branches/usb-bringup-trunk/drivers/filters/mountmgr/mountmgr.c [iso-8859-1] Fri Jan 27 23:11:19 2012 @@ -658,7 +658,7 @@ NTSTATUS Status; PLIST_ENTRY NextEntry; UNICODE_STRING DeviceName; - PDEVICE_INFORMATION DeviceInfo; + PDEVICE_INFORMATION DeviceInfo = NULL; /* If a device name was given, use it */ if (DeviceNameGiven) @@ -1464,7 +1464,7 @@ PUNIQUE_ID_REPLICATE UniqueIdReplicate; PSYMLINK_INFORMATION SymlinkInformation; PASSOCIATED_DEVICE_ENTRY AssociatedDevice; - PSAVED_LINK_INFORMATION SavedLinkInformation; + PSAVED_LINK_INFORMATION SavedLinkInformation = NULL; PDEVICE_INFORMATION DeviceInformation, CurrentDevice; /* Acquire device exclusively */
12 years, 11 months
1
0
0
0
[akhaldi] 55268: [MSISIP] * Sync to Wine 1.3.37.
by akhaldi@svn.reactos.org
Author: akhaldi Date: Fri Jan 27 23:08:50 2012 New Revision: 55268 URL:
http://svn.reactos.org/svn/reactos?rev=55268&view=rev
Log: [MSISIP] * Sync to Wine 1.3.37. Modified: trunk/reactos/dll/win32/msisip/main.c trunk/reactos/media/doc/README.WINE Modified: trunk/reactos/dll/win32/msisip/main.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msisip/main.c?re…
============================================================================== --- trunk/reactos/dll/win32/msisip/main.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/msisip/main.c [iso-8859-1] Fri Jan 27 23:08:50 2012 @@ -24,6 +24,7 @@ #include "mssip.h" #define COBJMACROS #include "objbase.h" +#include "initguid.h" #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(msisip); @@ -217,34 +218,39 @@ return ret; } +DEFINE_GUID(CLSID_MsiTransform, 0x000c1082,0x0000,0x0000,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46); +DEFINE_GUID(CLSID_MsiDatabase, 0x000c1084,0x0000,0x0000,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46); +DEFINE_GUID(CLSID_MsiPatch, 0x000c1086,0x0000,0x0000,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46); + /*********************************************************************** * MsiSIPIsMyTypeOfFile (MSISIP.@) */ BOOL WINAPI MsiSIPIsMyTypeOfFile(WCHAR *name, GUID *subject) { - static const WCHAR msi[] = { '.','m','s','i',0 }; - static const WCHAR msp[] = { '.','m','s','p',0 }; BOOL ret = FALSE; + IStorage *stg = NULL; + HRESULT r; TRACE("(%s, %p)\n", debugstr_w(name), subject); - if (lstrlenW(name) < lstrlenW(msi)) - return FALSE; - else if (lstrcmpiW(name + lstrlenW(name) - lstrlenW(msi), msi) && - lstrcmpiW(name + lstrlenW(name) - lstrlenW(msp), msp)) - return FALSE; - else - { - IStorage *stg = NULL; - HRESULT r = StgOpenStorage(name, NULL, - STGM_DIRECT|STGM_READ|STGM_SHARE_DENY_WRITE, NULL, 0, &stg); - + r = StgOpenStorage(name, NULL, STGM_DIRECT|STGM_READ|STGM_SHARE_DENY_WRITE, + NULL, 0, &stg); + if (SUCCEEDED(r)) + { + STATSTG stat; + + r = IStorage_Stat(stg, &stat, STATFLAG_NONAME); if (SUCCEEDED(r)) { - IStorage_Release(stg); - *subject = mySubject; - ret = TRUE; - } + if (IsEqualGUID(&stat.clsid, &CLSID_MsiDatabase) || + IsEqualGUID(&stat.clsid, &CLSID_MsiPatch) || + IsEqualGUID(&stat.clsid, &CLSID_MsiTransform)) + { + ret = TRUE; + *subject = mySubject; + } + } + IStorage_Release(stg); } return ret; } Modified: trunk/reactos/media/doc/README.WINE URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=…
============================================================================== --- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original) +++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Fri Jan 27 23:08:50 2012 @@ -104,7 +104,7 @@ reactos/dll/win32/msimg32 # Autosync reactos/dll/win32/msi # Autosync reactos/dll/win32/msimtf # Autosync -reactos/dll/win32/msisip # Autosync +reactos/dll/win32/msisip # Synced to Wine-1.3.37 reactos/dll/win32/msisys.ocx # Autosync reactos/dll/win32/msnet32 # Autosync reactos/dll/win32/msrle32 # Autosync
12 years, 11 months
1
0
0
0
← Newer
1
...
6
7
8
9
10
11
12
...
56
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
50
51
52
53
54
55
56
Results per page:
10
25
50
100
200