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.
Vanaf Windows 8 is de SPB Framework-extensie (SpbCx) een door het systeem geleverd onderdeel dat ondersteuning biedt voor de SPB I/O-aanvraaginterface. SPB-randapparaatstuurprogramma's gebruiken deze interface om I/O-aanvragen te verzenden naar apparaten die zijn verbonden met I²C, SPI en andere eenvoudige randapparatuurbussen (SPBs). Door een gestandaardiseerde I/O-aanvraaginterface beschikbaar te maken voor verschillende bustypen, vereenvoudigt SpbCx de taak om stuurprogrammaondersteuning te bieden voor een reeks randapparatuur op verschillende hardwareplatforms en SPB-controllers van verschillende hardwareleveranciers.
Als aan de volgende voorwaarden wordt voldaan, kan de hardwareleverancier voor een met SPB verbonden randapparaat één apparaatstuurprogramma ontwikkelen dat in meerdere bustypen kan werken:
- Het randapparaat moet hardware-compatibel zijn met deze bussen.
- Het stuurprogramma kan dezelfde protocollen voor apparaatbeheer gebruiken voor al deze bustypen.
Door busspecifieke code van randapparatuurstuurprogramma's te elimineren, verkort de SPB-frameworkextensie de ontwikkeltijd voor deze stuurprogramma's en zorgt voor consistenter gedrag voor de ondersteunde bustypen.
Randapparatuur die is verbonden met SPBs, is niet toegewezen aan het geheugen en de stuurprogramma's voor deze apparaten hebben geen rechtstreeks toegang tot de hardwareregisters van deze apparaten. In plaats daarvan moet een SPB-randapparaatstuurprogramma afhankelijk zijn van een SPB-controller om gegevens van en naar het apparaat serieel over te dragen. Om een dergelijke overdracht aan te vragen, moet het stuurprogramma een I/O-aanvraag naar het apparaat verzenden. Deze I/O-aanvraag wordt verzonden naar een wachtrij die wordt beheerd door SpbCx.
SpbCx werkt samen met een SPB-controllerstuurprogramma om I/O-aanvragen van stuurprogramma's af te handelen. De hardwareleverancier voor de SPB-controller levert het SPB-controllerstuurprogramma om taken uit te voeren die specifiek zijn voor de controllerhardware.
Alleen stuurprogramma's kunnen I/O-aanvragen verzenden naar de I/O-aanvraaginterface van een SPB-controller. Toepassingen kunnen geen I/O-aanvragen rechtstreeks verzenden naar een SPB-controller. In plaats daarvan kan een toepassing I/O-aanvragen verzenden naar het stuurprogramma voor een met SPB verbonden randapparaat en vervolgens vertrouwen op het stuurprogramma om de SPB-controller alle I/O-aanvragen te verzenden die mogelijk nodig zijn om gegevens over te dragen naar of van het apparaat.
Voordat een stuurprogramma I/O-aanvragen naar een met SPB verbonden randapparaat kan verzenden, moet het stuurprogramma een logische verbinding met het apparaat openen. Om deze verbinding te openen, gebruikt het stuurprogramma de verbindings-id die het heeft ontvangen als een hardwareresource van de Plug en Play-manager. Zie Verbindings-id's voor SPB-randapparatuur voor meer informatie.
SpbCx en het stuurprogramma van de SPB-controller verwerken gezamenlijk lees- en schrijfaanvragen voor met SPB verbonden randapparatuur. In reactie op een IRP_MJ_READ aanvraag draagt de SPB-controller het opgegeven aantal bytes van een randapparaat over naar een door het stuurprogramma geleverde buffer. In reactie op een IRP_MJ_WRITE aanvraag draagt de SPB-controller het opgegeven aantal bytes over van een door het stuurprogramma geleverde buffer naar een randapparaat.
Voor een IRP_MJ_READ - of IRP_MJ_WRITE aanvraag om nul bytes over te dragen, voltooit SpbCx de aanvraag met een STATUS_SUCCESS statuscode, maar voert geen bewerking uit.
SpbCx en het stuurprogramma van de SPB-controller verwerken deze SPB-specifieke I/O-besturingscodes (IOCTLs):
Een stuurprogramma voor SPB-randapparaten gebruikt deze IOCTL's om I/O-overdrachtprocessen uit te voeren. Een I/O-overdrachtsreeks is een geordende set busoverdrachten (lees- en schrijfbewerkingen) die wordt uitgevoerd als één atomische busbewerking. Voor meer informatie over deze IOCTLs, zie I/O-overdrachtsreeksen.
Het STUURPROGRAMMA van de SPB-controller voor een bepaalde SPB-controller ondersteunt mogelijk aangepaste IOCTL's die hardwarespecifieke functies uitvoeren. Dit zijn IOCTLs die SpbCx niet verwerkt en die de hardwareleverancier voor de SPB-controller ondersteunt voor het voordeel van stuurprogramma's voor SPB-randapparatuur die hardwarespecifieke bewerkingen moeten uitvoeren. Als een SPB-randapparaatstuurprogramma een IOCTL verzendt die noch SpbCx noch het stuurprogramma van de SPB-controller herkent, wordt er geen bewerking uitgevoerd en wordt de I/O-aanvraag voltooid met een foutstatuswaarde van STATUS_NOT_SUPPORTED.
Het stuurprogramma voor een met SPB verbonden randapparaat is doorgaans een User-Mode Driver Framework-stuurprogramma (UMDF) of een Kernel-Mode Driver Framework-stuurprogramma (KMDF). Als u een lees-, schrijf- of IOCTL-aanvraag wilt verzenden naar een met SPB verbonden randapparaat, roept een UMDF-stuurprogramma een methode aan, zoals IWDFIoRequest::Send. Een KMDF-stuurprogramma roept een methode aan, zoals WdfIoTargetSendReadSynchronously, WdfIoTargetSendWriteSynchronously of WdfIoTargetSendIoctlSynchronously.
Zie de volgende onderwerpen voor codevoorbeelden die laten zien hoe U I/O-aanvragen verzendt naar met SPB verbonden randapparatuur:
Hardwarebronnen voor User-Mode SPB-randapparatuurstuurprogramma's
Hardwarebronnen voor Kernel-Mode SPB-stuurprogramma's voor randapparatuur