Architectuur van Windows Storage-stuurprogramma
Op Windows hebben randapparaten klasse- en filterstuurprogramma's. Deze stuurprogramma's fungeren als een interface tussen tussenliggende of hoogste niveau stuurprogramma's die erboven zijn gelaagd en een door het systeem geleverd poortstuurprogramma.
I/O-aanvragen van een gebruikersapplicatie of kernelcomponent bereiken stuurprogramma's voor opslagklasse via I/O System Services en een of meer tussenliggende of hogere stuurprogramma's, zoals een bestandssysteemstuurprogramma. Stuurprogramma's voor opslagklasse vertalen de standaard-IRP's die ze ontvangen in IRP's met door het systeem gedefinieerde opslagverzoekblokken (SRB's) voordat elke IRP naar het volgende lagere stuurprogramma wordt verzonden. Een stuurprogramma voor een opslagpoort vertaalt SRBs van klassestuurprogramma's in busspecifieke opdrachten, die worden verzonden naar de HBA (Storage Host Bus Adapter) via een I/O-busstuurprogramma en mogelijk een of meer filterstuurprogramma's.
In de volgende afbeelding ziet u de gelaagde architectuur van Windows-opslagstuurprogramma's.
Vanaf de onderkant van de afbeelding:
Een stuurprogramma voor opslagpoorten definieert een interface voor alle Windows-opslagklassestuurprogramma's, inclusief de door het systeem geleverde stuurprogramma's, zoals schijf, tape en dvd. Met deze poort-/klasseinterface worden klassestuurprogramma's geïsoleerd van adapterspecifieke vereisten van de HBA waarmee hun respectieve apparaten zijn verbonden. Een stuurprogramma voor opslagpoort synchroniseert ook de toegang tot de bus voor alle stuurprogramma's van apparaten op de bijbehorende HBA. Het systeem levert opslagpoortstuurprogramma's voor SCSI-, IDE-, USB- en IEEE 1394-adapters.
Een stuurprogramma voor een opslagpoort ontvangt SRBs van het volgende hogere stuurprogramma (een stuurprogramma voor opslagklasse of tussenliggend filterstuurprogramma) en verwerkt deze als volgt:
- Het stuurprogramma voor de opslagpoort geeft SRB's met CDB's door aan een besturingssysteemonafhankelijke, HBA-specifieke Storport miniport-stuurprogramma. Dit minipoortstuurprogramma is dynamisch gekoppeld aan het bijbehorende poortstuurprogramma en biedt hardwarespecifieke ondersteuning voor een bepaalde HBA. Zie Storport Miniport Driversvoor meer informatie over het implementeren van een minipoortstuurprogramma.
- Het stuurprogramma voor de opslagpoort voor een verouderde IDE/ATAPI- of IEEE 1394-bus vertaalt de SRBs die van het stuurprogramma van de opslagklasse zijn ontvangen in de indeling die is vereist voor de onderliggende adapter. Het kan bijvoorbeeld CDBs opnieuw verpakken volgens een busspecifiek transportprotocol. Of het kan ze omzetten in een andere indeling, waardoor stuurprogramma's op het hoogste niveau worden geïsoleerd van eigenaardigheden van de onderliggende bus.
Een stuurprogramma voor opslagfilters boven of onder biedt ondersteuning voor apparaatspecifieke functionaliteit die niet wordt geleverd door een door het systeem geleverd stuurprogramma voor opslagklasse. Een lager filteropslagstuurprogramma bewaakt SRBs en/of IR's die zijn uitgegeven door een stuurprogramma voor opslagklasse. Deze worden zo nodig gewijzigd voordat ze worden doorgegeven aan het volgende lagere stuurprogramma. Dit kan een stuurprogramma voor de opslagpoort of een ander stuurprogramma voor opslagfilters zijn.
Zie Stuurprogramma's voor opslagfiltersvoor meer informatie over het implementeren van een stuurprogramma voor opslagfilters.
Een stuurprogramma voor opslagklasse maakt gebruik van de SCSI-poort/klasse-interface om een apparaat van het type te beheren op elke bus waarvoor het systeem een stuurprogramma voor opslagpoort biedt. Een klassestuurprogramma is specifiek voor een bepaalde klasse apparaat, bijvoorbeeld één klassestuurprogramma kan alle CD-ROM apparaten op elke ondersteunde bus uitvoeren; een andere kan alle schijfapparaten beheren. Het stuurprogramma van de opslagklasse verwerkt I/O-aanvragen van gebruikerstoepassingen of stuurprogramma's hoger in de opslagstack. Het doet dit door SRBs te bouwen met CDBs en deze SRBs te verstrekken aan het volgende lagere stuurprogramma (een opslagpoortstuurprogramma of tussenliggend filterstuurprogramma) alsof het apparaat een SCSI-apparaat zou zijn.
De implementatie van een stuurprogramma voor opslagklasse is transparant voor stuurprogramma's op het hoogste niveau. Een klassestuurprogramma voor een tape- of mediumwisselaarapparaat wordt geïmplementeerd als een apparaatspecifiek miniklassestuurprogramma dat is gekoppeld aan een door het systeem geleverd klassestuurprogramma. Door het systeem geleverde klassestuurprogramma's voor andere opslagapparaten, zoals schijf en cd-rom/dvd, worden geïmplementeerd als enkele monolithische stuurprogramma's.
Zie Storage Class Driversvoor meer informatie over het implementeren van een stuurprogramma voor opslagklassen. Zie Tape Drivers en Changer Driversvoor meer informatie over het implementeren van een tape- of changer-stuurprogramma voor miniklassen.
Een bovenliggende filterdriver voor opslag onderschept IRP's van gebruikersapplicaties en stuurprogramma's die hoger in het opslagsysteem zijn. Vervolgens wordt deze mogelijk gewijzigd voordat deze worden doorgegeven aan het volgende lagere stuurprogramma (een stuurprogramma voor opslagklasse of een ander stuurprogramma voor opslagfilters). Filterstuurprogramma's bewaken doorgaans de prestaties van het onderliggende apparaat.
Het type bus waaraan een apparaat is gekoppeld en de implementatie van het stuurprogramma voor opslagpoorten is transparant voor stuurprogramma's op het hoogste niveau.
Er kan een stuurprogramma voor opslagpoorten worden geïmplementeerd:
- Volgens de architectuur van het poort-/minipoortstuurprogramma, zoals het Storport- of SCSI-poortstuurprogramma.
- Als monolithisch stuurprogramma waarmee één standaardhardware wordt bestuurd, zoals het IDE-/ATAPI-poortstuurprogramma.
- Als filterstuurprogramma dat SRBS vertaalt in de indeling die is vereist voor een andere stuurprogrammastack, zoals het IEEE 1394-poortstuurprogramma.
Het door het systeem geleverde SCSI-poortstuurprogramma kan ook fungeren als een interface tussen een opslagklassestuurprogramma en een SCSI-minipoortstuurprogramma dat een niet-SCSI-opslagapparaat van hetzelfde type beheert. In plaats van bijvoorbeeld een stuurprogramma te schrijven voor een nieuwe schijfmatrixcontroller, kan een schrijver van een stuurprogramma aanzienlijke moeite besparen door een pseudo-SCSI-minipoortstuurprogramma te schrijven dat is gekoppeld aan het stuurprogramma van de systeem-SCSI-poort en de interface gebruikt die het biedt. Een dergelijk minipoortstuurprogramma is vereist om binnenkomende SCSI-opdrachten te vertalen naar apparaatspecifieke opdrachten. Aan de andere kant verwerken de door het systeem geleverde poort- en klassestuurprogramma's veel van het benodigde werk namens een pseudo-SCSI-minipoort. Dit werk omvat registertoegang tijdens de initialisatie, alle resource- en objecttoewijzingen, synchronisatie, het voorbereiden van aangevraagde overdrachten om te voldoen aan de mogelijkheden van het apparaat van de miniport en het opnieuw proberen van verzoeken.