量産メモ帳

忘れっぽいのでメモを残しています。浅く適当に書きます。

0x80041003 エラーを解消する。

スポンサーリンク

Windows Vista のイベントビューアに以下のようなエラーが出ていることに気付きました。*1

ログの名前:     Application
ソース:      Microsoft-Windows-WMI
日付:      2013/01/06 15:17:40
イベント ID:    10
タスクのカテゴリ:   なし
レベル:      エラー
キーワード:     クラシック
ユーザー:     N/A
コンピュータ:    Computer
説明:
クエリ "SELECT * FROM __InstanceModificationEvent WITHIN 60
 WHERE TargetInstance ISA "Win32_Processor" AND TargetInstance.LoadPercentage > 99"
のイベント フィルタを名前空間 "//./root/CIMV2" 内で再度使用できませんでした。
原因はエラー 0x80041003 です。問題が解決されなければ、このフィルタではイベント表示できません。
イベント XML:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
 <System>
  <Provider Name="Microsoft-Windows-WMI" Guid="{1edeee53-0afe-4609-b846-d8c0b2075b1f}"
   EventSourceName="WinMgmt" />
  <EventID Qualifiers="49152">10</EventID>
  <Version>0</Version>
  <Level>2</Level>
  <Task>0</Task>
  <Opcode>0</Opcode>
  <Keywords>0x80000000000000</Keywords>
  <TimeCreated SystemTime="2013-01-06T06:17:40.000Z" />
  <EventRecordID>5598</EventRecordID>
  <Correlation />
  <Execution ProcessID="0" ThreadID="0" />
  <Channel>Application</Channel>
  <Computer>Computer</Computer>
  <Security />
 </System>
 <EventData>
  <Data>//./root/CIMV2</Data>
  <Data>
   SELECT * FROM __InstanceModificationEvent WITHIN 60
   WHERE TargetInstance ISA "Win32_Processor" AND TargetInstance.LoadPercentage > 99
  </Data>
  <Data>0x80041003</Data>
 </EventData>
</Event>



公式サイトには、以下の内容の VBScript ファイル*2を作成して実行するように書かれていました。

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\subscription")

Set obj1 = objWMIService.Get("__EventFilter.Name='BVTFilter'")
set obj2set = obj1.Associators_("__FilterToConsumerBinding")
set obj3set = obj1.References_("__FilterToConsumerBinding")

For each obj2 in obj2set
        WScript.echo "Deleting the object"
        WScript.echo obj2.GetObjectText_
        obj2.Delete_
next

For each obj3 in obj3set
        WScript.echo "Deleting the object"
        WScript.echo obj3.GetObjectText_
        obj3.Delete_
next

WScript.echo "Deleting the object"
WScript.echo obj1.GetObjectText_
obj1.Delete_



ただし単純に実行してもエラーになるので、「管理者として実行」して立ち上げたコマンドプロンプトの中で上述のスクリプトを実行する必要があります。


そもそも、このスクリプトの中に書かれている BVTFilter というものが何者なのか、今のところ分かっていません。
それから何故このエラーが起きるのかも分かりません。
まだ正しく理解できていませんが、以下の記事によれば、CPU使用率が99%を超えると、このエラーが起こりやすくなるようです。



2016年2月20日追記:
BVT というのは Build Verification Test の略のようです。

で、この Build Verification Test というのは、いわゆるスモークテストのことみたいです。

なので、BVTFilter というのはスモークテストで使用しているツールか何かなんじゃないのでしょうか?(適当)


関連記事:

*1:見やすくするため一部改行しました。

*2:拡張子は vbs