Implementation of CreateProcess32W.
diff --git a/loader/module.c b/loader/module.c
index 93fe65a..92ecdd7 100644
--- a/loader/module.c
+++ b/loader/module.c
@@ -700,6 +700,8 @@
/**********************************************************************
* CreateProcess32W (KERNEL32.172)
+ * NOTES
+ * lpReserved is not converted
*/
BOOL32 WINAPI CreateProcess32W( LPCWSTR lpApplicationName, LPWSTR lpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes,
@@ -708,13 +710,34 @@
LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory,
LPSTARTUPINFO32W lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInfo )
-{
- FIXME(win32, "(%s,%s,...): stub\n", debugstr_w(lpApplicationName),
- debugstr_w(lpCommandLine));
+{ BOOL32 ret;
+ STARTUPINFO32A StartupInfoA;
+
+ LPSTR lpApplicationNameA = HEAP_strdupWtoA (GetProcessHeap(),0,lpApplicationName);
+ LPSTR lpCommandLineA = HEAP_strdupWtoA (GetProcessHeap(),0,lpCommandLine);
+ LPSTR lpCurrentDirectoryA = HEAP_strdupWtoA (GetProcessHeap(),0,lpCurrentDirectory);
- /* make from lcc uses system as fallback if CreateProcess returns
- FALSE, so return false */
- return FALSE;
+ memcpy (&StartupInfoA, lpStartupInfo, sizeof(STARTUPINFO32A));
+ StartupInfoA.lpDesktop = HEAP_strdupWtoA (GetProcessHeap(),0,lpStartupInfo->lpDesktop);
+ StartupInfoA.lpTitle = HEAP_strdupWtoA (GetProcessHeap(),0,lpStartupInfo->lpTitle);
+
+ TRACE(win32, "(%s,%s,...)\n", debugstr_w(lpApplicationName), debugstr_w(lpCommandLine));
+
+ if (lpStartupInfo->lpReserved)
+ FIXME(win32,"StartupInfo.lpReserved is used, please report (%s)\n", debugstr_w(lpStartupInfo->lpReserved));
+
+ ret = CreateProcess32A( lpApplicationNameA, lpCommandLineA,
+ lpProcessAttributes, lpThreadAttributes,
+ bInheritHandles, dwCreationFlags,
+ lpEnvironment, lpCurrentDirectoryA,
+ &StartupInfoA, lpProcessInfo );
+
+ HeapFree( GetProcessHeap(), 0, lpCurrentDirectoryA );
+ HeapFree( GetProcessHeap(), 0, lpCommandLineA );
+ HeapFree( GetProcessHeap(), 0, StartupInfoA.lpDesktop );
+ HeapFree( GetProcessHeap(), 0, StartupInfoA.lpTitle );
+
+ return ret;
}
/***********************************************************************