dlls/shell32/control.c contains some 16-bit code (function RunDLL_CallEntry16), which I would like to separate out. I wonder if the attached patch is the correct way to do that? On Win2k export 122 is just a stub. Maybe it would be ok to turn our export 122 into an empty function too?
Ge van Geldorp.
Index: control.c =================================================================== RCS file: /home/wine/wine/dlls/shell32/control.c,v retrieving revision 1.20 diff -u -r1.20 control.c --- control.c 12 Jul 2004 19:50:56 -0000 1.20 +++ control.c 22 Sep 2004 19:28:18 -0000 @@ -456,30 +456,6 @@ return Control_FillCache_RunDLLW(hWnd, hModule, w, x); }
- -/************************************************************************* - * RunDLL_CallEntry16 [SHELL32.122] - * the name is probably wrong - */ -void WINAPI RunDLL_CallEntry16( DWORD proc, HWND hwnd, HINSTANCE inst, - LPCSTR cmdline, INT cmdshow ) -{ - WORD args[5]; - SEGPTR cmdline_seg; - - TRACE( "proc %lx hwnd %p inst %p cmdline %s cmdshow %d\n", - proc, hwnd, inst, debugstr_a(cmdline), cmdshow ); - - cmdline_seg = MapLS( cmdline ); - args[4] = HWND_16(hwnd); - args[3] = MapHModuleLS(inst); - args[2] = SELECTOROF(cmdline_seg); - args[1] = OFFSETOF(cmdline_seg); - args[0] = cmdshow; - WOWCallback16Ex( proc, WCB16_PASCAL, sizeof(args), args, NULL ); - UnMapLS( cmdline_seg ); -} - /************************************************************************* * CallCPLEntry16 [SHELL32.166] * Index: shell.c =================================================================== RCS file: /home/wine/wine/dlls/shell32/shell.c,v retrieving revision 1.61 diff -u -r1.61 shell.c --- shell.c 15 Jun 2004 18:27:50 -0000 1.61 +++ shell.c 22 Sep 2004 19:28:18 -0000 @@ -657,3 +657,27 @@
return HINSTANCE_16(seiW.hInstApp); } + + +/************************************************************************* + * RunDLL_CallEntry16 [SHELL32.122] + * the name is probably wrong + */ +void WINAPI RunDLL_CallEntry16( DWORD proc, HWND hwnd, HINSTANCE inst, + LPCSTR cmdline, INT cmdshow ) +{ + WORD args[5]; + SEGPTR cmdline_seg; + + TRACE( "proc %lx hwnd %p inst %p cmdline %s cmdshow %d\n", + proc, hwnd, inst, debugstr_a(cmdline), cmdshow ); + + cmdline_seg = MapLS( cmdline ); + args[4] = HWND_16(hwnd); + args[3] = MapHModuleLS(inst); + args[2] = SELECTOROF(cmdline_seg); + args[1] = OFFSETOF(cmdline_seg); + args[0] = cmdshow; + WOWCallback16Ex( proc, WCB16_PASCAL, sizeof(args), args, NULL ); + UnMapLS( cmdline_seg ); +} Index: shell32.spec =================================================================== RCS file: /home/wine/wine/dlls/shell32/shell32.spec,v retrieving revision 1.87 diff -u -r1.87 shell32.spec --- shell32.spec 6 Sep 2004 20:24:10 -0000 1.87 +++ shell32.spec 22 Sep 2004 19:28:19 -0000 @@ -115,7 +115,6 @@ 119 stdcall IsLFNDrive(ptr) IsLFNDriveAW 120 stdcall FileMenu_AbortInitMenu () 121 stdcall SHFlushClipboard () - 122 stdcall -noname RunDLL_CallEntry16(long long long str long) #name wrong? 123 stdcall SHFreeUnusedLibraries () 124 stdcall FileMenu_AppendFilesForPidl(long ptr long) 125 stdcall FileMenu_AddFilesForPidl(long long long ptr long long ptr) Index: shell.spec =================================================================== RCS file: /home/wine/wine/dlls/shell32/shell.spec,v retrieving revision 1.10 diff -u -r1.10 shell.spec --- shell.spec 26 Sep 2003 04:32:20 -0000 1.10 +++ shell.spec 22 Sep 2004 19:28:19 -0000 @@ -29,6 +29,8 @@ 102 pascal -ret16 RegisterShellHook(word word) RegisterShellHook16 103 pascal ShellHookProc(word word long) ShellHookProc16
+122 pascal RunDLL_CallEntry16(long long long str long) #name wrong? + 157 stub RESTARTDIALOG # 166 PICKICONDLG
Ge van Geldorp gvg@reactos.com writes:
dlls/shell32/control.c contains some 16-bit code (function RunDLL_CallEntry16), which I would like to separate out. I wonder if the attached patch is the correct way to do that?
No, it really has to be exported from shell32.
On Win2k export 122 is just a stub. Maybe it would be ok to turn our export 122 into an empty function too?
No, that would break Win9x apps. We aren't yet at the point where things can run properly in full Win2k mode.