Erstellen von Geräteobjekten in einem Bustreiber

Jeder Bustreiber muss ein Framework-Geräteobjekt erstellen, wenn er erkennt, dass ein untergeordnetes Gerät mit einem übergeordneten Gerät verbunden ist. Das übergeordnete Gerät ist in der Regel ein Bus, aber es kann auch ein Multifunktionsgerät sein, für das jede Funktion einen separaten Satz von Treibern erfordert (z. B. eine Soundkarte, die digitales Audio und MIDI unterstützt). Die Geräteobjekte, die Von Bustreibern erstellt werden, werden als physische Geräteobjekte (PDOs) bezeichnet, da jedes eine tatsächliche Verbindung zwischen einem Hardwareteil (dem untergeordneten Element) mit einem anderen (dem übergeordneten Element) darstellt.

Der Prozess zum Identifizieren und Melden der Geräte, die mit einem Bus verbunden sind, wird als Busenumeration bezeichnet.

Weitere Informationen zur Busaufzählung finden Sie unter Auflisten der Geräte in einem Bus.

Ein Bustreiber kann eine Reihe von Framework-Geräteobjektinitialisierungsmethoden aufrufen, die Informationen in der WDFDEVICE_INIT-Struktur speichern. Darüber hinaus können Bustreiber Framework-PDO-Initialisierungsmethoden aufrufen.

Das Erstellen eines Framework-Geräteobjekts für ein aufgezähltes untergeordnetes Gerät umfasst in der Regel die folgenden Schritte:

Wenn beim Initialisieren der WDFDEVICE_INIT Struktur, die er aus WdfPdoInitAllocate abgerufen hat, ein Fehler auftritt, muss der Treiber WdfDeviceInitFree anstelle von WdfDeviceCreate aufrufen.

Nachdem der Bustreiber das Geräteobjekt erstellt hat, ruft er in der Regel WdfDeviceSetPnpCapabilities und WdfDeviceSetPowerCapabilities auf, um die Plug & Play und Energiefunktionen des Geräts zu melden.

Jeder Bustreiber ist auch der Funktionstreiber für den Busadapter. Daher muss der Treiber auch eine EvtDriverDeviceAdd-Rückruffunktion bereitstellen. Diese Rückruffunktion erstellt ein funktionales Geräteobjekt (Functional Device Object, FDO) für jeden Busadapter im System. Weitere Informationen zum Erstellen von FDOs finden Sie unter Erstellen von Geräteobjekten in einem Funktionstreiber.