| /* |
| * Task Scheduler Service definitions |
| * |
| * Copyright 2014 Dmitry Timoshkov |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Lesser General Public |
| * License as published by the Free Software Foundation; either |
| * version 2.1 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Lesser General Public License for more details. |
| * |
| * You should have received a copy of the GNU Lesser General Public |
| * License along with this library; if not, write to the Free Software |
| * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA |
| */ |
| |
| cpp_quote("#define SCHEDSVC_TRANSPORT {'n','c','a','l','r','p','c',0}") |
| cpp_quote("#define SCH_FLAG_STATE 0x10000000") |
| |
| import "oaidl.idl"; |
| import "ocidl.idl"; |
| |
| [ |
| uuid(86d35949-83c9-4044-b424-db363231fd0c), |
| implicit_handle(handle_t rpc_handle), |
| version(1.0), |
| pointer_default(unique) |
| ] |
| interface ITaskSchedulerService |
| { |
| typedef struct _TASK_USER_CRED |
| { |
| [string] const WCHAR *user; |
| [string] const WCHAR *password; |
| DWORD flags; |
| } TASK_USER_CRED; |
| |
| typedef struct _TASK_XML_ERROR_INFO |
| { |
| DWORD line, column; |
| [string] WCHAR *node; |
| [string] WCHAR *value; |
| } TASK_XML_ERROR_INFO; |
| |
| typedef [string] WCHAR **TASK_NAMES; |
| |
| HRESULT SchRpcHighestVersion([out] DWORD *version); |
| HRESULT SchRpcRegisterTask([in, string, unique] const WCHAR *path, |
| [in, string] const WCHAR *xml, [in] DWORD flags, |
| [in, string, unique] const WCHAR *sddl, |
| [in] DWORD task_logon_type, [in] DWORD n_creds, |
| [in, size_is(n_creds), unique] const TASK_USER_CRED *creds, |
| [out, string] WCHAR **actual_path, |
| [out] TASK_XML_ERROR_INFO **xml_error_info); |
| HRESULT SchRpcRetrieveTask([in, string] const WCHAR *path, |
| [in, string] const WCHAR *languages, |
| [in] unsigned long *n_languages, [out, string] WCHAR **xml); |
| HRESULT SchRpcCreateFolder([in, string] const WCHAR *path, |
| [in, string, unique] const WCHAR *sddl, [in] DWORD flags); |
| HRESULT SchRpcSetSecurity([in, string] const WCHAR *path, |
| [in, string] const WCHAR *sddl, [in] DWORD flags); |
| HRESULT SchRpcGetSecurity([in, string] const WCHAR *path, |
| [in] DWORD flags, [out, string] WCHAR **sddl); |
| HRESULT SchRpcEnumFolders([in, string] const WCHAR *path, |
| [in] DWORD flags, [in, out] DWORD *start_index, |
| [in] DWORD n_requested, [out] DWORD *n_names, |
| [out, string, size_is(,*n_names)] TASK_NAMES *names); |
| HRESULT SchRpcEnumTasks([in, string] const WCHAR *path, |
| [in] DWORD flags, [in, out] DWORD *start_index, |
| [in] DWORD n_requested, [out] DWORD *n_names, |
| [out, string, size_is(,*n_names)] TASK_NAMES *names); |
| HRESULT SchRpcEnumInstances([in, string, unique] const WCHAR *path, |
| [in] DWORD flags, [out] DWORD *n_guids, |
| [out, size_is(,*n_guids)] GUID **guids); |
| HRESULT SchRpcGetInstanceInfo([in] GUID guid, [out, string] WCHAR **path, |
| [out] DWORD *task_state, [out, string] WCHAR **action, |
| [out, string] WCHAR **info, [out] DWORD *n_instances, |
| [out, size_is(,*n_instances)] GUID **instances, [out] DWORD *pid); |
| HRESULT SchRpcStopInstance([in] GUID guid, [in] DWORD flags); |
| HRESULT SchRpcStop([in, string, unique] const WCHAR *path, [in] DWORD flags); |
| HRESULT SchRpcRun([in, string] const WCHAR *path, |
| [in] DWORD n_args, [in, size_is(n_args),unique] const WCHAR **args, |
| [in] DWORD flags, [in] DWORD session_id, |
| [in, unique, string] const WCHAR *user, [out] GUID *guid); |
| HRESULT SchRpcDelete([in, string] const WCHAR *path, [in] DWORD flags); |
| HRESULT SchRpcRename([in, string] const WCHAR *path, [in, string] const WCHAR *name, [in] DWORD flags); |
| HRESULT SchRpcScheduledRuntimes([in, string] const WCHAR *path, |
| [in, unique] SYSTEMTIME *start, [in, unique] SYSTEMTIME *end, |
| [in] DWORD flags, [in] DWORD n_requested, [out] DWORD *n_runtimes, |
| [out, size_is(,*n_runtimes)] SYSTEMTIME **runtimes); |
| HRESULT SchRpcGetLastRunInfo([in, string] const WCHAR *path, |
| [out] SYSTEMTIME *last_runtime, [out] DWORD *last_return_code); |
| HRESULT SchRpcGetTaskInfo([in, string] const WCHAR *path, [in] DWORD flags, |
| [out] DWORD *enabled, [out] DWORD *task_state); |
| HRESULT SchRpcGetNumberOfMissedRuns([in, string] const WCHAR *path, [out] DWORD *runs); |
| HRESULT SchRpcEnableTask([in, string] const WCHAR *path, [in] DWORD enabled); |
| } |