Pass CreateProcess() SECURITY_ATTRIBUTES through to PROCESS_Create().
diff --git a/loader/dos/module.c b/loader/dos/module.c
index 00e4655..9a8b301 100644
--- a/loader/dos/module.c
+++ b/loader/dos/module.c
@@ -415,8 +415,9 @@
return TRUE;
}
-BOOL MZ_CreateProcess( HFILE hFile, OFSTRUCT *ofs, LPCSTR cmdline,
- LPCSTR env, BOOL inherit, LPSTARTUPINFOA startup,
+BOOL MZ_CreateProcess( HFILE hFile, OFSTRUCT *ofs, LPCSTR cmdline, LPCSTR env,
+ LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
+ BOOL inherit, LPSTARTUPINFOA startup,
LPPROCESS_INFORMATION info )
{
LPDOSTASK lpDosTask = NULL; /* keep gcc from complaining */
@@ -463,7 +464,8 @@
SetLastError(ERROR_GEN_FAILURE);
return FALSE;
}
- if (!PROCESS_Create( pModule, cmdline, env, 0, 0, inherit, startup, info ))
+ if (!PROCESS_Create( pModule, cmdline, env, 0, 0,
+ psa, tsa, inherit, startup, info ))
return FALSE;
}
return TRUE;
@@ -491,8 +493,9 @@
#else /* !MZ_SUPPORTED */
-BOOL MZ_CreateProcess( HFILE hFile, OFSTRUCT *ofs, LPCSTR cmdline,
- LPCSTR env, BOOL inherit, LPSTARTUPINFOA startup,
+BOOL MZ_CreateProcess( HFILE hFile, OFSTRUCT *ofs, LPCSTR cmdline, LPCSTR env,
+ LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
+ BOOL inherit, LPSTARTUPINFOA startup,
LPPROCESS_INFORMATION info )
{
WARN(module,"DOS executables not supported on this architecture\n");
diff --git a/loader/module.c b/loader/module.c
index 666d3c0..c9137b8 100644
--- a/loader/module.c
+++ b/loader/module.c
@@ -847,10 +847,6 @@
/* Warn if unsupported features are used */
- if (lpProcessAttributes)
- FIXME(module, "(%s,...): lpProcessAttributes ignored\n", name);
- if (lpThreadAttributes)
- FIXME(module, "(%s,...): lpThreadAttributes ignored\n", name);
if (dwCreationFlags & DEBUG_PROCESS)
FIXME(module, "(%s,...): DEBUG_PROCESS ignored\n", name);
if (dwCreationFlags & DEBUG_ONLY_THIS_PROCESS)
@@ -922,6 +918,7 @@
lstrcpynA( ofs.szPathName, name, sizeof( ofs.szPathName ) );
retv = NE_CreateProcess( HFILE_ERROR, &ofs, cmdline, lpEnvironment,
+ lpProcessAttributes, lpThreadAttributes,
bInheritHandles, lpStartupInfo, lpProcessInfo );
/* Load file and create process */
@@ -956,16 +953,19 @@
{
case SCS_32BIT_BINARY:
retv = PE_CreateProcess( hFile, &ofs, cmdline, lpEnvironment,
+ lpProcessAttributes, lpThreadAttributes,
bInheritHandles, lpStartupInfo, lpProcessInfo );
break;
case SCS_DOS_BINARY:
retv = MZ_CreateProcess( hFile, &ofs, cmdline, lpEnvironment,
+ lpProcessAttributes, lpThreadAttributes,
bInheritHandles, lpStartupInfo, lpProcessInfo );
break;
case SCS_WOW_BINARY:
retv = NE_CreateProcess( hFile, &ofs, cmdline, lpEnvironment,
+ lpProcessAttributes, lpThreadAttributes,
bInheritHandles, lpStartupInfo, lpProcessInfo );
break;
diff --git a/loader/ne/module.c b/loader/ne/module.c
index 59edc9e..bf60766 100644
--- a/loader/ne/module.c
+++ b/loader/ne/module.c
@@ -914,7 +914,8 @@
}
pdb = PROCESS_Create( pModule, new_cmd_line, env,
- hInstance, hPrevInstance, TRUE, &startup, &info );
+ hInstance, hPrevInstance,
+ NULL, NULL, TRUE, &startup, &info );
CloseHandle( info.hThread );
CloseHandle( info.hProcess );
@@ -932,8 +933,9 @@
/**********************************************************************
* NE_CreateProcess
*/
-BOOL NE_CreateProcess( HFILE hFile, OFSTRUCT *ofs, LPCSTR cmd_line,
- LPCSTR env, BOOL inherit, LPSTARTUPINFOA startup,
+BOOL NE_CreateProcess( HFILE hFile, OFSTRUCT *ofs, LPCSTR cmd_line, LPCSTR env,
+ LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
+ BOOL inherit, LPSTARTUPINFOA startup,
LPPROCESS_INFORMATION info )
{
HINSTANCE16 hInstance, hPrevInstance = 0;
@@ -1004,7 +1006,8 @@
pModule->flags |= NE_FFLAGS_GUI; /* FIXME: is this necessary? */
if ( !PROCESS_Create( pModule, cmd_line, env,
- hInstance, hPrevInstance, inherit, startup, info ) )
+ hInstance, hPrevInstance,
+ psa, tsa, inherit, startup, info ) )
return FALSE;
return TRUE;
diff --git a/loader/pe_image.c b/loader/pe_image.c
index eb86f11..f05301d 100644
--- a/loader/pe_image.c
+++ b/loader/pe_image.c
@@ -879,8 +879,9 @@
* FIXME: this function should use PE_LoadLibraryExA, but currently can't
* due to the PROCESS_Create stuff.
*/
-BOOL PE_CreateProcess( HFILE hFile, OFSTRUCT *ofs, LPCSTR cmd_line,
- LPCSTR env, BOOL inherit, LPSTARTUPINFOA startup,
+BOOL PE_CreateProcess( HFILE hFile, OFSTRUCT *ofs, LPCSTR cmd_line, LPCSTR env,
+ LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
+ BOOL inherit, LPSTARTUPINFOA startup,
LPPROCESS_INFORMATION info )
{
LPCSTR modName = NULL;
@@ -914,7 +915,7 @@
/* Create new process */
if ( !PROCESS_Create( pModule, cmd_line, env,
- 0, 0, inherit, startup, info ) )
+ 0, 0, psa, tsa, inherit, startup, info ) )
return FALSE;
/* Note: PE_CreateModule and the remaining process initialization will