Sdílet prostřednictvím


Statický výčet

Statický výčet je schopnost řidiče detekovat a hlásit existenci zařízení během inicializace systému s omezenou schopností hlásit následné změny konfigurace systému.

Ovladače sběrnice můžou použít statický výčet, pokud je počet a typ zařízení nebo funkční podnitů předem určen a trvalý a nezávisí na konfiguraci systému, na kterém je ovladač spuštěný.

Ovladač zvukové karty může například fungovat jako ovladač sběrnice a vytvářet samostatné objekty fyzického zařízení (PDO) pro každou z možností karty, jako je MIDI, zvuk a joystick.

Statické podřízené seznamy

Architektura umožňuje ovladačům podporovat statické výčty tím, že poskytuje statické podřízené seznamy. Každý statický podřízený seznam představuje seznam podřízených zařízení připojených k nadřazeným zařízením. Ovladač sběrnice pro nadřazené zařízení musí identifikovat dílčí zařízení nadřazeného zařízení, přidat je do statického seznamu podřízených zařízení nadřazeného zařízení a vytvořit PDO pro každé podřízené zařízení.

Vytvoření statického podřízeného seznamu

Pokaždé, když ovladač vytvoří objekt zařízení architektury, který představuje funkční objekt zařízení (FDO) pro zařízení, architektura vytvoří pro zařízení prázdný statický seznam podřízených objektů.

Když rámec zavolá funkci zpětného volání EvtDriverDeviceAdd ovladače sběrnice, tato funkce musí zavolat WdfDeviceCreate k vytvoření FDO pro nadřazené zařízení. Další informace o vytvoření objektu FDO naleznete v tématu Vytváření objektů zařízení v ovladači funkce.

Ovladač pak musí vyjmenovat podřízená zařízení nadřazeného zařízení, vytvořit fyzické objekty zařízení (PDO) pro tyto děti a přidat je do seznamu podřízených zařízení.

Volitelně může ovladač volat WdfDeviceSetBusInformationForChildren, aby rozhraní poskytl informace o sběrnici. Je doporučeno to udělat, protože tím usnadníte podřízeným zařízením a aplikacím identifikaci sběrnice.

K vytvoření PDO pro detekované podřízené zařízení musí sběrnicový ovladač:

  1. Pro volání WdfPdoInitAllocate pro získání struktury WDFDEVICE_INIT.

  2. Inicializujte strukturu WDFDEVICE_INIT

  3. Volejte WdfDeviceCreate k vytvoření objektu zařízení architektury frameworku, který představuje PDO.

Další informace o vytvoření pdO naleznete v tématu Vytváření objektů zařízení v ovladači sběrnice.

Po volání WdfDeviceCreate musí ovladač volat WdfFdoAddStaticChild, aby přidal podřízené zařízení do podřízeného seznamu.

Úprava statického podřízeného seznamu

Vzhledem k tomu, že ovladače by měly používat statické podřízené seznamy pouze pro konfigurace zařízení, které jsou předem definované a trvalé, není potřeba, aby ovladač po vytvoření změnil statický podřízený seznam. Pokud ovladač zjistí, že je podřízené zařízení nedostupné, může ovladač volat WdfPdoMarkMissing. (Pokud podřízené zařízení zůstane přístupné, ale přestane reagovat a stane se nepoužitelným, měl by ovladač nastavit člen struktury WDF_DEVICE_STATEFailed na WdfTrue a potom volat WdfDeviceSetDeviceState.)

Procházení statického podřízeného seznamu

Pokud potřebujete načíst obsah statického podřízeného seznamu, může ovladač procházet seznam následujícím způsobem:

  1. Volání WdfFdoLockStaticChildListForIteration.

  2. Volání WdfFdoRetrieveNextStaticChild tolikrát, kolikrát je to potřeba.

  3. Volání WdfFdoUnlockStaticChildListFromIteration.