On November 1, 2002 01:39 pm, Alexandre Julliard wrote:
Actually the linker hacks have to be on top of the dll separation. But it could be possible to do them for already separated dlls so that we can get rid of init everywhere except in kernel/ntdll. I'll try that.
Well, maybe the "dll separation" term is overloaded. One way to understand it is that DLLs export all their external functions through the .spec file. And yes, we are not that far away from doing that. What I was referring to is the elimination of the internal functions exported in .spec files.
So for example, in the first interpretation, USER is separated, but in the second, it's not, because of these:
################################################################ # Wine extensions: Win16 functions that are needed by other dlls # @ stdcall CallWindowProc16(long long long long long) CallWindowProc16 @ stdcall CloseDriver16(long long long) CloseDriver16 @ stdcall CreateDialogIndirectParam16(long ptr long long long) CreateDialogIndirectParam16 @ stdcall DefDriverProc16(long long long long long) DefDriverProc16 @ stdcall DestroyIcon32(long long) DestroyIcon32 @ stdcall DialogBoxIndirectParam16(long long long long long) DialogBoxIndirectParam16 @ stdcall GetDriverModuleHandle16(long) GetDriverModuleHandle16 @ stdcall OpenDriver16(str str long) OpenDriver16 @ stdcall PostAppMessage16(long long long long) PostAppMessage16 @ stdcall SendDriverMessage16(long long long long) SendDriverMessage16 @ stdcall UserYield16() UserYield16
################################################################ # Wine dll separation hacks, these will go away, don't use them # @ cdecl CLIPBOARD_DeleteRecord(ptr long) CLIPBOARD_DeleteRecord @ cdecl CLIPBOARD_EmptyCache(long) CLIPBOARD_EmptyCache @ cdecl CLIPBOARD_GetFormatName(long ptr long) CLIPBOARD_GetFormatName @ cdecl CLIPBOARD_IsPresent(long) CLIPBOARD_IsPresent @ cdecl CLIPBOARD_LookupFormat(long) CLIPBOARD_LookupFormat @ cdecl CLIPBOARD_ReleaseOwner() CLIPBOARD_ReleaseOwner @ cdecl DCE_InvalidateDCE(long ptr) DCE_InvalidateDCE @ cdecl HOOK_CallHooksA(long long long long) HOOK_CallHooksA @ cdecl HOOK_CallHooksW(long long long long) HOOK_CallHooksW @ cdecl HOOK_IsHooked(long) HOOK_IsHooked @ cdecl NC_GetInsideRect(long ptr) NC_GetInsideRect @ cdecl NC_HandleNCHitTest(long long long) NC_HandleNCHitTest @ cdecl NC_HandleSetCursor(long long long) NC_HandleSetCursor @ cdecl USER_Unlock() USER_Unlock @ cdecl WINPOS_ActivateOtherWindow(long) WINPOS_ActivateOtherWindow @ cdecl WINPOS_GetMinMaxInfo(long ptr ptr ptr ptr) WINPOS_GetMinMaxInfo @ cdecl WINPOS_ShowIconTitle(long long) WINPOS_ShowIconTitle @ cdecl WIN_FindWndPtr(long) WIN_FindWndPtr @ cdecl WIN_GetPtr(long) WIN_GetPtr @ cdecl WIN_Handle32(long) WIN_Handle32 @ cdecl WIN_LinkWindow(long long long) WIN_LinkWindow @ cdecl WIN_ListChildren(long) WIN_ListChildren @ cdecl WIN_ListParents(long) WIN_ListParents @ cdecl WIN_ReleaseWndPtr(ptr) WIN_ReleaseWndPtr @ cdecl WIN_RestoreWndsLock(long) WIN_RestoreWndsLock @ cdecl WIN_SetExStyle(long long) WIN_SetExStyle @ cdecl WIN_SetRectangles(long ptr ptr) WIN_SetRectangles @ cdecl WIN_SetStyle(long long) WIN_SetStyle @ cdecl WIN_SuspendWndsLock() WIN_SuspendWndsLock @ cdecl WIN_UnlinkWindow(long) WIN_UnlinkWindow
Anyhow, having the init stuff eliminated from all but ntdll/kernel would be ubercool, thank you! If you do it, maybe you should add a "Temporary hack, we'll go away soon" comment for those 2 inits left, so that people know it's not a feature, and don't use it in their apps.