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 值,以及其他值。

傳回碼 Description
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)
程式庫 Bits.lib
Dll BitsPrx2.dll
可轉散發套件 Windows XP 上的 BITS 1.5

另請參閱

IBackgroundCopyJob2::GetNotifyCmdLine

IBackgroundCopyJob::SetNotifyFlags

IBackgroundCopyJob::SetNotifyInterface