Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Hizmetler genellikle konsol uygulamaları olarak yazılır. Konsol uygulamasının giriş noktası, ana işlevidir. ana işlevi, hizmetin kayıt defteri anahtarından ImagePath değerinden bağımsız değişkenler alır. Daha fazla bilgi için CreateServiceişlevininAçıklamalar bölümüne bakın.
SCM bir hizmet programı başlattığında, StartServiceCtrlDispatcher işlevini çağırmasını bekler. Aşağıdaki yönergeleri kullanın.
- SERVICE_WIN32_OWN_PROCESS türündeki bir hizmet, StartServiceCtrlDispatcher hemen ana iş parçacığından çağırmalıdır. Hizmet başlatıldıktan sonra Service ServiceMain İşleviaçıklandığı gibi herhangi bir başlatma gerçekleştirebilirsiniz.
- Hizmet türü SERVICE_WIN32_SHARE_PROCESS ve programdaki tüm hizmetler için ortak başlatma varsa, 30 saniyeden kısa sürdüğü sürece startserviceCtrlDispatcherçağırmadan önce ana iş parçacığında başlatmayı gerçekleştirebilirsiniz. Aksi takdirde, ana iş parçacığı StartServiceCtrlDispatcher çağırırken, ortak başlatmayı yapmak için başka bir iş parçacığı oluşturmanız gerekir. Hizmet başlatıldıktan sonra hizmete özgü başlatma işlemlerini gerçekleştirmeniz gerekir.
StartServiceCtrlDispatcher işlevi, işlemde yer alan her hizmet için SERVICE_TABLE_ENTRY bir yapı alır. Her yapı hizmet adını ve hizmetin giriş noktasını belirtir. Örnek için bkz. Bir Hizmet Programının ana İşlevi yazma.
StartServiceCtrlDispatcherbaşarılı olursa, işlemdeki tüm çalışan hizmetler SERVICE_STOPPED durumuna girene kadar çağıran iş parçacığı dönmez. SCM, adlandırılmış bir kanal aracılığıyla bu iş parçacığına denetim istekleri gönderir. İş parçacığı, aşağıdaki görevleri yerine getirerek bir denetim dağıtıcısı işlevi görür:
- Yeni bir hizmet başlatıldığında uygun giriş noktasını çağırmak için yeni bir iş parçacığı oluşturun.
- Hizmet denetimi isteklerini işlemek için uygun işleyici işlevini çağırın.
İlgili konular