Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
[Funkce přidružená k této stránce, Waveform Audio, je starší funkce. Byla nahrazena WASAPI a audio graphs. WASAPI a zvukové grafy byly optimalizované pro Windows 10 a Windows 11. Microsoft důrazně doporučuje, aby nový kód používal WASAPI a Audio Graphs místo Waveform Audio, pokud je to možné. Microsoft navrhuje, aby se stávající kód, který používá starší rozhraní API, přepsal, aby se nová rozhraní API používala, pokud je to možné.]
Funkce waveInAddBuffer a waveOutWrite vyžadují, aby aplikace přidělily datové bloky, které se mají předat ovladačům zařízení pro účely nahrávání nebo přehrávání. Obě tyto funkce používají strukturu WAVEHDR k popisu datového bloku.
Než použijete některou z těchto funkcí k předání datového bloku ovladači zařízení, musíte přidělit paměť pro datový blok a strukturu hlaviček, která popisuje datový blok. Hlavičky je možné připravit a nepřipraveny pomocí následujících funkcí.
| Funkce | Popis |
|---|---|
| waveInPrepareHeader | Připraví blok dat s vlnovým vstupem a zvukem. |
| waveInUnprepareHeader | Vyčistí přípravu na datový blok vstupu waveform-audio. |
| waveOutPrepareHeader | Připraví výstupní datový blok waveform-audio. |
| waveOutUnprepareHeader | Vyčistí přípravu na výstupní datový blok waveform-audio. |
Před předáním zvukového bloku dat ovladači zařízení je nutné připravit datový blok předáním do waveInPrepareHeader nebo waveOutPrepareHeader. Jakmile se ovladač zařízení dokončí s datovým blokem a vrátí ho, musíte tuto přípravu vyčistit předáním datového bloku do waveInUnprepareHeader nebo waveOutUnprepareHeader předtím, než bude možné uvolnit přidělenou paměť.
Pokud není vstup a výstupní data waveform-audio dostatečně malá, aby byla obsažena v jednom datovém bloku, musí aplikace nepřetržitě dodat ovladač zařízení datovými bloky, dokud nebude přehrávání nebo záznam dokončeno.
I když se použije jeden datový blok, musí být aplikace schopná určit, kdy se ovladač zařízení dokončí s datovým blokem, aby aplikace mohla uvolnit paměť přidruženou k datovému bloku a struktuře hlaviček. Existuje několik způsobů, jak určit, kdy se ovladač zařízení dokončí s datovým blokem:
- Zadáním funkce zpětného volání pro příjem zprávy odesílané ovladačem po dokončení s datovým blokem
- Pomocí zpětného volání události
- Zadáním okna nebo vlákna pro příjem zprávy odeslané ovladačem po dokončení datového bloku
- Dotazováním WHDR_DONE bitu v dwFlags člen struktury WAVEHDR odesílané s každým datovým blokem
Pokud aplikace v případě potřeby nezíská datový blok ovladače zařízení, může při přehrávání dojít ke zvukové mezerě nebo ztrátě příchozích zaznamenaných informací. To vyžaduje alespoň schéma dvojité vyrovnávací paměti – zůstat alespoň jeden datový blok před ovladačem zařízení.
Následující témata popisují způsoby, jak určit, kdy je ovladač zařízení dokončen s datovým blokem:
Použití funkce zpětného volání ke zpracování zpráv ovladače
- použití funkce zpětného volání ke zpracování zpráv ovladačů
- použití zpětného volání události ke zpracování zpráv ovladače
- zpracování zpráv ovladače pomocí okna nebo vlákna
- správa datových bloků dotazováním