1

私が働いている場所では、IE の周りに独自の C++ ラッパーがあり、それを COM オブジェクトとして JScript スクリプトに取り込みます。

一部の JScript コールバックに接続する、このオブジェクトのいくつかのイベントがあります。特に Web ページの「DocumentLoad」イベントには、4 つのコールバック関数が関連付けられています。

これらのコールバックのそれぞれのコードは、ブラウザ オブジェクトのプロパティにアクセスします。それらはすべて場所の URL にアクセスします (最初のコードでアクセスされるのはこれだけです)。

私たちの問題は、このプロパティにアクセスしようとすると、これらの関数で断続的な「許可が拒否されました」(0x800A0046) エラーが発生することです (これは、すべての関数でこのオブジェクトからアクセスされる最初のものです)。常に発生するわけではなく、一部のコールバックで発生する場合もありますが、他のコールバックでは発生しない場合もあります。通常、最初の 1 つまたは 3 つのコールバックは正常に機能しますが、残りはエラーになります。

これは実際のパーミッション拒否エラーではないと思います。これは通常、正しいパーミッションのないファイルにアクセスしようとしたとき、またはブラウザ内スクリプトでページのプロパティにアクセスしようとしたときに発生します。別のドメインからの iFrame。これらはどちらも起こっていることではありませんが、他に何が起こっているのかを見つけることができません。ブラウザー内のアクセス許可が拒否されたことに大まかに関連している可能性があることがわかりますが、なぜ間欠性があるのでしょうか?

アクセス許可が拒否されたというエラーがログに記録される頃に、Windows イベント ログ (Windows 7 の場合) で他のエラーを見つけました。それらは次のとおりです。

  • 0x80040155 - インターフェイスが登録されていません
  • 0xC0000005 - アクセス違反

私の考えでは、何らかの形でオブジェクトが破壊されたり、何か(またはスレッドで何かをするかもしれません) が短時間で発生し、それがエラーの原因になっていると思います。私は COM の専門家ではないので、これをテスト/デバッグする方法がわかりません。

Windows 7 (32 ビット) と Windows XP (32 ビット、SPK2?) の両方で許可拒否エラーが発生しています。

ありとあらゆる助けに感謝します!

4

0 に答える 0