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 CAtlServiceModuleT
tü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
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ı CoInitializeSecurity
kullanı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ı ServiceMain
yaptı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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin