Delen via


Functietabellen voor miniportdrivers

Een generieke minipoortstuurprogramma's boveneindinterface (zie WDM Audio Terminologie) bestaat uit functietabellen. Sommige niet-audio miniportstuurprogramma's leveren de functietabel aan het poortstuurprogramma tijdens de registratie, waarna het minipoortstuurprogramma het poortstuurprogramma informeert over de grootte van de contextstructuur die het minipoortstuurprogramma nodig heeft. Het poortstuurprogramma kopieert de functietabel naar een privélocatie, wijst de contextstructuur toe en roept een initialisatiefunctie aan in de functietabel, waarbij een aanwijzer wordt doorgegeven aan de contextstructuur.

Op dezelfde manier maken audio-miniportstuurprogramma's gebruik van functietabellen, maar ze worden statisch toegewezen en hoeven niet te worden gekopieerd door het poortstuurprogramma. Het poortstuurprogramma haalt ook het contextgeheugen ('object') op uit een opgegeven pool en installeert een aanwijzer naar de functietabel in de context. Omdat de functietabelpointer altijd het eerste veld in de context is, heeft het poortstuurprogramma alleen een contextpointer nodig en heeft het toegang tot de functietabel via de context.

Deze aanpak werd genomen omdat COM een solide, efficiënt, op grote schaal begrepen model levert voor het maken van abstracte objecten. Het audiominiport-drivermodel maakt gebruik van de ervaring van de industrie met COM en het geheel van COM-literatuur. Objecten kunnen worden geïmplementeerd en gebruikt in C of C++. Assemblytaal kan ook worden gebruikt, maar mag alleen worden gebruikt als portabiliteit niet vereist is.