Kompletny przykład usługi
Tematy w tej sekcji stanowią kompletny przykład usługi:
- Sample.mc (zawiera komunikaty o błędach)
- Svc.cpp (zawiera kod usługi)
- SvcConfig.cpp (zawiera kod konfiguracji usługi)
- SvcControl.cpp (zawiera kod kontroli 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
Zbuduj bibliotekę DLL z komunikatami z pliku Sample.mc, wykonując następujące kroki:
- mc -U sample.mc
- rc -r sample.rc
- link -dll -noentry -out:sample.dll sample.res
Skompiluj odpowiednio Svc.exe, SvcConfig.exei SvcControl.exe z Svc.cpp, SvcConfig.cpp i SvcControl.cpp.
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ę
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).
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".
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.
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".
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.
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.
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".
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".
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.
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ń).
Tematy pokrewne
-
Używanie Usług