Condividi tramite


Metodo IBackgroundCopyJob2::SetNotifyCmdLine (bits1_5.h)

Specifica un programma da eseguire se il processo entra nello stato BG_JOB_STATE_ERROR o BG_JOB_STATE_TRANSFERRED . BITS esegue il programma nel contesto dell'utente che ha chiamato questo metodo.

Sintassi

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

Parametri

[in] Program

Stringa con terminazione Null che contiene il programma da eseguire. Il parametro pProgram è limitato a MAX_PATH caratteri, senza includere il carattere di terminazione Null. È necessario specificare un percorso completo per il programma; il metodo non userà il percorso di ricerca per individuare il programma.

Per rimuovere la notifica della riga di comando, impostare pProgram e pParameters su NULL. Il metodo ha esito negativo se pProgram è NULL e pParameters è diverso da NULL.

[in] Parameters

Stringa con terminazione Null che contiene i parametri del programma in pProgram. Il primo parametro deve essere il programma in pProgram (usare le virgolette se il percorso usa nomi di file lunghi). Il parametro pParameters è limitato a 4.000 caratteri, senza includere il carattere di terminazione Null. Questo parametro può essere NULL.

Valore restituito

Questo metodo restituisce i valori HRESULT seguenti, nonché altri.

Codice restituito Descrizione
S_OK
Operazione completata.
BG_E_INVALID_STATE
Lo stato del processo non può essere BG_JOB_STATE_CANCELLED o BG_JOB_STATE_ACKNOWLEDGED.
BG_E_STRING_TOO_LONG
La stringa pProgram o pParameters è troppo lunga.

Commenti

BITS chiama la funzione CreateProcessAsUser per avviare il programma.

Il programma deve restituire un codice di uscita pari a zero. Se il programma non restituisce un codice di uscita pari a zero, BITS controlla lo stato del processo. Se il programma non ha annullato o completato il processo, BITS chiama nuovamente il programma dopo la scadenza del ritardo minimo dei tentativi specificato per il processo.

BITS 1.5 e versioni precedenti: BITS chiama il programma una sola volta.

Per eseguire uno script, specificare WScript.exe (includere il percorso completo per WScript.exe) in pProgram. Il parametro pParameters deve includere WScript.exe, il nome dello script e gli argomenti.

Se il programma richiede informazioni correlate al processo, è necessario passare queste informazioni come argomenti. Non includere variabili di ambiente, ad esempio %system32%, in pProgram o pParameters , che non vengono espanse.

È necessario includere il percorso completo del programma. Se uno degli argomenti in pParameters include un percorso che usa nomi di file lunghi, ad esempio il nome del modulo, usare le virgolette intorno al percorso.

Se il programma che si vuole eseguire usa il file di risposta o download, il programma deve chiamare il metodo IBackgroundCopyJob::Complete per rendere disponibili i file al client.

Chiamare il metodo IBackgroundCopyJob::SetNotifyFlags per specificare quando eseguire il programma. È possibile richiedere l'esecuzione della riga di comando solo per gli eventi di errore del processo o trasferiti, non per gli eventi di modifica del processo. Si noti che BITS esegue ancora la riga di comando anche se si chiama il metodo SetNotifyCmdLine dopo che si verifica l'evento.

Se il processo BITS si trova in un contesto dell'account del servizio (ad esempio, networkservice/localsystem/localservice), non verrà eseguito alcun tipo di callback della riga di comando.

Se si chiama sia il metodo SetNotifyCmdLine che il metodo IBackgroundCopyJob::SetNotifyInterface , BITS eseguirà la riga di comando solo se l'interfaccia di notifica diventa non valida o il metodo di notifica che le chiamate BITS restituisce un codice di errore. Ad esempio, se il metodo di notifica che chiama BITS restituisce un E_FAIL, BITS eseguirà la riga di comando. Tuttavia, se il metodo di notifica restituisce S_OK, BITS non eseguirà la riga di comando. Se la richiesta di esecuzione del metodo di notifica e della riga di comando ha esito negativo, BITS invierà nuovamente la notifica dopo la scadenza del periodo minimo di ripetizione.

Si noti che la chiamata al metodo IBackgroundCopyJob::TakeOwnership rimuove la notifica della riga di comando dal processo.

Esempio

Per un esempio che chiama il metodo SetNotifyCmdLine , vedere Registrazione in Execute a Program.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista
Server minimo supportato Windows Server 2003
Piattaforma di destinazione Windows
Intestazione bits1_5.h (include Bits.h)
Libreria Bits.lib
DLL BitsPrx2.dll
Componente ridistribuibile BITS 1.5 in Windows XP

Vedi anche

IBackgroundCopyJob2::GetNotifyCmdLine

IBackgroundCopyJob::SetNotifyFlags

IBackgroundCopyJob::SetNotifyInterface