[FRAMEDYN]

Partplement framedyn.dll
So far, only CHString class is implemented in it

Regarding CHString class implementation:
It has been implemented matching Windows behavior and bugs
It might not be really nice at some points but this ensures
compatibility with applications relying on it.
As a side note: this might explain why this API was abandonned after w2k3...

Regarding the DLL itself:
Its implementation into ReactOS allows systeminfo.exe application from w2k3 to
load and start initialization into ReactOS. It stops working later on with some
IDispatch error.
The DLL cannot be used to build any application against framedyn.dll with our "default" BE (read with G++).
Only MSVC mangled name are exported so far (as on Windows ;-)) thanks to aliasing. This is why there are two spec files.
This makes G++ unable to link with it though. This is the reason why there are no framedyn_apitests so far.
Furthermore, the DLL only have exports for x86 and none for x64 for the moment.

Any help is welcome for having exports for x64 target and to be able to have aliasing for G++ (from its mangled names
to MSVC ones).

svn path=/trunk/; revision=59940
This commit is contained in:
Pierre Schweitzer 2013-09-01 14:48:09 +00:00
parent dd724bbd3c
commit f570a3d1ff
6 changed files with 1617 additions and 0 deletions

View file

@ -39,6 +39,7 @@ add_subdirectory(dnsapi)
add_subdirectory(dwmapi)
add_subdirectory(faultrep)
add_subdirectory(fmifs)
add_subdirectory(framedyn)
add_subdirectory(fusion)
add_subdirectory(gdiplus)
add_subdirectory(getuname)

View file

@ -0,0 +1,31 @@
set_cpp(WITH_RUNTIME)
if(NOT MSVC)
spec2def(framedyn.dll framedyn_gcc.spec ADD_IMPORTLIB)
else()
spec2def(framedyn.dll framedyn_msvc.spec ADD_IMPORTLIB)
endif()
list(APPEND SOURCE
main.c
chstring.cpp
${CMAKE_CURRENT_BINARY_DIR}/framedyn.def)
add_library(framedyn SHARED
${SOURCE})
set_module_type(framedyn win32dll UNICODE)
add_importlibs(framedyn
msvcrt
kernel32
oleaut32
ntdll)
if(NOT MSVC)
# FIXME: http://www.cmake.org/Bug/view.php?id=12998
#add_target_compile_flags(framedyn "-fexceptions -Wno-deprecated-declarations")
set_source_files_properties(${SOURCE} PROPERTIES COMPILE_FLAGS "-fexceptions -Wno-deprecated-declarations")
endif()
add_cd_file(TARGET framedyn DESTINATION reactos/system32/wbem FOR all)

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,76 @@
@ thiscall ?AllocBeforeWrite@CHString@@IAEXH@Z(long) _ZN8CHString16AllocBeforeWriteEi
@ thiscall ?AllocBuffer@CHString@@IAEXH@Zlong(long) _ZN8CHString11AllocBufferEi
@ thiscall ?AllocCopy@CHString@@IBEXAAV1@HHH@Z(ptr long long long) _ZNK8CHString9AllocCopyERS_iii
@ thiscall ?AllocSysString@CHString@@QBEPAGXZ() _ZNK8CHString14AllocSysStringEv
@ thiscall ?AssignCopy@CHString@@IAEXHPBG@Z(long wstr) _ZN8CHString10AssignCopyEiPKw
@ thiscall ??0CHString@@QAE@ABV0@@Z(ptr) _ZN8CHStringC2ERKS_
@ thiscall ??0CHString@@QAE@PBD@Z(str) _ZN8CHStringC2EPKc
@ thiscall ??0CHString@@QAE@PBE@Z(str) _ZN8CHStringC2EPKh
@ thiscall ??0CHString@@QAE@PBG@Z(wstr) _ZN8CHStringC2EPKw
@ thiscall ??0CHString@@QAE@PBGH@Z(wstr long) _ZN8CHStringC2EPKwi
@ thiscall ??0CHString@@QAE@GH@Z(long long) _ZN8CHStringC2Ewi
@ thiscall ??0CHString@@QAE@XZ() _ZN8CHStringC2Ev
@ thiscall ?Collate@CHString@@QBEHPBG@Z(wstr) _ZNK8CHString7CollateEPKw
@ thiscall ?Compare@CHString@@QBEHPBG@Z(wstr) _ZNK8CHString7CompareEPKw
@ thiscall ?CompareNoCase@CHString@@QBEHPBG@Z(wstr) _ZNK8CHString13CompareNoCaseEPKw
@ thiscall ?ConcatCopy@CHString@@IAEXHPBGH0@Z(long wstr long wstr) _ZN8CHString10ConcatCopyEiPKwiS1_
@ thiscall ?ConcatInPlace@CHString@@IAEXHPBG@Z(long wstr) _ZN8CHString13ConcatInPlaceEiPKw
@ thiscall ?CopyBeforeWrite@CHString@@IAEXXZ() _ZN8CHString15CopyBeforeWriteEv
@ thiscall ?Empty@CHString@@QAEXXZ() _ZN8CHString5EmptyEv
@ thiscall ?Find@CHString@@QBEHPBG@Z(wstr) _ZNK8CHString4FindEPKw
@ thiscall ?Find@CHString@@QBEHG@Z(long) _ZNK8CHString4FindEw
@ thiscall ?FindOneOf@CHString@@QBEHPBG@Z(wstr) _ZNK8CHString9FindOneOfEPKw
@ thiscall ?Format@CHString@@QAAXIZZ(long long long) _ZN8CHString6FormatEjz
@ thiscall ?Format@CHString@@QAAXPBGZZ(long wstr long) _ZN8CHString6FormatEPKwz
@ thiscall ?FormatMessageW@CHString@@QAAXIZZ(long long long) _ZN8CHString14FormatMessageWEjz
@ thiscall ?FormatMessageW@CHString@@QAAXPBGZZ(long ptr long) _ZN8CHString14FormatMessageWEPKwz
@ thiscall ?FormatV@CHString@@QAEXPBGPAD@Z(wstr long) _ZN8CHString7FormatVEPKwPc
@ thiscall ?FreeExtra@CHString@@QAEXXZ() _ZN8CHString9FreeExtraEv
@ thiscall ?GetAllocLength@CHString@@QBEHXZ() _ZNK8CHString14GetAllocLengthEv
@ thiscall ?GetAt@CHString@@QBEGH@Z(long) _ZNK8CHString5GetAtEi
@ thiscall ?GetBuffer@CHString@@QAEPAGH@Z(long) _ZN8CHString9GetBufferEi
@ thiscall ?GetBufferSetLength@CHString@@QAEPAGH@Z(long) _ZN8CHString18GetBufferSetLengthEi
@ thiscall ?GetData@CHString@@IBEPAUCHStringData@@XZ() _ZNK8CHString7GetDataEv
@ thiscall ?GetLength@CHString@@QBEHXZ() _ZNK8CHString9GetLengthEv
@ thiscall ?Init@CHString@@IAEXXZ() _ZN8CHString4InitEv
@ thiscall ?IsEmpty@CHString@@QBEHXZ() _ZNK8CHString7IsEmptyEv
@ thiscall ?Left@CHString@@QBE?AV1@H@Z(long) _ZNK8CHString4LeftEi
@ thiscall ?LoadStringW@CHString@@QAEHI@Z(long) _ZN8CHString11LoadStringWEj
@ thiscall ?LoadStringW@CHString@@IAEHIPAGI@Z(long wstr long) _ZN8CHString11LoadStringWEjPwj
@ thiscall ?LockBuffer@CHString@@QAEPAGXZ() _ZN8CHString10LockBufferEv
@ thiscall ?MakeLower@CHString@@QAEXXZ() _ZN8CHString9MakeLowerEv
@ thiscall ?MakeReverse@CHString@@QAEXXZ() _ZN8CHString11MakeReverseEv
@ thiscall ?MakeUpper@CHString@@QAEXXZ() _ZN8CHString9MakeUpperEv
@ thiscall ?Mid@CHString@@QBE?AV1@H@Z(long) _ZNK8CHString3MidEi
@ thiscall ?Mid@CHString@@QBE?AV1@HH@Z(long long) _ZNK8CHString3MidEii
@ thiscall ?Release@CHString@@KGXPAUCHStringData@@@Z(ptr) _ZN8CHString7ReleaseEP12CHStringData
@ thiscall ?Release@CHString@@IAEXXZ() _ZN8CHString7ReleaseEv
@ thiscall ?ReleaseBuffer@CHString@@QAEXH@Z(long) _ZN8CHString13ReleaseBufferEi
@ thiscall ?ReverseFind@CHString@@QBEHG@Z(long) _ZNK8CHString11ReverseFindEw
@ thiscall ?Right@CHString@@QBE?AV1@H@Z(long) _ZNK8CHString5RightEi
@ stdcall ?SafeStrlen@CHString@@KGHPBG@Z(wstr) _ZN8CHString10SafeStrlenEPKw
@ thiscall ?SetAt@CHString@@QAEXHG@Z(long long) _ZN8CHString5SetAtEiw
@ thiscall ?SpanExcluding@CHString@@QBE?AV1@PBG@Z(long wstr) _ZNK8CHString13SpanExcludingEPKw
@ thiscall ?SpanIncluding@CHString@@QBE?AV1@PBG@Z(long wstr) _ZNK8CHString13SpanIncludingEPKw
@ thiscall ?TrimLeft@CHString@@QAEXXZ() _ZN8CHString8TrimLeftEv
@ thiscall ?TrimRight@CHString@@QAEXXZ() _ZN8CHString9TrimRightEv
@ thiscall ?UnlockBuffer@CHString@@QAEXXZ() _ZN8CHString12UnlockBufferEv
@ thiscall ??BCHString@@QBEPBGXZ(ptr) _ZN8CHStringcvPwEv
@ thiscall ??YCHString@@QAEABV0@ABV0@@Z(ptr) _ZN8CHStringpLERKS_
@ thiscall ??YCHString@@QAEABV0@D@Z(long) _ZN8CHStringpLEc
@ thiscall ??YCHString@@QAEABV0@PBG@Z(wstr) _ZN8CHStringpLEPKw
@ thiscall ??YCHString@@QAEABV0@G@Z(long) _ZN8CHStringpLEw
@ thiscall ??4CHString@@QAEABV0@PAV0@@Z(ptr) _ZN8CHStringaSEPS_
@ thiscall ??4CHString@@QAEABV0@ABV0@@Z(ptr) _ZN8CHStringaSERKS_
@ thiscall ??4CHString@@QAEABV0@PBD@Z(str) _ZN8CHStringaSEPKc
@ thiscall ??4CHString@@QAEABV0@D@Z(long) _ZN8CHStringaSEc
@ thiscall ??4CHString@@QAEABV0@PBE@Z(str) _ZN8CHStringaSEPKh
@ thiscall ??4CHString@@QAEABV0@PBG@Z(wstr) _ZN8CHStringaSEPKw
@ thiscall ??4CHString@@QAEABV0@G@Z(long) _ZN8CHStringaSEw
@ thiscall ??ACHString@@QBEGH@Z(long) _ZNK8CHStringixEi
@ thiscall ??1CHString@@QAE@XZ() _ZN8CHStringD2Ev
@ stdcall ??H@YG?AVCHString@@GABV0@@Z(long ptr) _ZplwRK8CHString
@ stdcall ??H@YG?AVCHString@@ABV0@G@Z(ptr long) _ZplRK8CHStringw
@ stdcall ??H@YG?AVCHString@@ABV0@PBG@Z(ptr wstr) _ZplRK8CHStringPKw
@ stdcall ??H@YG?AVCHString@@PBGABV0@@Z(wstr ptr) _ZplPKwRK8CHString
@ stdcall ??H@YG?AVCHString@@ABV0@0@Z(ptr ptr) _ZplRK8CHStringS1_

View file

@ -0,0 +1,76 @@
@ thiscall ?AllocBeforeWrite@CHString@@IAEXH@Z(long)
@ thiscall ?AllocBuffer@CHString@@IAEXH@Zlong(long)
@ thiscall ?AllocCopy@CHString@@IBEXAAV1@HHH@Z(ptr long long long)
@ thiscall ?AllocSysString@CHString@@QBEPAGXZ()
@ thiscall ?AssignCopy@CHString@@IAEXHPBG@Z(long wstr)
@ thiscall ??0CHString@@QAE@ABV0@@Z(ptr)
@ thiscall ??0CHString@@QAE@PBD@Z(str)
@ thiscall ??0CHString@@QAE@PBE@Z(str)
@ thiscall ??0CHString@@QAE@PBG@Z(wstr)
@ thiscall ??0CHString@@QAE@PBGH@Z(wstr long)
@ thiscall ??0CHString@@QAE@GH@Z(long long)
@ thiscall ??0CHString@@QAE@XZ()
@ thiscall ?Collate@CHString@@QBEHPBG@Z(wstr)
@ thiscall ?Compare@CHString@@QBEHPBG@Z(wstr)
@ thiscall ?CompareNoCase@CHString@@QBEHPBG@Z(wstr)
@ thiscall ?ConcatCopy@CHString@@IAEXHPBGH0@Z(long wstr long wstr)
@ thiscall ?ConcatInPlace@CHString@@IAEXHPBG@Z(long wstr)
@ thiscall ?CopyBeforeWrite@CHString@@IAEXXZ()
@ thiscall ?Empty@CHString@@QAEXXZ()
@ thiscall ?Find@CHString@@QBEHPBG@Z(wstr)
@ thiscall ?Find@CHString@@QBEHG@Z(long)
@ thiscall ?FindOneOf@CHString@@QBEHPBG@Z(wstr)
@ thiscall ?Format@CHString@@QAAXIZZ(long long long)
@ thiscall ?Format@CHString@@QAAXPBGZZ(long wstr long)
@ thiscall ?FormatMessageW@CHString@@QAAXIZZ(long long long)
@ thiscall ?FormatMessageW@CHString@@QAAXPBGZZ(long ptr long)
@ thiscall ?FormatV@CHString@@QAEXPBGPAD@Z(wstr long)
@ thiscall ?FreeExtra@CHString@@QAEXXZ()
@ thiscall ?GetAllocLength@CHString@@QBEHXZ()
@ thiscall ?GetAt@CHString@@QBEGH@Z(long)
@ thiscall ?GetBuffer@CHString@@QAEPAGH@Z(long)
@ thiscall ?GetBufferSetLength@CHString@@QAEPAGH@Z(long)
@ thiscall ?GetData@CHString@@IBEPAUCHStringData@@XZ()
@ thiscall ?GetLength@CHString@@QBEHXZ()
@ thiscall ?Init@CHString@@IAEXXZ()
@ thiscall ?IsEmpty@CHString@@QBEHXZ()
@ thiscall ?Left@CHString@@QBE?AV1@H@Z(long)
@ thiscall ?LoadStringW@CHString@@QAEHI@Z(long)
@ thiscall ?LoadStringW@CHString@@IAEHIPAGI@Z(long wstr long)
@ thiscall ?LockBuffer@CHString@@QAEPAGXZ()
@ thiscall ?MakeLower@CHString@@QAEXXZ()
@ thiscall ?MakeReverse@CHString@@QAEXXZ()
@ thiscall ?MakeUpper@CHString@@QAEXXZ()
@ thiscall ?Mid@CHString@@QBE?AV1@H@Z(long)
@ thiscall ?Mid@CHString@@QBE?AV1@HH@Z(long long)
@ thiscall ?Release@CHString@@KGXPAUCHStringData@@@Z(ptr)
@ thiscall ?Release@CHString@@IAEXXZ()
@ thiscall ?ReleaseBuffer@CHString@@QAEXH@Z(long)
@ thiscall ?ReverseFind@CHString@@QBEHG@Z(long)
@ thiscall ?Right@CHString@@QBE?AV1@H@Z(long)
@ stdcall ?SafeStrlen@CHString@@KGHPBG@Z(wstr)
@ thiscall ?SetAt@CHString@@QAEXHG@Z(long long)
@ thiscall ?SpanExcluding@CHString@@QBE?AV1@PBG@Z(long wstr)
@ thiscall ?SpanIncluding@CHString@@QBE?AV1@PBG@Z(long wstr)
@ thiscall ?TrimLeft@CHString@@QAEXXZ()
@ thiscall ?TrimRight@CHString@@QAEXXZ()
@ thiscall ?UnlockBuffer@CHString@@QAEXXZ()
@ thiscall ??BCHString@@QBEPBGXZ(ptr)
@ thiscall ??YCHString@@QAEABV0@ABV0@@Z(ptr)
@ thiscall ??YCHString@@QAEABV0@D@Z(long)
@ thiscall ??YCHString@@QAEABV0@PBG@Z(wstr)
@ thiscall ??YCHString@@QAEABV0@G@Z(long)
@ thiscall ??4CHString@@QAEABV0@PAV0@@Z(ptr)
@ thiscall ??4CHString@@QAEABV0@ABV0@@Z(ptr)
@ thiscall ??4CHString@@QAEABV0@PBD@Z(str)
@ thiscall ??4CHString@@QAEABV0@D@Z(long)
@ thiscall ??4CHString@@QAEABV0@PBE@Z(str)
@ thiscall ??4CHString@@QAEABV0@PBG@Z(wstr)
@ thiscall ??4CHString@@QAEABV0@G@Z(long)
@ thiscall ??ACHString@@QBEGH@Z(long)
@ thiscall ??1CHString@@QAE@XZ()
@ stdcall ??H@YG?AVCHString@@GABV0@@Z(long ptr)
@ stdcall ??H@YG?AVCHString@@ABV0@G@Z(ptr long)
@ stdcall ??H@YG?AVCHString@@ABV0@PBG@Z(ptr wstr)
@ stdcall ??H@YG?AVCHString@@PBGABV0@@Z(wstr ptr)
@ stdcall ??H@YG?AVCHString@@ABV0@0@Z(ptr ptr)

View file

@ -0,0 +1,27 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS system libraries
* FILE: dll/win32/framedyn/main.c
* PURPOSE: framedyn entry point
* PROGRAMMERS: Pierre Schweitzer (pierre@reactos.org)
*
*/
/* INCLUDES ******************************************************************/
#include <windows.h>
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
DisableThreadLibraryCalls(hinstDLL);
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}