Programmera en enhet för en I/O-åtgärd

Använd följande allmänna riktlinjer för att utforma, skriva och anropa SynchCritSection rutiner som programmerar en enhet för I/O-åtgärder:

  • En SynchCritSection- rutin som programmerar enheten för I/O-åtgärder måste returnera kontrollen så snabbt som möjligt.

    Därför bör SynchCritSection- rutin bara göra vad som krävs för att konfigurera enheten för I/O. Därför bör drivrutinen utföra all IRP-förbearbetning, initiera tillståndsinformation för andra drivrutinsrutiner och hämta maskinvaruresurser innan den anropar SynchCritSection rutin.

  • En enhetsdrivrutin kan ha flera SynchCritSection rutiner för att programmera enheten.

    Till exempel kan drivrutinen för en enhet, där inställningen av en läsbegäran skiljer sig markant från inställningen av vissa enhetskontrollbegäranden, ha separata SynchCritSection-rutiner för att programmera enheten för varje typ av begäran.

  • Varje SynchCritSection- rutin måste returnera kontrollen så snabbt som möjligt, eftersom körning av SynchCritSection- rutin förhindrar att drivrutinens ISR körs.

    Du bör inte skriva en enda, stor, generell SynchCritSection- rutin med en switch--instruktion eller många kapslade om.. då.. annars instruktioner för att avgöra vilka åtgärder som ska utföras eller vilken tillståndsinformation som ska uppdateras. Å andra sidan bör du undvika att skriva många SynchCritSection rutiner som endast programmerar ett enda enhetsregister.