Udostępnij za pośrednictwem


Kompletny przykład usługi

Tematy w tej sekcji stanowią kompletny przykład usługi:

Kompilowanie usługi

Poniższa procedura opisuje sposób kompilowania usługi i rejestrowania biblioteki DLL komunikatów o zdarzeniach.

Aby skompilować usługę i zarejestrować bibliotekę DLL komunikatu o zdarzeniu

  1. Zbuduj bibliotekę DLL z komunikatami z pliku Sample.mc, wykonując następujące kroki:

    1. mc -U sample.mc
    2. rc -r sample.rc
    3. link -dll -noentry -out:sample.dll sample.res
  2. Skompiluj odpowiednio Svc.exe, SvcConfig.exei SvcControl.exe z Svc.cpp, SvcConfig.cpp i SvcControl.cpp.

  3. Utwórz klucz rejestru HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\SvcName i dodaj następujące wartości rejestru do tego klucza.

    Wartość Typ Opis
    EventMessageFile = dll_path REG_SZ Ścieżka do zasobowej biblioteki DLL zawierającej ciągi, które usługa może zapisywać w dzienniku zdarzeń.
    TypesSupported = 0x00000007 REG_DWORD Maska bitowa określająca obsługiwane typy zdarzeń. Wartość 0x000000007 wskazuje, że wszystkie typy są obsługiwane.

     

Testowanie usługi

Poniższa procedura opisuje sposób testowania usługi.

Aby przetestować usługę

  1. W Panelu sterowania uruchom aplikację usług. (W poniższych krokach użyj F5, aby odświeżyć ekran po wykonaniu polecenia modyfikujące informacje w aplikacji usługi Services).

  2. Uruchom następujące polecenie, aby zainstalować usługę:

    svc instaluj

    Usługa zapisuje komunikat "Usługa została pomyślnie zainstalowana" w konsoli programu , jeśli operacja zakończy się powodzeniem lub komunikatem o błędzie.

    Jeśli instalacja usługi zakończy się pomyślnie, usługa zostanie wyświetlona w aplikacji Services. Należy pamiętać, że nazwa jest ustawiona na wartość "SvcName", Opis i stan są puste, a typ uruchamiania ma wartość "Manual".

  3. Uruchom następujące polecenie, aby uruchomić usługę:

    svccontrol uruchom SvcName

    Jeśli operacja zakończy się pomyślnie, program sterujący usługi zapisuje komunikat "Oczekiwanie na uruchomienie usługi..." a następnie "Usługa została pomyślnie uruchomiona" w konsoli programu . W przeciwnym razie program zapisuje komunikat o błędzie w konsoli.

    Jeśli usługa zostanie pomyślnie uruchomiona, stan ma wartość "Uruchomiono". Kod w funkcji ServiceMain jest wykonywany przez narzędzie SCM. Jeśli wystąpi błąd, usługa zapisze komunikat o błędzie w dzienniku zdarzeń. Ten komunikat zawiera nazwę funkcji, która nie powiodła się, oraz kod błędu zwrócony po awarii.

  4. Uruchom następujące polecenie, aby zaktualizować opis usługi:

    svcconfig opisz SvcName

    Program konfiguracji usługi zapisuje komunikat "Opis usługi został pomyślnie zaktualizowany" do konsoli programu , jeśli operacja zakończy się powodzeniem lub komunikatem o błędzie.

    Jeśli aktualizacja zakończy się pomyślnie, Opis jest ustawiony na "To jest testowy opis".

  5. Uruchom następujące polecenie, aby wykonać zapytanie dotyczące konfiguracji usługi:

    svcconfig query SvcName

    Program konfiguracji usługi zapisuje informacje o konfiguracji usługi w konsoli, jeśli operacja zakończy się powodzeniem lub komunikatem o błędzie w przeciwnym razie.

  6. Uruchom następujące polecenie, aby zmienić DACL usługi:

    svccontrol dacl SvcName

    Program konfiguracji usługi zapisuje komunikat "DACL usługi zaktualizowany pomyślnie" do konsoli, jeśli operacja zakończy się sukcesem, w przeciwnym razie wyświetla się komunikat o błędzie.

  7. Uruchom następujące polecenie, aby wyłączyć usługę:

    svcconfig wyłącz SvcName

    Program konfiguracji usługi zapisuje "Usługa wyłączona pomyślnie" w konsoli, jeśli operacja zakończy się sukcesem lub w przeciwnym razie wyświetli komunikat o błędzie.

    Jeśli usługa została pomyślnie wyłączona, typ uruchamiania jest ustawiony na wartość "Wyłączone".

  8. Uruchom następujące polecenie, aby włączyć usługę:

    svcconfig enable SvcName

    Program konfiguracji usługi zapisuje na konsoli komunikat "Usługa została pomyślnie włączona" w przypadku powodzenia operacji lub informację o błędzie w przeciwnym razie.

    Jeśli usługa jest włączona pomyślnie, typ uruchamiania jest ustawiony na "Ręczne".

  9. Uruchom następujące polecenie, aby zatrzymać usługę:

    svccontrol stop SvcName

    Jeśli operacja powiedzie się, program sterujący usługą zapisuje komunikat "Oczekiwanie na zatrzymanie usługi...", a następnie "Usługa została pomyślnie zatrzymana" na konsoli. W przeciwnym razie program zapisuje komunikat o błędzie na konsolę.

    Jeśli usługa zostanie pomyślnie zatrzymana, stan jest pusty.

    Jeśli zatrzymanie usługi nie powiedzie się, program sterujący usługi zapisuje komunikat o błędzie w dzienniku zdarzeń, który zawiera nazwę funkcji, która nie powiodła się, oraz kod błędu zwrócony po awarii.

  10. Uruchom następujące polecenie, aby usunąć usługę:

    svcconfig delete SvcName

    Program konfiguracji usługi zapisuje komunikat "Usługa została pomyślnie usunięta" w konsoli programu , jeśli operacja zakończy się pomyślnie lub w przeciwnym razie zostanie wyświetlony komunikat o błędzie.

    Jeśli usługa zostanie pomyślnie usunięta, nie będzie już wyświetlana w aplikacji Services. (Należy pamiętać, że jeśli próbujesz usunąć usługę, która nie została zatrzymana, operacja zakończy się pomyślnie, ale typ uruchamiania jest ustawiona na wartość "Wyłączone", a wpis usługi zostanie usunięty podczas ponownego uruchomienia systemu lub gdy usługa zostanie zakończona przy użyciu Menedżera zadań).

Używanie Usług