私はここからの指示を使用しています:http://msdn.microsoft.com/en-us/library/ms257351(VS.80).aspxを管理するイベントクラスを作成します。私が書いたコードは次のとおりです。管理WMIイベントクラスは、イベントのクラスではないでしょうか?
[ManagementEntity]
[InstrumentationClass(InstrumentationType.Event)]
public class MyEvent
{
[ManagementKey]
public string ID { get; set; }
[ManagementEnumerator]
static public IEnumerable<MyEvent> EnumerateInstances()
{
var e = new MyEvent() { ID = "9A3C1B7E-8F3E-4C54-8030-B0169DE922C6" };
return new MyEvent[] { e };
}
}
class Program
{
static void Main(string[] args)
{
var thisAssembly = typeof(Program).Assembly;
var wmi_installer = new AssemblyInstaller(thisAssembly, null);
wmi_installer.Install(null);
wmi_installer.Commit(null);
InstrumentationManager.RegisterAssembly(thisAssembly);
Console.Write("Press Enter...");
Console.ReadLine();
var e = new MyEvent() { ID = "A6144A9E-0667-415B-9903-220652AB7334" };
Instrumentation.Fire(e);
Console.Write("Press Enter...");
Console.ReadLine();
wmi_installer.Uninstall(null);
}
}
私はプログラムを実行することができ、正しくインストールされます。私はイベントに閲覧することができwbemtest.exe使用し、「ショーのMOF」:
[dynamic: ToInstance, provider("WmiTest,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null")]
class MyEvent
{
[read, key] string ID;
};
お知らせ、クラスが...奇妙です__ExtrinsicEvent
、から継承しない
私もselect * from MyEvent
を実行することができ、およびget the result。 Instrumentation.Fire()
もエラーを返しません。私は「通知クエリ」optionを使用してイベントをサブスクライブしようとしているときしかし、私は取得しています0x80041059
番号:0x80041059
施設:WMI
説明:クラスのイベントではありませんクラス。
私は間違っていますが、管理されたWMIイベントを作成する正しい方法はありますか?