diff --git a/PInvoke/NTDll/Winternl.cs b/PInvoke/NTDll/Winternl.cs index c0cf655a..9d4ff2f2 100644 --- a/PInvoke/NTDll/Winternl.cs +++ b/PInvoke/NTDll/Winternl.cs @@ -191,6 +191,42 @@ namespace Vanara.PInvoke MaxSubsystemInformationType, } + /// + [Flags] + public enum PROCESS_CREATE_FLAGS : uint + { + /// + PROCESS_CREATE_FLAGS_BREAKAWAY = 0x00000001, + /// + PROCESS_CREATE_FLAGS_NO_DEBUG_INHERIT = 0x00000002, + /// + PROCESS_CREATE_FLAGS_INHERIT_HANDLES = 0x00000004, + /// + PROCESS_CREATE_FLAGS_OVERRIDE_ADDRESS_SPACE = 0x00000008, + /// + PROCESS_CREATE_FLAGS_LARGE_PAGES = 0x00000010, + } + + [DllImport(Lib.NtDll, SetLastError = false, ExactSpelling = true)] + public static extern NTStatus NtCreateProcess(out HPROCESS ProcessHandle, [In] ACCESS_MASK DesiredAccess, in OBJECT_ATTRIBUTES ObjectAttributes, + [In] HPROCESS ParentProcess, [In, MarshalAs(UnmanagedType.U1)] bool InheritObjectTable, [In, Optional] IntPtr SectionHandle, + [In, Optional] IntPtr DebugPort, [In, Optional] IntPtr ExceptionPort); + + [DllImport(Lib.NtDll, SetLastError = false, ExactSpelling = true)] + public static extern NTStatus NtCreateProcess(out HPROCESS ProcessHandle, [In] ACCESS_MASK DesiredAccess, [In, Optional] IntPtr ObjectAttributes, + [In] HPROCESS ParentProcess, [In, MarshalAs(UnmanagedType.U1)] bool InheritObjectTable, [In, Optional] IntPtr SectionHandle, + [In, Optional] IntPtr DebugPort, [In, Optional] IntPtr ExceptionPort); + + [DllImport(Lib.NtDll, SetLastError = false, ExactSpelling = true)] + public static extern NTStatus NtCreateProcessEx(out HPROCESS ProcessHandle, [In] ACCESS_MASK DesiredAccess, in OBJECT_ATTRIBUTES ObjectAttributes, + [In] HPROCESS ParentProcess, [In] PROCESS_CREATE_FLAGS Flags, [In, Optional] IntPtr SectionHandle, + [In, Optional] IntPtr DebugPort, [In, Optional] IntPtr ExceptionPort, uint JobMemberLevel); + + [DllImport(Lib.NtDll, SetLastError = false, ExactSpelling = true)] + public static extern NTStatus NtCreateProcessEx(out HPROCESS ProcessHandle, [In] ACCESS_MASK DesiredAccess, [In, Optional] IntPtr ObjectAttributes, + [In] HPROCESS ParentProcess, [In] PROCESS_CREATE_FLAGS Flags, [In, Optional] IntPtr SectionHandle, + [In, Optional] IntPtr DebugPort, [In, Optional] IntPtr ExceptionPort, uint JobMemberLevel); + /// /// /// [ NtQueryInformationProcess may be altered or unavailable in future versions of Windows. Applications should use the