Delen via


Mogelijkheden van Storport

Het Storport-stuurprogramma biedt de volgende mogelijkheden:

  • Adressering

    Microsoft Windows ondersteunt systemen die verschillende typen I/O-bussen en/of verschillende I/O-bussen van hetzelfde type bevatten. Er is een gemeenschappelijk adresseringsschema nodig om deze variëteit af te handelen.

    PCI-apparaten kunnen zowel I/O-poort- als geheugenregisterbronnen hebben. Logische adressen helpen dit onderscheid transparant te maken voor het poortstuurprogramma.

    Sommige systemen bevatten HBA's die zijn verbonden met meer dan één bus; een dergelijke HBA kan verschillende sets adresvertalingen vereisen.

    Logische adressen zijn nodig voor portabiliteit op CISC- en RISC-computers.

  • nieuwe pogingen en foutafhandeling

    • Stuurprogramma's van opslagklasse hoeven geen algoritmen te implementeren voor het opnieuw proberen van IRP's wanneer apparaten te druk zijn om ze te verwerken. Het Storport-stuurprogramma implementeert deze functionaliteit.

    • Het stuurprogramma voor klassen stelt een time-outwaarde in voor aanvragen en Storport is verantwoordelijk voor het afdwingen ervan. Het Storport-stuurprogramma kan echter de time-outwaarden van de klassechauffeur flexibel afdwingen, waarbij rekening wordt gehouden met de status van de bus. Als een Fibre Channel-koppeling die wordt beheerd door Storport bijvoorbeeld gedurende 20 seconden afneemt, kan Storport de time-outteller tijdens de uitvaltijd onderbreken, zodat aanvragen met een time-out van 10 seconden niet mislukken tot 10 seconden nadat de koppeling is hersteld. Storport verhoogt de time-outwaarden die zijn toegewezen aan aanvragen als reactie op een toename van het I/O-verkeer, omdat bij zwaarder I/O-verkeer voor de apparaten meer tijd nodig is om aanvragen te voltooien.

    • Storport verwerkt doel- en controller-bezet fouten, evenals transportfoutomstandigheden (met andere woorden, fouten die betrekking hebben op de daadwerkelijke overdracht van gegevens op de bus). Voorbeeld:

      • buspariteitsfouten
      • time-outs voor selectie
  • Configuratie, wachtrijen en energiebeheer van de energiestatus

    • Klassestuurprogramma's voorzien van informatie over beperkingen van hostadapters: het is de verantwoordelijkheid van het klassestuurprogramma om de grootte van gegevensoverdrachten te reguleren aan de limieten van de hostbusadapters (HBA's). Storport biedt het klassestuurprogramma echter de informatie die nodig is om deze taak uit te voeren. Storport verstrekt deze informatie in een adapterdescriptor (STORAGE_ADAPTER_DESCRIPTOR) als reactie op een IOCTL-aanvraag (IOCTL_STORAGE_QUERY_PROPERTY). Het klassestuurprogramma is verantwoordelijk voor het opsplitsen van aanvragen in segmenten van de juiste grootte op basis van de informatie die in deze descriptor is gerapporteerd.

    • Bus-relatieve adressen vertalen naar logische adressen: wanneer query's worden uitgevoerd, leveren adapters bus-relatieve adressen voor I/O-poorten, opdrachtregisters en controlestatusregisters. Een minipoortstuurprogramma kan echter geen bus-relatieve adressen gebruiken om te communiceren met de hostbusadapter (HBA). Storport vertaalt bus-relatieve adressen naar logische adressen, zodat minipoortstuurprogramma's op transparante wijze toegang hebben tot busadressen. Er zijn verschillende redenen hiervoor:

    • Ervoor zorgen dat een apparaat en alle onderliggende apparaten worden ingeschakeld (in de vermogenstoestand D0) voordat het apparaat wordt gestart: Wanneer een apparaat niet gereed is om te worden ingeschakeld, plaatst Storport een D0-verzoek in de wachtrij voor dat apparaat totdat het apparaat gereed is.

    • Asynchrone aanvragen van klassestuurprogramma's in de wachtrij plaatsen en deze asynchroon doorsturen naar het doelapparaat: klassestuurprogramma's hoeven niet te wachten totdat een aanvraag is voltooid voordat de volgende aanvraag wordt verzonden. Storport neemt de verantwoordelijkheid voor het in de wachtrij plaatsen van deze aanvragen om te voorkomen dat de verwerkingskracht van de onderliggende hardware wordt overstuurd.

    • Ondersteuning voor zowel intern als extern beheer van interne I/O-aanvraagwachtrijen: de meeste bewerkingen voor wachtrijbeheer worden gestart door Storport zelf. Storport blokkeert bijvoorbeeld de wachtrij wanneer er een fout optreedt en rapporteert de foutvoorwaarde aan het klassestuurprogramma, zodat het klassestuurprogramma kan reageren voordat verdere aanvragen worden verwerkt. Storport reageert echter ook op aanvragen van het klassestuurprogramma of andere stuurprogramma's op een hoger niveau om de interne aanvraagwachtrij te vergrendelen, ontgrendelen, blokkeren of de blokkering ervan op te heffen. Stuurprogramma's op een hoger niveau kunnen Storport dwingen om de blokkering van de interne wachtrij op te heffen met behulp van het SRB_FUNCTION_RELEASE_QUEUE-verzoek. Zie Storport Queue Managementvoor een uitleg van wat het betekent om een wachtrij te 'blokkeren', 'vergrendelen' of 'ontgrendelen'.

    • Fouten vertalen die door het apparaat worden gerapporteerd in de gegevensindeling SCSI-3 voor verwerking door het klassestuurprogramma.

Storport biedt services aan de miniportstuurprogramma via de Storport-bibliotheekroutines. Schrijvers van miniportstuurprogramma's kunnen deze routines aanroepen in plaats van de functionaliteit te coderen die ze bieden in één monolithisch poortstuurprogramma. Enkele van de belangrijkste services die worden geboden met behulp van deze routines zijn als volgt:

  • Een minipoortstuurprogramma voor Storport kan veel initialisatiebewerkingen die afhankelijk zijn van het besturingssysteem delegeren aan de StorPortInitialize bibliotheekroutine. Het Storport-stuurprogramma verwerkt bijvoorbeeld de details met betrekking tot PnP- en DMA-toewijzing. Dit vermindert de hoeveelheid werk die een Storport-minipoortstuurprogramma moet doen. Zie Hardware initialisatie met Storportvoor een uitleg van de initialisatietaken van een Storport-minipoortstuurprogramma.

  • Storport-minipoortstuurprogramma's voor niet-PnP-apparaten hoeven de adapters niet te lokaliseren en hun resources niet rapporteren aan de PnP-beheerder. Dit wordt gedaan in StorPortInitialize.

  • Storport-minipoortstuurprogramma's initialiseren geen verzendinvoerpunten in het stuurprogrammaobject. Het Storport-stuurprogramma doet dit namens het minipoortstuurprogramma wanneer het minipoortstuurprogramma StorPortInitializeaanroept.

  • Storport minipoortstuurprogramma's converteren geen bus-relatieve adressen naar logische adressen met behulp van HalTranslateBusAddress. Storport-minipoortstuurprogramma's doen dit door een aanroep naar StorPortGetDeviceBase.

Zie Storport Driver Support Routinesvoor een volledige lijst met bibliotheekroutines die door Storport beschikbaar worden gesteld voor Storport-minipoortstuurprogramma's.