Sdílet prostřednictvím


Výčet zařízení ACX

Toto téma popisuje výčet, spuštění a vypnutí zařízení a rovnováhu zařízení. Obecný přehled rozšíření audio třídy ACX naleznete v tématu přehled. Informace o řízení spotřeby ACX a PnP naleznete v tématu řízení spotřeby ACX.

Výčet a spouštění zařízení ACX pro statická zvuková zařízení

Abyste se dozvěděli, jak funguje startup ACX, bude popsán následující scénář.

  • Zvukové zařízení je reprezentováno jedním okruhem.
  • Životnost zvukového nebo elektronického obvodu je svázaná s životností zařízení PnP.
  • Jedno zařízení může vytvořit více okruhů pro různá zvuková zařízení.
  • Prostředí režimu jádra KMDF.

Posloupnost spuštění je:

ACX Stream – přidat

  • Přidání toku ACX (instance) do okruhu ACX (zpětná volání ACX na obvodech ACX) – vyvoláno kdykoli po inicializaci nebo restartu samořízeného V/V systému WDF, když je zařízení ve stavu D0. Okruhově vymezený.
    • Vstup: AcxStreamInit context, ACXCIRCUIT.
    • Přidejte zpětná volání.
    • Vytvořte AcxStream (instance).
    • Volitelně můžete provést inicializaci instance související s post streamem.
    • Při návratu ACX aktivuje tuto instanci proudu, a protože v tomto scénáři je jediným na zvukové cestě, umožňuje průchod zprávám proudu.

Výčet a spouštění zařízení ACX pro dynamická zvuková zařízení

V tomto scénáři se předpokládá následující.

  • Podpora dynamického zvuku (vytváření nebo odstraňování zvukových zařízení za běhu)
  • Životnost zařízení není svázaná s životností okruhu.
  • Jedno zařízení může vytvořit více okruhů pro různá zvuková zařízení.
  • Navazuje na jednoduchý statický vzor popsaný výše přidáním prvků specifických pro dynamický vzor.
  • Používá nezpracované vnořené PDO.
  • Prostředí pro režim jádra KMDF.

Posloupnost spuštění pro tento scénář je:

  • WDM DriverEntry. Obor řidiče.

    • Inicializační trasování.
    • Volitelně se zaregistrujte pro odhlášení.
    • Vytvořte WDFDRIVER.
    • Zavolejte ACX kvůli provedení jakékoli inicializace ovladače.
    • Volitelně můžete provést jakoukoli inicializaci ovladače post.
  • WDF DeviceAdd. Obor zařízení.

    • Zavolejte ACX pro inicializaci kontextu zařízení.
    • Vytvořte zařízení.
    • Zavolejte ACX po inicializaci zařízení.
    • Volitelně můžete provést jakoukoli inicializaci po zařízení.
  • WDF PrepareHardware. Obor zařízení.

    • Vytvořte a inicializujte hardwarové prostředky pro přerušení a vlákna, a zaregistrujte je k ACX.
  • Zpětné volání při vstupu zařízení WDF do úrovně D0 Rozsah zařízení.

  • Fronty WDF byly restartovány.

  • WDF DeviceSelfManagedIoInit. Obor zařízení.

  • WDF - Restartování samoobslužného vstupu/výstupu zařízení. Rozsah zařízení.

    • Inicializace po každém zapnutí z Dx.

Vytváření dynamických okruhů (kdykoli)

  • Ovladač přidělí struktury WDFDEVICE_INIT voláním WdfPdoInitAllocate. Ovladač je zodpovědný za vyvolání WdfDeviceInitFree, pokud dojde k selháním před úspěšným vytvořením zařízení.
  • Ovladač určuje všechny PnP/power callbacks, které chce přijímat.
  • Ovladač vytvoří zařízení.
  • Ovladač inicializuje nové zařízení/okruh voláním AcxDeviceAddCircuitDevice.
  • WDF/PnP převezme kontrolu a poté nastane jednoduchý vzor výčtu/spuštění, jak je popsáno v předchozí části.

AcxFactoryCircuit

Ovladač ACX může také vytvořit objekty AcxFactoryCircuit (zprostředkovatele okruhu) během sekvence napájení pomocí funkce AcxFactoryCircuitCreate a funkce AcxDeviceAddFactoryCircuit.

Vzhledem k tomu, že se ovladač ACX zaregistroval u ACX jako výrobce obvodů, rámec ACX používá zaregistrovaného výrobce k tomu, aby požádal ovladač o vytvoření nového obvodu.

AcxFactoryCircuitCreate(Device, &attributes, &factoryInit, &factory);

AcxDeviceAddFactoryCircuit(Device, factory);

Vyvážení rovnováhy zařízení ACX

Vyrovnávání se provádí, když využití systémových prostředků vyžaduje, aby operační systém znovu vyrovnává prostředky mezi zařízeními. Obecné informace o vyrovnávání najdete v tématu Implementace vyrovnávání PnP pro ovladače zvuku PortCls.

ACX podporuje vyrovnávání zařízení následujícím způsobem:

  • V sekvenci vypnutí WDF/ACX ovladač uvolní všechny prostředky pro streamování (EvtAcxStreamPowerDown, EvtAcxStreamReleaseHardware), prostředky pro obvod (EvtAcxCircuitPowerDown, EvtAcxCircuitReleaseHardware) a prostředky pro zařízení (EvtDeviceReleaseHardware).

  • Všechny žádosti jsou pozastavené a handly zůstanou otevřené.

  • Při zapínací sekvenci WDF/ACX se ovladač ujistí, že nové prostředky jsou kompatibilní s aktuálními, a provede veškeré povolené úpravy svého nastavení. Pokud prostředky nejsou kompatibilní s inicializací aktuálního zařízení nebo okruhu, musí ovladač odstranit aktuální okruhy a vytvořit nové. Další informace najdete níže.

  • V sekvenci napájení vyvolá WDF svůj EvtDevicePrepareHardware a EvtDeviceD0 vstup a ACX vyvolá odpovídající EvtAcxCircuitPrepareHardware a EvtAcxCircuitPowerUp a přesune všechny datové proudy do svých předchozích stavů.

  • Jakmile se fronty přesunou do stavu napájení nebo spuštění, vstupně-výstupní tok se znovu obnoví.

ACX nepovoluje odebrání (selže odebrání dotazu) nebo obnovení rovnováhy (selhání zastavení dotazu), aby proběhlo, pokud jsou datové proudy v aktivním stavu (RUN).

Ovladače mohou také zvolit vždy zničit a znovu vytvořit zvuková zařízení při přerozdělení. Toto je stejný scénář výše, když zařízení zjistí, že nová nastavení nejsou kompatibilní se starými. Odstranění okruhu musí být provedeno v zpětných voláních EvtDevicePrepareHardware/EvtDeviceReleaseHardware, nový okruh se znovu vytvoří v EvtDevicePrepareHardware. Ovladač odstraní okruh zrušením registrace okruhu (pomocí AcxDeviceRemoveCircuit). Při vyrovnávání by se okruhy továrny normálně neměly odebírat.

Popisovače souborů v uživatelském režimu

ACX nečeká na zavření souborů uživatelského režimu před vytvořením nových okruhů. Životnost popisovačů systému souborů není svázaná s životností hardwarových prostředků využívaných zařízením nebo obvody. Je zodpovědností klientů naslouchat příchodu nebo odstranění rozhraní a uzavřít a znovu otevřít popisovače souborů.

Staré popisovače souborů jsou označené jako zastaralé a ACX nevyřídí všechny vstupně-výstupní požadavky, které s nimi souvisejí.

Viz také

Přehled rozšíření zvukových tříd ACX

referenční dokumentace ACX

Sekvence zpětného volání PnP a řízení spotřeby