Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Secure Digital (SD)-kaartstuurprogramma's hebben geen interruptserviceroutines (ISR's) en verwerven geen interruptverzoek (IRQ)-middelen. Het SD-busstuurprogramma detecteert en onderschept hardwareonderbreken en rapporteert deze vervolgens aan het apparaatstuurprogramma door middel van de terugbelroutine voor interruptmeldingen PSDBUS_CALLBACK_ROUTINE, zoals wordt uitgelegd in secties Secure Digital (SD) Driver Stack en Het openen en initialiseren van een SD Bus Interface.
Het apparaatstuurprogramma hoeft de onderbrekingsverwerking niet te voltooien in de context van de callbackroutine voor interruptmeldingen. Het stuurprogramma kan terugkeren uit de callback-routine en de interruptverwerking in zijn eigen context afronden. Wanneer het stuurprogramma klaar is met het verwerken van de interrupt, informeert het de buschauffeur door een expliciete aanroep naar een onderbrekingsbevestigingsroutine die is geleverd met de SD-businterface. Zie PSDBUS_ACKNOWLEDGE_INT_ROUTINEvoor meer informatie over de interruptbevestigingsroutine. Wanneer de buschauffeur deze oproep ontvangt, wordt de interrupt opnieuw ingeschakeld.
SD-apparaatstuurprogramma's hebben twee opties met betrekking tot de IRQ-niveaus (IRQLs) waarop ze worden uitgevoerd. Een SD-stuurprogramma kan uitsluitend worden uitgevoerd op PASSIVE_LEVEL, of het kan worden uitgevoerd op DISPATCH_LEVEL in de context van de callbackroutine voor interruptmeldingen en op PASSIVE_LEVEL de rest van de tijd. Wanneer een SD-apparaatstuurprogramma exclusief op PASSIVE_LEVEL draait, neemt het busstuurprogramma de verantwoordelijkheid voor het synchroniseren van interrupts. Kies deze optie als uw apparaat zonder strikte limieten voor onderbrekingslatentie kan werken, omdat het ontwerp van uw stuurprogramma wordt vereenvoudigd. Naast het offloaden van de taak van interruptsynchronisatie naar het busstuurprogramma, zijn er andere voordelen. Stuurprogramma's moeten bijvoorbeeld regelmatig gegevens overdragen als reactie op een interrupt. Als de callbackroutine van het stuurprogramma wordt uitgevoerd op PASSIVE_LEVEL, is het gratis om een synchrone I/O-bewerking uit te voeren in plaats van een asynchrone bewerking. Als de callback-routine wordt uitgevoerd op DISPATCH_LEVEL, moet het stuurprogramma wachten totdat het wordt uitgevoerd op een lagere IRQL voordat het synchrone I/O doet.
Een SD-apparaatstuurprogramma geeft de IRQL op waarop deze wordt uitgevoerd wanneer de SD-businterface wordt geïnitialiseerd. Om uit te voeren op DISPATCH_LEVEL in de interrupt notification callback routine, moet de driver het CallbackAtDpcLevel lid van het SDBUS_INTERFACE_PARAMETERS structuur instellen op TRUE en deze structuur doorgeven aan de interface initialisatieroutine. Zie PSDBUS_INITIALIZE_INTERFACE_ROUTINEvoor een beschrijving van de interfaceroutine. Om uitsluitend op PASSIVE_LEVEL te draaien, moet de driver CallbackAtDpcLevel instellen op FALSE.