2011-11-16 14 views
6

D7でWindowsサービスを作成しました。 は今日までは完璧に動きました。0x0eedfade kernelbase.dll d7 Windowsサービスのモジュールの障害

フォールティングアプリケーション名:XServ12.exe、バージョン:0.0.0.0、タイムスタンプ:0x2a425e19 フォールティングモジュール名:KERNELBASE.dll、バージョン:6.1.7600.16385、タイム

は、イベントでは、私はエラーを取得するログスタンプ: 例外コード0x4a5bdbdf:0x0eedfade 障害オフセット:0x0000b727 断層のプロセスID:0xbb4 エラー発生アプリケーションの開始時刻:私はユニットの初期化セクションと、それそれ、多分問題どこかで読ん0x01cca43b2aee203a

を。 さて、プロジェクトのほとんどすべてのユニットを削除し、残しました:Sysutils、CLasses、Dialogs。 Dialogs.pasユニットが存在するとき、私はそれを削除するとエラーが残っています。プログラムはプロジェクトdprセクションの終わりに移動します。

さらに、これらの3つのユニットがすべてあっても手動でexeを実行するだけでも完全に正常に起動します。システムサービスからサービスを実行しようとすると、エラーのみが発生します...

コンピュータを再起動しても問題ありません。 ...

アイデア?

+3

この呼び出しの内容を理解するには、スタックトレースを取得する必要があります。デバッガまたはmadExceptを使用します。 –

答えて

8

0x0eedfadeは、デルファイプロセスの外側で伝播されることがあります(unhandled Delphi exception)。 Dialogsユニットでリンクするときにのみ問題が発生した場合は、その初期化やそれに依存するユニットの初期化が処理されず、Delphiのプロセスから抜ける例外が発生する可能性があります。

サービスは、孤立したセッション(this documentに記載)で実行され、Windows UIサブシステム(ステーション、デスクトップ、ウィンドウ)にアクセスできなくなるという事実に関連している可能性があります。つまり、interactive servicesを忘れてしまいます。

+0

そして、この点をさらに明確にするために、「ダイアログ」ユニットは、とにかく使用できないので忘れてしまいます - インタラクティブサービスは不可能になっています。 –