1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- using System;
- using System.Runtime.InteropServices;
- namespace MiniTerm.Native
- {
- /// <summary>
- /// PInvoke signatures for win32 process api
- /// </summary>
- static class ProcessApi
- {
- internal const uint EXTENDED_STARTUPINFO_PRESENT = 0x00080000;
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
- internal struct STARTUPINFOEX
- {
- public STARTUPINFO StartupInfo;
- public IntPtr lpAttributeList;
- }
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
- internal struct STARTUPINFO
- {
- public Int32 cb;
- public string lpReserved;
- public string lpDesktop;
- public string lpTitle;
- public Int32 dwX;
- public Int32 dwY;
- public Int32 dwXSize;
- public Int32 dwYSize;
- public Int32 dwXCountChars;
- public Int32 dwYCountChars;
- public Int32 dwFillAttribute;
- public Int32 dwFlags;
- public Int16 wShowWindow;
- public Int16 cbReserved2;
- public IntPtr lpReserved2;
- public IntPtr hStdInput;
- public IntPtr hStdOutput;
- public IntPtr hStdError;
- }
- [StructLayout(LayoutKind.Sequential)]
- internal struct PROCESS_INFORMATION
- {
- public IntPtr hProcess;
- public IntPtr hThread;
- public int dwProcessId;
- public int dwThreadId;
- }
- [StructLayout(LayoutKind.Sequential)]
- internal struct SECURITY_ATTRIBUTES
- {
- public int nLength;
- public IntPtr lpSecurityDescriptor;
- public int bInheritHandle;
- }
- [DllImport("kernel32.dll", SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- internal static extern bool InitializeProcThreadAttributeList(
- IntPtr lpAttributeList, int dwAttributeCount, int dwFlags, ref IntPtr lpSize);
- [DllImport("kernel32.dll", SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- internal static extern bool UpdateProcThreadAttribute(
- IntPtr lpAttributeList, uint dwFlags, IntPtr attribute, IntPtr lpValue,
- IntPtr cbSize, IntPtr lpPreviousValue, IntPtr lpReturnSize);
- [DllImport("kernel32.dll")]
- [return: MarshalAs(UnmanagedType.Bool)]
- internal static extern bool CreateProcess(
- string lpApplicationName, string lpCommandLine, ref SECURITY_ATTRIBUTES lpProcessAttributes,
- ref SECURITY_ATTRIBUTES lpThreadAttributes, bool bInheritHandles, uint dwCreationFlags,
- IntPtr lpEnvironment, string lpCurrentDirectory, [In] ref STARTUPINFOEX lpStartupInfo,
- out PROCESS_INFORMATION lpProcessInformation);
- [DllImport("kernel32.dll", SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- internal static extern bool DeleteProcThreadAttributeList(IntPtr lpAttributeList);
- [DllImport("kernel32.dll", SetLastError = true)]
- internal static extern bool CloseHandle(IntPtr hObject);
- }
- }
|