Ignore:
Timestamp:
Oct 2, 2000, 3:39:18 PM (25 years ago)
Author:
sandervl
Message:

version changes + misc fixes/changes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/wprocess.cpp

    r4351 r4372  
    1 /* $Id: wprocess.cpp,v 1.97 2000-10-01 12:05:57 sandervl Exp $ */
     1/* $Id: wprocess.cpp,v 1.98 2000-10-02 13:38:58 sandervl Exp $ */
    22
    33/*
     
    16431643    rc = O32_WaitForInputIdle(procinfo.hProcess, 15000);
    16441644    if(rc != 0) {
    1645     dprintf(("WinExec: WaitForInputIdle %x returned %x", procinfo.hProcess, rc));
     1645        dprintf(("WinExec: WaitForInputIdle %x returned %x", procinfo.hProcess, rc));
    16461646    }
    16471647    return procinfo.hProcess; //correct?
     1648}
     1649/**********************************************************************
     1650 * LoadModule    (KERNEL32.499)
     1651 *
     1652 * Wine: 20000909
     1653 *
     1654 * Copyright 1995 Alexandre Julliard
     1655 */
     1656HINSTANCE WINAPI LoadModule( LPCSTR name, LPVOID paramBlock )
     1657{
     1658    LOADPARAMS *params = (LOADPARAMS *)paramBlock;
     1659    PROCESS_INFORMATION info;
     1660    STARTUPINFOA startup;
     1661    HINSTANCE hInstance;
     1662    LPSTR cmdline, p;
     1663    char filename[MAX_PATH];
     1664    BYTE len;
     1665
     1666    dprintf(("LoadModule %s %x", name, paramBlock));
     1667
     1668    if (!name) return ERROR_FILE_NOT_FOUND;
     1669
     1670    if (!SearchPathA( NULL, name, ".exe", sizeof(filename), filename, NULL ) &&
     1671        !SearchPathA( NULL, name, NULL, sizeof(filename), filename, NULL ))
     1672        return GetLastError();
     1673
     1674    len = (BYTE)params->lpCmdLine[0];
     1675    if (!(cmdline = (LPSTR)HeapAlloc( GetProcessHeap(), 0, strlen(filename) + len + 2 )))
     1676        return ERROR_NOT_ENOUGH_MEMORY;
     1677
     1678    strcpy( cmdline, filename );
     1679    p = cmdline + strlen(cmdline);
     1680    *p++ = ' ';
     1681    memcpy( p, params->lpCmdLine + 1, len );
     1682    p[len] = 0;
     1683
     1684    memset( &startup, 0, sizeof(startup) );
     1685    startup.cb = sizeof(startup);
     1686    if (params->lpCmdShow)
     1687    {
     1688        startup.dwFlags = STARTF_USESHOWWINDOW;
     1689        startup.wShowWindow = params->lpCmdShow[1];
     1690    }
     1691   
     1692    if (CreateProcessA( filename, cmdline, NULL, NULL, FALSE, 0,
     1693                        params->lpEnvAddress, NULL, &startup, &info ))
     1694    {
     1695        /* Give 15 seconds to the app to come up */
     1696        if ( O32_WaitForInputIdle ( info.hProcess, 15000 ) ==  0xFFFFFFFF )
     1697            dprintf(("ERROR: WaitForInputIdle failed: Error %ld\n", GetLastError() ));
     1698        hInstance = 33;
     1699        /* Close off the handles */
     1700        CloseHandle( info.hThread );
     1701        CloseHandle( info.hProcess );
     1702    }
     1703    else if ((hInstance = GetLastError()) >= 32)
     1704    {
     1705        dprintf(("ERROR: Strange error set by CreateProcess: %d\n", hInstance ));
     1706        hInstance = 11;
     1707    }
     1708
     1709    HeapFree( GetProcessHeap(), 0, cmdline );
     1710    return hInstance;
    16481711}
    16491712//******************************************************************************
Note: See TracChangeset for help on using the changeset viewer.