IBackgroundCopyJob2::SetNotifyCmdLine 方法 (bits1_5.h)

指定在作业进入 BG_JOB_STATE_ERRORBG_JOB_STATE_TRANSFERRED 状态时要执行的程序。 BITS 在调用此方法的用户的上下文中执行程序。

语法

HRESULT SetNotifyCmdLine(
  [in] LPCWSTR Program,
  [in] LPCWSTR Parameters
);

参数

[in] Program

包含要执行的程序的以 Null 结尾的字符串。 pProgram 参数仅限于MAX_PATH个字符,不包括 null 终止符。 应指定程序的完整路径;方法不会使用搜索路径来查找程序。

若要删除命令行通知,请将 pProgrampParameters 设置为 NULL。 如果 pProgramNULLpParameters 为非 NULL,则该方法失败。

[in] Parameters

以 Null 结尾的字符串,其中包含 pProgram 中的程序参数。 第一个参数必须是 pProgram 中的程序, (如果路径使用长文件名) ,则使用引号。 pParameters 参数限制为 4,000 个字符,不包括 null 终止符。 此参数可以为 NULL。

返回值

此方法返回以下 HRESULT 值以及其他值。

返回代码 说明
S_OK
成功。
BG_E_INVALID_STATE
作业的状态不能 BG_JOB_STATE_CANCELLEDBG_JOB_STATE_ACKNOWLEDGED
BG_E_STRING_TOO_LONG
pProgrampParameters 字符串太长。

注解

BITS 调用 CreateProcessAsUser 函数来启动程序。

程序应返回零的退出代码。 如果程序不返回零的退出代码,则 BITS 会检查作业的状态。 如果程序未取消或完成作业,则 BITS 会在为作业指定的 最小重试延迟 过期后再次调用程序。

BITS 1.5 及更早版本: BITS 只调用程序一次。

若要执行脚本,请指定 WScript.exe (在 pProgram 中包含 WScript.exe) 的完整路径。 pParameters 参数应包括 WScript.exe、脚本名称和任何参数。

如果程序需要与作业相关的信息,则必须将此信息作为参数传递。 请勿在 pProgrampParameters 中包含环境变量(如 %system32%),它们不会展开。

应包含程序的完整路径。 如果 pParameters 中的任何参数包含使用长文件名的路径(例如模块名称),请在路径周围使用引号。

如果要执行的程序使用回复或下载文件,则程序必须调用 IBackgroundCopyJob::Complete 方法,使文件可供客户端使用。

调用 IBackgroundCopyJob::SetNotifyFlags 方法以指定何时执行程序。 只能针对作业错误或传输的事件请求命令行执行,而不能针对作业修改事件请求执行。 请注意,即使事件发生后调用 SetNotifyCmdLine 方法,BITS 仍会执行命令行。

如果 BITS 作业位于服务帐户上下文 (即 networkservice/localsystem/localservice) ,则不会执行任何形式的命令行回调。

如果同时调用 SetNotifyCmdLine 方法和 IBackgroundCopyJob::SetNotifyInterface 方法,则仅当通知接口无效或 BITS 调用的通知方法返回失败代码时,BITS 才会执行命令行。 例如,如果 BITS 调用的通知方法返回E_FAIL,则 BITS 将执行命令行。 但是,如果通知方法返回 S_OK,则 BITS 不会执行命令行。 如果通知方法和命令行执行请求都失败,BITS 将在最短重试期到期后再次发送通知。

请注意,调用 IBackgroundCopyJob::TakeOwnership 方法会从作业中删除命令行通知。

示例

有关调用 SetNotifyCmdLine 方法的示例,请参阅 注册以执行程序

要求

要求
最低受支持的客户端 Windows Vista
最低受支持的服务器 Windows Server 2003
目标平台 Windows
标头 bits1_5.h (包括 Bits.h)
Library Bits.lib
DLL BitsPrx2.dll
可再发行组件 Windows XP 上的 BITS 1.5

另请参阅

IBackgroundCopyJob2::GetNotifyCmdLine

IBackgroundCopyJob::SetNotifyFlags

IBackgroundCopyJob::SetNotifyInterface