ITaskScheduler::NewWorkItem 方法 (mstask.h)

[[此 API 可能在操作系统或产品的后续版本中被更改或不可用。 请改用 任务计划程序 2.0 接口 。] ]

NewWorkItem 方法创建新的工作项,为工作项分配空间并检索其地址。

语法

HRESULT NewWorkItem(
  [in]  LPCWSTR  pwszTaskName,
  [in]  REFCLSID rclsid,
  [in]  REFIID   riid,
  [out] IUnknown **ppUnk
);

参数

[in] pwszTaskName

一个以 null 结尾的字符串,指定新工作项的名称。 此名称必须符合Windows NT文件命名约定,但不能包含反斜杠,因为不允许在任务文件夹对象内嵌套。

[in] rclsid

要创建的工作项的类标识符。 目前支持的唯一类是任务类,其标识符CLSID_Ctask。

[in] riid

所请求的接口的引用标识符。 目前支持的唯一接口 ITask 具有标识符IID_ITask。

[out] ppUnk

指向接收所请求接口的接口指针的指针。 有关将工作项保存到磁盘的信息,请参阅备注。

返回值

NewWorkItem 方法返回以下值之一。

返回代码 说明
S_OK
操作成功。
ERROR_FILE_EXISTS
具有指定名称的工作项已存在。 实际返回值是HRESULT_FROM_WIN32 (ERROR_FILE_EXISTS) 。
E_INVALIDARG
一个或多个参数无效。
E_OUTOFMEMORY
没有足够的可用内存来完成该操作。
E_ACCESSDENIED
调用方没有执行操作的权限。 有关详细信息,请参阅 计划的工作项

注解

此方法在创建新工作项时自动处理内存分配。

若要将工作项保存到磁盘,请调用 IPersistFile::Save 。 此 COM 接口受所有工作项接口的支持, (目前 ITask 是唯一受支持的工作项接口) 。

任务计划程序提供两种用于添加工作项的方法: NewWorkItemAddWorkItem。 在这些方法中,每种方法都有其特定的优势。 AddWorkItem 可防止命名冲突,但每次调用还需要两个磁盘写入操作。 当对 AddWorkItem 的调用在磁盘上创建一个空的工作项对象时,执行一个写入操作,在调用 IPersistFile::Save 时执行另一个写入操作。

可以通过调用 AddWorkItemNewWorkItem 来创建任务。 使用 AddWorkItem 时,你有责任创建支持 ITask 接口的 Task 对象的实例 () ,然后添加具有你提供的名称的任务。

NewWorkItem 不会防止命名冲突,但在调用 IPersistFile::Save 时只需要一个磁盘写入操作。 尽管 NewWorkItem 在磁盘写入操作方面效率更高,但应用程序存在让另一个应用程序在调用 IPersistFile::Save 之前创建具有相同名称的工作项的风险。

完整示例 请参阅
创建新任务 使用 NewWorkItem 创建任务示例

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 mstask.h
Library Mstask.lib
DLL Mstask.dll
可再发行组件 Windows NT 4.0 和 Windows 95 上的 Internet Explorer 4.0 或更高版本

另请参阅

IPersistFile::Save

ITask

ITaskScheduler

ITaskScheduler::AddWorkItem