126 lines
4.3 KiB
Plaintext
126 lines
4.3 KiB
Plaintext
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Microsoft Research Singularity - Singularity ABI
|
||
|
//
|
||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
//
|
||
|
// File: ProcessHandle.csi
|
||
|
//
|
||
|
// Note:
|
||
|
//
|
||
|
|
||
|
using System;
|
||
|
using System.Runtime.CompilerServices;
|
||
|
using Microsoft.Singularity.V1.Services;
|
||
|
using Microsoft.Singularity.V1.Types;
|
||
|
using Microsoft.Singularity.V1.Security;
|
||
|
|
||
|
namespace Microsoft.Singularity.V1.Processes
|
||
|
{
|
||
|
public enum ProcessState {
|
||
|
Active,
|
||
|
Suspended,
|
||
|
Stopped,
|
||
|
}
|
||
|
|
||
|
public struct ProcessHandle
|
||
|
{
|
||
|
public readonly UIntPtr id;
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static bool Create(char *args,
|
||
|
int *argLengths,
|
||
|
int argCount,
|
||
|
char *role,
|
||
|
int roleLength,
|
||
|
int endpointCount,
|
||
|
out ProcessHandle handle);
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static bool Create(char *processName, //args[0]
|
||
|
int processNameLength,
|
||
|
char *action,
|
||
|
int actionLength,
|
||
|
char *role,
|
||
|
int roleLength,
|
||
|
out ProcessHandle handle);
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static bool SetStartupEndpoint(ProcessHandle handle,
|
||
|
int index,
|
||
|
SharedHeapService.Allocation * endpoint);
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static void Dispose(ProcessHandle handle);
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static bool Start(ProcessHandle handle);
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static void Join(ProcessHandle handle, out bool started);
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static bool Join(ProcessHandle handle,
|
||
|
TimeSpan timeout,
|
||
|
out bool started);
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static bool Join(ProcessHandle handle,
|
||
|
SchedulerTime stop,
|
||
|
out bool started);
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static bool Suspend(ProcessHandle handle, bool recursive);
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static bool Resume(ProcessHandle handle, bool recursive);
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static void Stop(ProcessHandle handle, int exitcode);
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static void SuspendBarrier();
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static int GetProcessId(ProcessHandle handle);
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static int GetExitCode(ProcessHandle handle);
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static PrincipalHandle GetPrincipalHandle(ProcessHandle handle);
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static ProcessState GetState(ProcessHandle handle);
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static unsafe ParameterCode SetStartupStringArrayArg(
|
||
|
ProcessHandle handle,
|
||
|
int index,
|
||
|
char *args,
|
||
|
int *argLengths,
|
||
|
int argCount);
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static bool BindToService(ProcessHandle handle,
|
||
|
SystemType impType,
|
||
|
SystemType expType,
|
||
|
char *contract,
|
||
|
int contractLen,
|
||
|
int startState,
|
||
|
int index);
|
||
|
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static unsafe ParameterCode SetStartupStringArg(ProcessHandle handle, int arg, char * input, int length);
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static ParameterCode SetStartupLongArg(ProcessHandle handle, int index, long value);
|
||
|
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static ParameterCode SetStartupBoolArg(ProcessHandle handle, int index, bool value);
|
||
|
|
||
|
}
|
||
|
}
|