[Bug 18614] Problem with starting of wine or winecfg

wine-bugs at winehq.org wine-bugs at winehq.org
Thu Apr 21 08:32:58 CDT 2011


http://bugs.winehq.org/show_bug.cgi?id=18614

--- Comment #26 from rmaz at gmx.net 2011-04-21 08:32:58 CDT ---
(In reply to comment #24)

> > ;; This should be run through setupapi:
> > ;;   rundll32 setupapi.dll,InstallHinfSection DefaultInstall 128 wine.inf
> > 
> > I could maybe try to do this manually, but I don't seem to have a rundll32
> > executable, only a rundll32.exe.so in /usr/local/lib/wine.
> 
> Run it as you would do with any other Wine built-in application:
> wine rundll32 setupapi.dll,InstallHinfSection DefaultInstall 128 wine.inf

Hm, that seems to bring us back to the orginal issue:

$ rm -rf .wine; wine rundll32 setupapi.dll,InstallHinfSection DefaultInstall
128 wine.inf
wine: created the configuration directory '/home/maz/.wine'
err:rundll32:wWinMain Unable to load L"setupapi"
wine: configuration in '/home/maz/.wine' has been updated.
err:rundll32:wWinMain Unable to load L"setupapi.dll"

I'd guess that the reason wine.inf doesn't show up in the log is then that,
since it fails to load this setupapi dll, it never gets to parse the later
arguments. I'm guessing what the above command tries to do is dynload the
specified library (setupapi.dll.so) and execute the function specified after
the comma (InstallHinfSection) with the rest of the line passed as arguments to
the function, yes?

I think I found the relevant section in programs/rundll32/rundll32.c:

   /* Get the dll name and API EntryPoint */
    WINE_TRACE("CmdLine=%s\n",wine_dbgstr_w(szCmdLine));
    szDllName = get_next_arg(&szCmdLine);
    if (!szDllName || *szDllName==0)
        goto CLEANUP;
    WINE_TRACE("DllName=%s\n",wine_dbgstr_w(szDllName));
    if ((szEntryPoint = strchrW(szDllName, ',' )))
        *szEntryPoint++=0;
    else
        szEntryPoint = get_next_arg(&szCmdLine);
    WINE_TRACE("EntryPoint=%s\n",wine_dbgstr_w(szEntryPoint));

    /* Load the library */
    hDll=LoadLibraryW(szDllName);
    if (hDll)
    {
        win16 = FALSE;
        entry_point = get_entry_point32( hDll, szEntryPoint, &unicode );
    }
    else
    {
        HINSTANCE16 dll = load_dll16( szDllName );
        if (dll <= 32)
        {
            /* Windows has a MessageBox here... */
 -->        WINE_ERR("Unable to load %s\n",wine_dbgstr_w(szDllName));    <--
            goto CLEANUP;
        }
        win16 = TRUE;
        unicode = FALSE;
        entry_point = get_entry_point16( dll, szEntryPoint );
    }

Looks like it should write CmdLine, DllName, EntryPoint to the log before
trying to open, but I don't see such lines in my wineboot.log. Which WINEDEBUG
options do I need to get them? Is it the LoadLibraryW or the load_dll16 that
does not produce the expected result?

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list