Freigeben über


IBackgroundCopyJob2::SetNotifyCmdLine-Methode (bits1_5.h)

Gibt ein auszuführenes Programm an, wenn der Auftrag den BG_JOB_STATE_ERROR oder BG_JOB_STATE_TRANSFERRED Zustand eingibt. BITS führt das Programm im Kontext des Benutzers aus, der diese Methode aufgerufen hat.

Syntax

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

Die Parameter

[in] Program

Null-beendete Zeichenfolge, die das auszuführende Programm enthält. Der pProgram-Parameter ist auf MAX_PATH Zeichen beschränkt, nicht auf den Null-Terminator. Sie sollten einen vollständigen Pfad zum Programm angeben; die Methode verwendet nicht den Suchpfad, um das Programm zu finden.

Um die Befehlszeilenbenachrichtigung zu entfernen, legen Sie "pProgram" und "pParameters" auf NULL fest. Die Methode schlägt fehl, wenn pProgramNULL ist und pParameters ungleich NULL ist.

[in] Parameters

Null-beendete Zeichenfolge, die die Parameter des Programms in pProgram enthält. Der erste Parameter muss das Programm in pProgram sein (verwenden Sie Anführungszeichen, wenn der Pfad lange Dateinamen verwendet). Der pParameters-Parameter ist auf 4.000 Zeichen beschränkt, nicht einschließlich des Null-Terminators. Dieser Parameter kann NULL-sein.

Rückgabewert

Diese Methode gibt die folgenden HRESULT-Werte sowie andere zurück.

Rückgabecode Description
S_OK
Erfolg.
BG_E_INVALID_STATE
Der Status des Auftrags kann nicht BG_JOB_STATE_CANCELLED oder BG_JOB_STATE_ACKNOWLEDGED werden.
BG_E_STRING_TOO_LONG
Die pProgram - oder pParameters-Zeichenfolge ist zu lang.

Bemerkungen

BITS ruft die CreateProcessAsUser-Funktion auf, um das Programm zu starten.

Ihr Programm sollte einen Exitcode von Null zurückgeben. Wenn Ihr Programm keinen Exitcode von Null zurückgibt, überprüft BITS den Status des Auftrags. Wenn das Programm den Auftrag nicht abgebrochen oder abgeschlossen hat, ruft BITS das Programm nach Ablauf der minimalen Wiederholungsverzögerung erneut auf.

BITS 1.5 und früher: BITS ruft das Programm nur einmal auf.

Um ein Skript auszuführen, geben Sie WScript.exe an (schließen Sie den vollständigen Pfad zu WScript.exe) in pProgram ein. Der Parameter pParameters sollte WScript.exe, den Skriptnamen und alle Argumente enthalten.

Wenn Für Ihr Programm auftragsbezogene Informationen erforderlich sind, müssen Sie diese Informationen als Argumente übergeben. Schließen Sie keine Umgebungsvariablen ein, z. B. %system32%, in pProgram oder pParameters – sie werden nicht erweitert.

Sie sollten den vollständigen Pfad zum Programm einschließen. Wenn eines der Argumente in pParameters einen Pfad enthält, der lange Dateinamen verwendet, z. B. den Modulnamen, verwenden Sie Anführungszeichen um den Pfad.

Wenn das auszuführende Programm die Antwort- oder Downloaddatei verwendet, muss das Programm die IBackgroundCopyJob::Complete-Methode aufrufen, um die Dateien für den Client verfügbar zu machen.

Rufen Sie die IBackgroundCopyJob::SetNotifyFlags-Methode auf, um anzugeben, wann das Programm ausgeführt werden soll. Sie können die Befehlszeilenausführung nur für Auftragsfehler- oder übertragene Ereignisse anfordern, nicht für Auftragsänderungsereignisse. Beachten Sie, dass BITS die Befehlszeile weiterhin ausführt, auch wenn Sie die SetNotifyCmdLine-Methode aufrufen, nachdem das Ereignis eintritt.

Wenn sich der BITS-Auftrag in einem Dienstkontokontext befindet (z. B. networkservice/localsystem/localservice), wird keine Form des Befehlszeilenrückrufs ausgeführt.

Wenn Sie sowohl die SetNotifyCmdLine-Methode als auch die IBackgroundCopyJob::SetNotifyInterface-Methode aufrufen, führt BITS die Befehlszeile nur aus, wenn die Benachrichtigungsschnittstelle ungültig wird oder die Benachrichtigungsmethode, die BITS aufruft, einen Fehlercode zurückgibt. Wenn beispielsweise die Benachrichtigungsmethode, die BITS aufruft, einen E_FAIL zurückgibt, führt BITS die Befehlszeile aus. Wenn die Benachrichtigungsmethode jedoch S_OK zurückgibt, führt BITS die Befehlszeile nicht aus. Wenn die Benachrichtigungsmethode und die Befehlszeilenausführungsanforderung beide fehlschlagen, sendet BITS die Benachrichtigung erneut, nachdem der mindeste Wiederholungszeitraum abgelaufen ist.

Beachten Sie, dass durch Aufrufen der IBackgroundCopyJob::TakeOwnership-Methode die Befehlszeilenbenachrichtigung aus dem Auftrag entfernt wird.

Examples

Ein Beispiel, das die SetNotifyCmdLine-Methode aufruft, finden Sie unter "Registrieren zum Ausführen eines Programms".

Anforderungen

Anforderung Wert
Mindestens unterstützter Client Windows Vista
Mindestanforderungen für unterstützte Server Windows Server 2003
Zielplattform Fenster
Header bits1_5.h (bits.h einschließen)
Library Bits.lib
DLL BitsPrx2.dll
Weiterverteilbar BITS 1.5 unter Windows XP

Siehe auch

IBackgroundCopyJob2::GetNotifyCmdLine

IBackgroundCopyJob::SetNotifyFlags

IBackgroundCopyJob::SetNotifyInterface