Sdílet prostřednictvím


Pokyny pro zápis rutin zpětného volání oznámení PnP

Správce PnP volá rutiny zpětného volání oznámení v IRQL = PASSIVE_LEVEL.

Aby bylo zajištěno hladké fungování subsystému PnP, musí rutina zpětného volání oznámení PnP dodržovat tyto pokyny:

  1. Rutina zpětného volání oznámení nesmí blokovat.

  2. Rutina zpětného volání oznámení nesmí volat ani způsobit volání synchronních rutin, které generují události PnP, ani žádné rutiny, které blokují čekání na instalaci nebo odebrání zařízení.

    Volání takových rutin během zpětného volání oznámení může způsobit zablokování systému.

    Například ovladač nesmí volat IoReportTargetDeviceChange v rutině zpětného volání oznámení. Místo toho volejte IoReportTargetDeviceChangeAsynchronous .

  3. Rutina zpětného volání oznámení by měla vrátit jako úspěch všechny události, které nejsou explicitně označeny jako neúspěšné.

    Když se ovladač registruje k upozorněním na kategorii události, správce PnP upozorní ovladač na všechny události v této kategorii, současné i budoucí. Pokud ovladač vrátí chybový stav pro události, které nezpracovává, riskuje tím, že omylem selže nová dotazová událost.

    Ovladač správně vrátí chybový stav, když například dojde k selhání při dotazování, je-li navrhovaná událost vetována.

  4. Rutina zpětného volání oznámení by měla být stránkovaným kódem.