ATL サービス ( http://msdn.microsoft.com/en-us/library/74y2334x%28v=vs.80%29.aspx )の代わりにネイティブ Windows API 呼び出し (StartServiceCtrlDispatcher() など) を使用すると、サービスをインストール、アンインストール、または制御しているにもかかわらず、特定の ATL 機能を使用している場合、すべてが台無しになりますか?
3 に答える
サービスで ATL を使用しても安全です。注意すべき 1 つの注意点は、サービスが他のプロセスによって消費される COM サーバーをホストしている場合は、必ずWin2003+ で呼び出すStartServiceCtrlDispatcher()
前に呼び出してください。そうしないと失敗します。以前の OS バージョンでは、呼び出しの順序は重要ではありません。CoRegisterClassObject()
CoRegisterClassObject()
(dotnet ではなく、ネイティブ コードで作業していると思いますが、そうですか?)
ATL や MFC などは、ネイティブの Win32 呼び出しのラッパーです。同じアプリでネイティブとラッパーを使用しても問題はないはずです。
いいえ、ネイティブ WinAPI 呼び出しを介してサービスを制御し、他のものには ATL を使用しても問題ありません。私はこれが本番コードで起こっているのを見たことがあります。たとえば、WinAPI 呼び出しによってサービスが制御されましたが、一部の暗号化機能<atlenc.h>
が使用されていました。
とはいえ、すべての ATL 関数を混在させても安全であるとは保証できません。ATL 関数を使用する前に、その関数の完全なドキュメントを読むことをお勧めします。