Sdílet prostřednictvím


Odeslání události pomocí WmiFireEvent

Ovladač může volat WmiFireEvent k odesílání událostí, které nepoužívají dynamické názvy instancí a které založí statické názvy instancí na jednom základním řetězci názvu nebo ID instance zařízení primárního objektu.

Událost musí být jednou instancí bloku – to znamená, že ovladač nemůže volat WmiFireEvent k odeslání události, která se skládá z jedné položky nebo více instancí. Pokud chcete takové události odeslat, musí ovladač volat IoWMIWriteEvent, jak je popsáno v části Odesílání události pomocí IoWMIWriteEvent.

Ovladač by neměl odesílat události, dokud rozhraní WMI událost nepovolí. Po aktivaci události, když nastane spouštěcí podmínka události, ovladač:

  1. Přidělí buffer z nestránkového fondu a zapíše do něj data události. Pokud událost nemá žádná data, ovladač může tento krok přeskočit.

  2. Volá WmiFireEvent s následujícími parametry:

    • Ukazatel na objekt zařízení řidiče

    • Ukazatel na identifikátor GUID, který představuje blok událostí

    • Pokud má blok událostí více instancí, index této instance

    • Pokud se data odesílají s událostí, počet bajtů dat nebo 0, pokud žádná

    • Pokud se data odesílají s událostí, ukazatel na ovladačem přidělenou vyrovnávací paměť, která obsahuje data, nebo NULL, pokud žádná.

    Ovladač musí přidělit všechny parametry předané službě WmiFireEvent, včetně vyrovnávací paměti dat události, z nestránkového fondu. WMI uvolní paměť přidělenou ovladačem bez dalšího zásahu ovladače.

Jakmile se WmiFireEvent vrátí, ovladač obnoví monitorování spouštěcí podmínky události a odešle událost pokaždé, když nastane její spouštěcí podmínka, dokud služba WMI tuto událost nezakáže.