次の方法で共有


WMI 登録情報の更新

WMI への初回登録後、ドライバーは、次のいずれかのアクションで IoWMIRegistrationControl を呼び出すことによって登録情報を変更します。

  • WMIREG_ACTION_REREGISTER は、以前ドライバーによって提供されたすべての登録情報を新しい情報に置き換えます。

    応答として、WMI は、Parameters.WMI.DataPath を WMIREGISTER に設定して、IRP_MN_REGINFO 要求または IRP_MN_REGINFO_EX 要求をドライバーに送信します。 (Windows 98 および Windows 2000 では、システムは IRP_MN_REGINFO 要求を送信します。Windows XP 以降では、システムは IRP_MN_REGINFO_EX 要求を送信します)

    ドライバーは、「WMI ライブラリを使用してブロックを登録し、ブロックを登録する IRP_MN_REGINFO と IRP_MN_REGINFO_EX を処理する」の説明に従って、サポートされているすべてのブロックの新しい登録情報を WMI に提供します。

  • WMIREG_ACTION_UPDATE_GUIDS は、ブロックのサポートを追加または削除したり、登録済みブロックの静的インスタンス名を変更します。

    応答として、WMI は Parameters.Wmi.DataPath を WMIUPDATE に設定して、IRP_MN_REGINFO または IRP_MN_REGINFO_EX 要求をドライバーに送信します。

    ドライバーは、次の情報を含む更新された登録情報を WMI に提供します。

    • ドライバーは、WMIREG_FLAG_REMOVE_GUID を設定して、そのブロックのサポートを削除します。

    • ドライバーは、WMIREG_FLAG_REMOVE_GUID をクリアし、新しいブロックを追加、もしくは既存のブロックを更新します。

    • ドライバーは、WMIREG_FLAG_INSTANCE_XXX を設定またはクリア、および必要なインスタンス名情報を提供して、ブロックの静的インスタンス名を変更したり、動的インスタンス名を使用するように変更します。

  • WMIREG_ACTION_DEREGISTER は、ドライバーが WMI 情報を提供しなくなったことを WMI に指示します。

    WMI は、この呼び出しに応答して IRP_MN_REGINFO または IRP_MN_REGINFO_EX 要求を送信しません。これは、ドライバーからの追加情報を必要としないためです。 ドライバーは通常、IRP_MN_REMOVE_DEVICE 要求に応答してブロックの登録を解除します。 登録解除呼び出しは、デバイスに対するすべての WMI IRP が完了するまでブロックされることに注意してください。 ドライバーが WMI IRP をキューに入れる場合は、IoWMIRegistrationControl を呼び出して登録を解除する前に、それらを取り消す必要があります。