6.3 Appendix A.3: SchRpc.idl
For ease of implementation, the full IDL is provided below, where "ms-dtyp.idl" is the IDL as specified in [MS-DTYP] Appendix A.
-
import "ms-dtyp.idl"; [ uuid(86D35949-83C9-4044-B424-DB363231FD0C), version(1.0), pointer_default(unique) ] interface ITaskSchedulerService { enum credFlag { credFlagDefault = 0x1 }; typedef struct _TASK_USER_CRED { [string] const wchar_t* userId; [string] const wchar_t* password; DWORD flags; } TASK_USER_CRED; typedef struct _TASK_XML_ERROR_INFO { DWORD line, column; [string] wchar_t* node; [string] wchar_t* value; } TASK_XML_ERROR_INFO, *PTASK_XML_ERROR_INFO; typedef [string] wchar_t** TASK_NAMES; HRESULT SchRpcHighestVersion ( [out] DWORD* pVersion ); HRESULT SchRpcRegisterTask ( [in, string, unique] const wchar_t* path, [in, string] const wchar_t* xml, [in] DWORD flags, [in, string, unique] const wchar_t* sddl, [in] DWORD logonType, [in] DWORD cCreds, [in, size_is(cCreds), unique] const TASK_USER_CRED* pCreds, [out, string] wchar_t** pActualPath, [out] PTASK_XML_ERROR_INFO* pErrorInfo ); HRESULT SchRpcRetrieveTask ( [in, string] const wchar_t* path, [in, string] const wchar_t* lpcwszLanguagesBuffer, [in] unsigned long * pulNumLanguages, [out, string] wchar_t** pXml ); HRESULT SchRpcCreateFolder ( [in, string] const wchar_t* path, [in, string, unique] const wchar_t* sddl, [in] DWORD flags ); HRESULT SchRpcSetSecurity ( [in, string] const wchar_t* path, [in, string] const wchar_t* sddl, [in] DWORD flags ); HRESULT SchRpcGetSecurity ( [in, string] const wchar_t* path, [in] DWORD securityInformation, [out, string] wchar_t** sddl ); HRESULT SchRpcEnumFolders ( [in, string] const wchar_t* path, [in] DWORD flags, [in, out] DWORD* pStartIndex, [in] DWORD cRequested, [out] DWORD* pcNames, [out, string, size_is(,*pcNames)] TASK_NAMES* pNames ); HRESULT SchRpcEnumTasks ( [in, string] const wchar_t* path, [in] DWORD flags, [in, out] DWORD* startIndex, [in] DWORD cRequested, [out] DWORD* pcNames, [out, string, size_is(,*pcNames)] TASK_NAMES* pNames ); HRESULT SchRpcEnumInstances ( [in, string, unique] const wchar_t* path, [in] DWORD flags, [out] DWORD* pcGuids, [out, size_is(,*pcGuids)] GUID** pGuids ); HRESULT SchRpcGetInstanceInfo ( [in] GUID guid, [out, string] wchar_t** pPath, [out] DWORD * pState, //TASK_STATE [out, string] wchar_t** pCurrentAction, [out, string] wchar_t** pInfo, [out] DWORD* pcGroupInstances, [out, size_is(,*pcGroupInstances)] GUID** pGroupInstances, [out] DWORD* pEnginePID ); HRESULT SchRpcStopInstance ( [in] GUID guid, [in] DWORD flags ); HRESULT SchRpcStop ( [in, string, unique] const wchar_t* path, [in] DWORD flags ); HRESULT SchRpcRun ( [in, string] const wchar_t* path, [in] DWORD cArgs, [in, string, size_is(cArgs),unique] const wchar_t** pArgs, [in] DWORD flags, [in] DWORD sessionId, [in, unique, string] const wchar_t* user, [out] GUID* pGuid ); HRESULT SchRpcDelete ( [in, string] const wchar_t* path, [in] DWORD flags ); HRESULT SchRpcRename ( [in, string] const wchar_t* path, [in, string] const wchar_t* newName, [in] DWORD flags ); HRESULT SchRpcScheduledRuntimes ( [in, string] const wchar_t* path, [in, unique] PSYSTEMTIME start, [in, unique] PSYSTEMTIME end, [in] DWORD flags, [in] DWORD cRequested, [out] DWORD* pcRuntimes, [out, size_is(,*pcRuntimes)] PSYSTEMTIME* pRuntimes ); HRESULT SchRpcGetLastRunInfo ( [in, string] const wchar_t* path, [out] PSYSTEMTIME pLastRuntime, [out] DWORD* pLastReturnCode ); HRESULT SchRpcGetTaskInfo ( [in, string] const wchar_t* path, [in] DWORD flags, [out] DWORD* pEnabled, [out] DWORD * pState //TASK_STATE ); HRESULT SchRpcGetNumberOfMissedRuns ( [in, string] const wchar_t* path, [out] DWORD* pNumberOfMissedRuns ); HRESULT SchRpcEnableTask ( [in, string] const wchar_t* path, [in] DWORD enabled ); }