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