Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
HD Audio DDI finns i tre lite olika versioner som definieras på följande sätt:
En baslinjeversion av HD Audio DDI, som definieras av HDAUDIO_BUS_INTERFACE struktur. De flesta funktionsdrivrutiner för ljud- och modemkodkort kräver endast de funktioner som den här DDI-versionen tillhandahåller. Den här versionen är tillgänglig via HD Audio Bus-drivrutinerna som medföljer Windows XP och Windows Vista.
En förbättrad version av HD Audio DDI som definieras av HDAUDIO_BUS_INTERFACE_V2 struktur. Den här versionen av DDI ger den ytterligare funktion som krävs för att stödja DMA-drivna händelsemeddelanden med flexibilitet. Den finns i Windows Vista och senare versioner av Windows.
En modifierad version av HD Audio DDI som definieras av HDAUDIO_BUS_INTERFACE_BDL struktur. Den här versionen uppfyller kraven för ett relativt fåtal ljud- och modemdrivrutiner som måste ha ytterligare kontroll över konfigurationen av buffertbeskrivningslistor (BDLs) för DMA-åtgärder. Den här versionen av DDI är tillgänglig för Windows XP och senare versioner av Windows. Använd dock antingen HDAUDIO_BUS_INTERFACE eller den HDAUDIO_BUS_INTERFACE_V2 DDI-versionen i stället. .
I alla tre strukturerna matchar namnen och typerna av de första fem medlemmarna de fem medlemmarna i GRÄNSSNITTsstrukturen . Information om värdena för dessa medlemmar finns i Hämta ett HDAUDIO_BUS_INTERFACE DDI-objekt, Hämta ett HDAUDIO_BUS_INTERFACE_V2 DDI-objekt eller Hämta ett HDAUDIO_BUS_INTERFACE_BDL DDI-objekt.
Rutinerna i de tre versionerna av HD Audio DDI utför följande uppgifter:
Överför kommandon till codecs och hämta svaren till dessa kommandon.
Allokera och konfigurera DMA-motorer för att överföra data i återgivnings- och insamlingsströmmar.
Ändra strömtillståndet för en eller flera DMA-motorer till att köra, pausa, stoppa eller återställa.
Reservera länkbandbredd för återgivnings- och insamlingsströmmar.
Ge direkt åtkomst till väggklockans register och länkpositionsregister.
Meddela klienter om oönskade svar från codecs.
Registrera kernelhändelser så att de kan ta emot DMA-förloppsmeddelanden.
De HDAUDIO_BUS_INTERFACE och HDAUDIO_BUS_INTERFACE_BDL versionerna av DDI har följande skillnader:
Strukturen HDAUDIO_BUS_INTERFACE definierar två rutiner, AllocateDmaBuffer och FreeDmaBuffer, som inte finns i HDAUDIO_BUS_INTERFACE_BDL.
Strukturen HDAUDIO_BUS_INTERFACE_BDL definierar tre rutiner, SetupDmaEngineWithBdl, AllocateContiguousDmaBuffer och FreeContiguousDmaBuffer, som inte finns i HDAUDIO_BUS_INTERFACE.
När en klient anropar AllokeraDmaBuffer-rutinen i den första DDI-versionen:
Allokerar en DMA-buffert och BDL för en DMA-motor som ska användas.
Initierar BDL.
Konfigurerar DMA-motorn för att använda bufferten och BDL.
Däremot allokerar rutinen AllocateContiguousDmaBuffer i den andra DDI-versionen lagring för en DMA-buffert och BDL, men förlitar sig på anroparen för att initiera BDL. Rutinen SetupDmaEngineWithBdl konfigurerar DMA-motorn för att använda bufferten och anroparens initierade BDL.
BDL innehåller listan över fysiska minnesblock i DMA-motorns scatter/gather-kö. Genom att anropa SetupDmaEngineWithBdl för att konfigurera BDL kan klienten ange de punkter i dataströmmen där DMA-motorn genererar avbrott. Klienten gör detta genom att ange IOC-biten (interrupt-on-completion) i valda BDL-poster. Med den här funktionen kan klienten exakt styra tidpunkten för de IOK-avbrott som inträffar under bearbetningen av ljudströmmen. Ljudmodemdrivrutiner använder också den andra DDI-versionen för att få korrekt information om systemklockan.
Mer information finns i Ljudspecifikation för Intel High Definition.
Nästan alla klienter använder dock den HDAUDIO_BUS_INTERFACE versionen av DDI. Endast ett fåtal klienter som behöver exakt kontroll över tidpunkten för avbrott använder HDAUDIO_BUS_INTERFACE_BDL version.