Aracılığıyla paylaş


CAtlServiceModuleT Sınıfı

Bu sınıf bir hizmet uygular.

Önemli

Bu sınıf ve üyeleri Windows Çalışma Zamanı yürütülen uygulamalarda kullanılamaz.

Sözdizimi

template <class T, UINT nServiceNameID>
class ATL_NO_VTABLE CAtlServiceModuleT : public CAtlExeModuleT<T>

Parametreler

T
sınıfınız öğesinden CAtlServiceModuleTtüretilmiştir.

nServiceNameID
Hizmetin kaynak tanımlayıcısı.

Üyeler

Ortak Oluşturucular

Ad Tanım
CAtlServiceModuleT::CAtlServiceModuleT Oluşturucu.

Genel Yöntemler

Ad Tanım
CAtlServiceModuleT::Handler Hizmet için işleyici yordamı.
CAtlServiceModuleT::InitializeSecurity Hizmet için varsayılan güvenlik ayarlarını sağlar.
CAtlServiceModuleT::Install Hizmeti yükler ve oluşturur.
CAtlServiceModuleT::IsInstalled Hizmetin yüklendiğini onaylar.
CAtlServiceModuleT::LogEvent Olay günlüğüne yazar.
CAtlServiceModuleT::OnContinue Hizmete devam etmek için bu yöntemi geçersiz kılın.
CAtlServiceModuleT::OnInterrogate Hizmeti sorgulamak için bu yöntemi geçersiz kılın.
CAtlServiceModuleT::OnPause Hizmeti duraklatmak için bu yöntemi geçersiz kılın.
CAtlServiceModuleT::OnShutdown Hizmeti kapatmak için bu yöntemi geçersiz kıl
CAtlServiceModuleT::OnStop Hizmeti durdurmak için bu yöntemi geçersiz kıl
CAtlServiceModuleT::OnUnknownRequest Hizmete yönelik bilinmeyen istekleri işlemek için bu yöntemi geçersiz kıl
CAtlServiceModuleT::P arseCommandLine Komut satırını ayrıştırıp gerekirse kayıt gerçekleştirir.
CAtlServiceModuleT::P reMessageLoop Bu yöntem, ileti döngüsüne girmeden hemen önce çağrılır.
CAtlServiceModuleT::RegisterAppId Hizmeti kayıt defterine kaydeder.
CAtlServiceModuleT::Run Hizmeti çalıştırır.
CAtlServiceModuleT::ServiceMain Service Control Manager tarafından çağrılan yöntem.
CAtlServiceModuleT::SetServiceStatus Hizmet durumunu Güncelleştirmeler.
CAtlServiceModuleT::Start Hizmet başlatıldığında tarafından CAtlServiceModuleT::WinMain çağrılır.
CAtlServiceModuleT::Uninstall Hizmeti durdurur ve kaldırır.
CAtlServiceModuleT::Unlock Hizmetin kilit sayısını azaltma.
CAtlServiceModuleT::UnregisterAppId Hizmeti kayıt defterinden kaldırır.
CAtlServiceModuleT::WinMain Bu yöntem, hizmeti çalıştırmak için gereken kodu uygular.

Ortak Veri Üyeleri

Ad Tanım
CAtlServiceModuleT::m_bService Programın hizmet olarak çalıştığını gösteren bayrak.
CAtlServiceModuleT::m_dwThreadID İş parçacığı tanımlayıcısını depolayarak üye değişkeni.
CAtlServiceModuleT::m_hServiceStatus Geçerli hizmet için durum bilgisi yapısına bir tanıtıcı depolayarak üye değişkeni.
CAtlServiceModuleT::m_status Üye değişkeni geçerli hizmet için durum bilgisi yapısını depolar.
CAtlServiceModuleT::m_szServiceName Kaydedilmekte olan hizmetin adı.

Açıklamalar

CAtlServiceModuleT, CAtlExeModuleT'den türetilir, bir ATL Hizmeti modülü uygular. CAtlServiceModuleT komut satırı işleme, yükleme, kaydetme ve kaldırma yöntemleri sağlar. Ek işlevsellik gerekiyorsa, bu ve diğer yöntemler geçersiz kılınabilir.

Bu sınıf, ATL'nin önceki sürümlerinde kullanılan eski CComModule Sınıfının yerini alır. Daha fazla ayrıntı için bkz . ATL Modülü Sınıfları .

Devralma Hiyerarşisi

_ATL_MODULE

CAtlModule

CAtlModuleT

Catlexemodulet

CAtlServiceModuleT

Gereksinimler

Üst bilgi: atlbase.h

CAtlServiceModuleT::CAtlServiceModuleT

Oluşturucu.

CAtlServiceModuleT() throw();

Açıklamalar

Veri üyelerini başlatır ve ilk hizmet durumunu ayarlar.

CAtlServiceModuleT::Handler

Hizmet için işleyici yordamı.

void Handler(DWORD dwOpcode) throw();

Parametreler

dwOpcode
İşleyici işlemini tanımlayan bir anahtar. Ayrıntılar için bkz. Açıklamalar.

Açıklamalar

Bu, Hizmet Denetim Yöneticisi'nin (SCM) hizmetin durumunu almak ve durdurma veya duraklatma gibi yönergeler vermek için çağırdiği koddur. SCM, hizmetin ne yapması gerektiğini belirtmek için Handler aşağıda gösterilen bir işlem kodunu geçirir.

İşlem kodu Anlamı
SERVICE_CONTROL_STOP Hizmeti durdurur. Davranışı değiştirmek için atlbase.h dosyasında CAtlServiceModuleT::OnStop yöntemini geçersiz kılın.
SERVICE_CONTROL_PAUSE Kullanıcı uygulandı. Hizmeti duraklatmak için boş CAtlServiceModuleT::OnPause yöntemini atlbase.h dosyasında geçersiz kılın.
SERVICE_CONTROL_CONTINUE Kullanıcı uygulandı. Hizmete devam etmek için atlbase.h dosyasındaki boş CAtlServiceModuleT::OnContinue yöntemini geçersiz kılın.
SERVICE_CONTROL_INTERROGATE Kullanıcı uygulandı. Hizmeti sorgulamak için atlbase.h dosyasındaki boş CAtlServiceModuleT::OnInterrogate yöntemini geçersiz kılın.
SERVICE_CONTROL_SHUTDOWN Kullanıcı uygulandı. Hizmeti kapatmak için atlbase.h dosyasındaki boş CAtlServiceModuleT::OnShutdown yöntemini geçersiz kılın.

İşlem kodu tanınmıyorsa CAtlServiceModuleT::OnUnknownRequest yöntemi çağrılır.

Varsayılan ATL tarafından oluşturulan hizmet yalnızca durdurma yönergesini işler. SCM durdurma yönergesini geçerse, hizmet SCM'ye programın durdurulmak üzere olduğunu bildirir. Ardından hizmet, kendisine bir çıkış iletisi göndermek için öğesini çağırır PostThreadMessage . Bu, ileti döngüsünü sonlandırır ve hizmet sonunda kapanır.

CAtlServiceModuleT::InitializeSecurity

Hizmet için varsayılan güvenlik ayarlarını sağlar.

HRESULT InitializeSecurity() throw();

İade Değeri

Başarıda S_OK veya hatada HRESULT hatası döndürür.

Açıklamalar

öğesinden CAtlServiceModuleT türetilen herhangi bir sınıf, türetilmiş sınıfta bu yöntemi uygulamalıdır.

ÇAĞRıSında PKT düzeyinde kimlik doğrulaması, RPC_C_IMP_LEVEL_IDENTIFY kimliğe bürünme düzeyi ve uygun boş olmayan güvenlik tanımlayıcısını CoInitializeSecuritykullanın.

Sihirbaz tarafından oluşturulan, dağıtılmayan hizmet projeleri için bu,

class CNonAttribServiceModule : public CAtlServiceModuleT< CNonAttribServiceModule, IDS_SERVICENAME >
{
public :
   DECLARE_LIBID(LIBID_NonAttribServiceLib)
   DECLARE_REGISTRY_APPID_RESOURCEID(IDR_NONATTRIBSERVICE, "{29160736-339F-4A1C-ABEF-C320CE103E12}")
   HRESULT InitializeSecurity() throw()
   {
      // TODO : Call CoInitializeSecurity and provide the appropriate security settings for 
      // your service
      // Suggested - PKT Level Authentication, 
      // Impersonation Level of RPC_C_IMP_LEVEL_IDENTIFY 
      // and an appropriate Non NULL Security Descriptor.

      return S_OK;
   }
};

Öznitelikli hizmet projeleri için bu,

[ module(SERVICE, uuid = "{D3103322-7B70-4581-8E59-12769BD9A62B}", 
   name = "AttribService", 
   helpstring = "AttribService 1.0 Type Library", 
   resource_name="IDS_SERVICENAME") ]
class CAttribServiceModule
{
public:
   HRESULT InitializeSecurity() throw()
   {
      // TODO : Call CoInitializeSecurity and provide the appropriate security settings for 
      // your service
      // Suggested - PKT Level Authentication, 
      // Impersonation Level of RPC_C_IMP_LEVEL_IDENTIFY 
      // and an appropriate Non NULL Security Descriptor.

      return S_OK;
   }
};

CAtlServiceModuleT::Install

Hizmeti yükler ve oluşturur.

BOOL Install() throw();

İade Değeri

Başarılı olduğunda TRUE, hatada YANLIŞ döndürür.

Açıklamalar

Hizmeti Service Control Manager (SCM) veritabanına yükler ve ardından hizmet nesnesini oluşturur. Hizmet oluşturulamadıysa, bir ileti kutusu görüntülenir ve yöntem YANLIŞ döndürür.

CAtlServiceModuleT::IsInstalled

Hizmetin yüklendiğini onaylar.

BOOL IsInstalled() throw();

İade Değeri

Hizmet yüklüyse TRUE, aksi takdirde YANLIŞ döndürür.

CAtlServiceModuleT::LogEvent

Olay günlüğüne yazar.

void __cdecl LogEvent(LPCTSTR pszFormat, ...) throw();

Parametreler

pszFormat
Olay günlüğüne yazacak dize.

...
Olay günlüğüne yazılacak isteğe bağlı ek dizeler.

Açıklamalar

Bu yöntem, ReportEvent işlevini kullanarak ayrıntıları bir olay günlüğüne yazar. Hiçbir hizmet çalışmıyorsa, dize konsola gönderilir.

CAtlServiceModuleT::m_bService

Programın hizmet olarak çalıştığını gösteren bayrak.

BOOL m_bService;

Açıklamalar

Bir Hizmet EXE'sini Uygulama EXE'sinden ayırmak için kullanılır.

CAtlServiceModuleT::m_dwThreadID

Hizmetin iş parçacığı tanımlayıcısını depolayarak üye değişkeni.

DWORD m_dwThreadID;

Açıklamalar

Bu değişken geçerli iş parçacığının iş parçacığı tanımlayıcısını depolar.

CAtlServiceModuleT::m_hServiceStatus

Geçerli hizmet için durum bilgisi yapısına bir tanıtıcı depolayarak üye değişkeni.

SERVICE_STATUS_HANDLE m_hServiceStatus;

Açıklamalar

SERVICE_STATUS yapısı bir hizmet hakkında bilgi içerir.

CAtlServiceModuleT::m_status

Üye değişkeni geçerli hizmet için durum bilgisi yapısını depolar.

SERVICE_STATUS m_status;

Açıklamalar

SERVICE_STATUS yapısı bir hizmet hakkında bilgi içerir.

CAtlServiceModuleT::m_szServiceName

Kaydedilmekte olan hizmetin adı.

TCHAR [256] m_szServiceName;

Açıklamalar

Hizmetin adını depolayan null olarak sonlandırılan bir dize.

CAtlServiceModuleT::OnContinue

Hizmete devam etmek için bu yöntemi geçersiz kılın.

void OnContinue() throw();

CAtlServiceModuleT::OnInterrogate

Hizmeti sorgulamak için bu yöntemi geçersiz kılın.

void OnInterrogate() throw();

CAtlServiceModuleT::OnPause

Hizmeti duraklatmak için bu yöntemi geçersiz kılın.

void OnPause() throw();

CAtlServiceModuleT::OnShutdown

Hizmeti kapatmak için bu yöntemi geçersiz kılın.

void OnShutdown() throw();

CAtlServiceModuleT::OnStop

Hizmeti durdurmak için bu yöntemi geçersiz kılın.

void OnStop() throw();

CAtlServiceModuleT::OnUnknownRequest

Hizmete yönelik bilinmeyen istekleri işlemek için bu yöntemi geçersiz kılın.

void OnUnknownRequest(DWORD /* dwOpcode*/) throw();

Parametreler

dwOpcode
Saklı -dır.

CAtlServiceModuleT::P arseCommandLine

Komut satırını ayrıştırıp gerekirse kayıt gerçekleştirir.

bool ParseCommandLine(LPCTSTR lpCmdLine, HRESULT* pnRetCode) throw();

Parametreler

lpCmdLine
Komut satırı.

pnRetCode
Kayda karşılık gelen HRESULT (varsa).

İade Değeri

Başarı durumunda true veya komut satırında sağlanan RGS dosyası kaydedilemediyse false döndürür.

Açıklamalar

Komut satırını ayrıştırır ve gerekirse sağlanan RGS dosyasını kaydeder veya kaydını kaldırır. Bu yöntem, /RegServer ve /UnregServer'ı denetlemek için CAtlExeModuleT::P arseCommandLine'ı çağırır. -/Service bağımsız değişkeni eklendiğinde hizmet kaydedilecektir.

CAtlServiceModuleT::P reMessageLoop

Bu yöntem, ileti döngüsüne girmeden hemen önce çağrılır.

HRESULT PreMessageLoop(int nShowCmd) throw();

Parametreler

nShowCmd
Bu parametre CAtlExeModuleT::P reMessageLoop'a geçirilir.

İade Değeri

Başarıda S_OK veya hatada HRESULT hatası döndürür.

Açıklamalar

Hizmet için özel başlatma kodu eklemek için bu yöntemi geçersiz kılın.

CAtlServiceModuleT::RegisterAppId

Hizmeti kayıt defterine kaydeder.

inline HRESULT RegisterAppId(bool bService = false) throw();

Parametreler

bService
Hizmet olarak kaydolmak için true olmalıdır.

İade Değeri

Başarıda S_OK veya hatada HRESULT hatası döndürür.

CAtlServiceModuleT::Run

Hizmeti çalıştırır.

HRESULT Run(int nShowCmd = SW_HIDE) throw();

Parametreler

nShowCmd
Pencerenin nasıl gösterileceğini belirtir. Bu parametre, WinMain bölümünde açıklanan değerlerden biri olabilir. Varsayılan değer SW_HIDE.

İade Değeri

Başarıda S_OK veya hatada HRESULT hatası döndürür.

Açıklamalar

Çağrıldıktan sonra CAtlServiceModuleTRun::P reMessageLoop, CAtlExeModuleT::RunMessageLoop ve CAtlExeModuleT::P ostMessageLoop'u çağırır.

CAtlServiceModuleT::ServiceMain

Bu yöntem, Hizmet Denetim Yöneticisi tarafından çağrılır.

void ServiceMain(DWORD dwArgc, LPTSTR* lpszArgv) throw();

Parametreler

dwArgc
argc bağımsız değişkeni.

lpszArgv
argv bağımsız değişkeni.

Açıklamalar

Hizmet Denetim Yöneticisi (SCM), hizmetler uygulamasını Denetim Masası açtığınızda, hizmeti seçtiğinizde ve Başlat'a tıkladığınızda çağırırServiceMain.

SCM çağrısı ServiceMainyaptıktan sonra bir hizmetin SCM'ye bir işleyici işlevi vermesi gerekir. Bu işlev SCM'nin hizmetin durumunu almasını ve belirli yönergeleri (duraklatma veya durdurma gibi) geçirmesini sağlar. Daha sonra, hizmetin ana işini gerçekleştirmek için CAtlServiceModuleT::Run çağrılır. Run hizmet durdurulana kadar yürütülmeye devam eder.

CAtlServiceModuleT::SetServiceStatus

Bu yöntem hizmet durumunu güncelleştirir.

void SetServiceStatus(DWORD dwState) throw();

Parametreler

dwState
Yeni durum. Olası değerler için bkz . SetServiceStatus .

Açıklamalar

Hizmet Denetim Yöneticisi'nin hizmet için durum bilgilerini Güncelleştirmeler. CAtlServiceModuleT::Run, CAtlServiceModuleT::ServiceMain ve diğer işleyici yöntemleri tarafından çağrılır. Durum, CAtlServiceModuleT::m_status üye değişkeninde de depolanır.

CAtlServiceModuleT::Start

Hizmet başlatıldığında tarafından CAtlServiceModuleT::WinMain çağrılır.

HRESULT Start(int nShowCmd) throw();

Parametreler

nShowCmd
Pencerenin nasıl gösterileceğini belirtir. Bu parametre, WinMain bölümünde açıklanan değerlerden biri olabilir.

İade Değeri

Başarıda S_OK veya hatada HRESULT hatası döndürür.

Açıklamalar

CAtlServiceModuleT::WinMain yöntemi hem kayıt hem de yükleme işlemlerinin yanı sıra kayıt defteri girdilerini kaldırma ve modülü kaldırmayla ilgili görevleri işler. Hizmet çalıştırıldığında öğesini WinMain çağırır Start.

CAtlServiceModuleT::Uninstall

Hizmeti durdurur ve kaldırır.

BOOL Uninstall() throw();

İade Değeri

Başarılı olduğunda TRUE, hatada YANLIŞ döndürür.

Açıklamalar

Hizmetin çalışmasını durdurur ve Service Control Manager veritabanından kaldırır.

CAtlServiceModuleT::Unlock

Hizmetin kilit sayısını azaltma.

LONG Unlock() throw();

İade Değeri

Tanılama ve hata ayıklama için yararlı olabilecek kilit sayısını döndürür.

CAtlServiceModuleT::UnregisterAppId

Hizmeti kayıt defterinden kaldırır.

HRESULT UnregisterAppId() throw();

İade Değeri

Başarıda S_OK veya hatada HRESULT hatası döndürür.

CAtlServiceModuleT::WinMain

Bu yöntem, hizmeti başlatmak için gereken kodu uygular.

int WinMain(int nShowCmd) throw();

Parametreler

nShowCmd
Pencerenin nasıl gösterileceğini belirtir. Bu parametre, WinMain bölümünde açıklanan değerlerden biri olabilir.

İade Değeri

Hizmetin dönüş değerini döndürür.

Açıklamalar

Bu yöntem komut satırını (CAtlServiceModuleT::P arseCommandLine ile) işler ve hizmeti başlatır (CAtlServiceModuleT::Start kullanarak).

Ayrıca bkz.

CAtlExeModuleT Sınıfı
Sınıfa Genel Bakış