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 方法返回以下值之一。
返回代码 | 说明 |
---|---|
|
操作成功。 |
|
具有指定名称的工作项已存在。 实际返回值是HRESULT_FROM_WIN32 (ERROR_FILE_EXISTS) 。 |
|
一个或多个参数无效。 |
|
没有足够的可用内存来完成该操作。 |
|
调用方没有执行操作的权限。 有关详细信息,请参阅 计划的工作项。 |
注解
此方法在创建新工作项时自动处理内存分配。
若要将工作项保存到磁盘,请调用 IPersistFile::Save 。 此 COM 接口受所有工作项接口的支持, (目前 ITask 是唯一受支持的工作项接口) 。
任务计划程序提供两种用于添加工作项的方法: NewWorkItem 和 AddWorkItem。 在这些方法中,每种方法都有其特定的优势。 AddWorkItem 可防止命名冲突,但每次调用还需要两个磁盘写入操作。 当对 AddWorkItem 的调用在磁盘上创建一个空的工作项对象时,执行一个写入操作,在调用 IPersistFile::Save 时执行另一个写入操作。
可以通过调用 AddWorkItem 或 NewWorkItem 来创建任务。 使用 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 或更高版本 |