import "oaidl.idl";
import "ocidl.idl";

[
uuid(201ef99a-7fa0-444c-9399-19ba84f12a1a),
version(1.0),
]
interface LaunchAdminProcess
{

	typedef struct _MONITOR_POINT {
		long MonitorLeft;
		long MonitorRight;
	} MONITOR_POINT;

	typedef struct _APP_STARTUP_INFO {
		wchar_t* lpszTitle;
		long dwX;
		long dwY;
		long dwXSize;
		long dwYSize;
		long dwXCountChars;
		long dwYCountChars;
		long dwFillAttribute;
		long dwFlags;
		short wShowWindow;
		struct _MONITOR_POINT MonitorPoint;
	} APP_STARTUP_INFO;

	typedef struct _APP_PROCESS_INFORMATION {
		unsigned __int3264 ProcessHandle;
		unsigned __int3264 ThreadHandle;
		long  ProcessId;
		long  ThreadId;
	} APP_PROCESS_INFORMATION;

	long RAiLaunchAdminProcess(
		handle_t hBinding,
		[in][unique][string] wchar_t* ExecutablePath,
		[in][unique][string] wchar_t* CommandLine,
		[in]long StartFlags,
		[in]long CreationFlags,
		[in][string] wchar_t* CurrentDirectory,
		[in][string] wchar_t* WindowStation,
		[in]struct _APP_STARTUP_INFO* StartupInfo,
		[in]unsigned __int3264 hWnd,
		[in]long Timeout,
		[out]struct _APP_PROCESS_INFORMATION* ProcessInformation,
		[out]long* ElevationType);

}