Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
En enhetsdrivrutin bör undvika att avsöka enheten om det inte är absolut nödvändigt och bör aldrig använda en hel tidssektor för avsökning. Avsökning av en enhet är en dyr åtgärd som gör alla operativsystemsberäkningsbundna inom avsökningsdrivrutinen. En enhetsdrivrutin som utför mycket pollning stör I/O-operationer på andra enheter och kan göra systemet långsamt och oresponsivt för användare.
Nyligen utvecklade enheter, som är lika tekniskt avancerade som de processorer som Windows är utformat för att köras på, kräver sällan att en drivrutin avsöker enheten, antingen för att säkerställa att enheten är redo att starta en I/O-åtgärd eller att en åtgärd är klar.
Ändå utformades vissa enheter som fortfarande används för att fungera med gamla processorer, som hade smala databussar, långsamma klockfrekvenser och operativsystem med en enda användare som gjorde synkrona I/O. Sådana enheter kan kräva sondering eller något annat sätt att vänta på att enheten ska uppdatera sina register.
Även om det kan verka logiskt att lösa ett problem med långsamma enheter genom att koda en enkel loop som ökar en räknare, vilket "slösar bort" ett minsta intervall medan enhetsuppdateringarna registreras, är det osannolikt att en sådan drivrutin är portabel på Windows-plattformar. Maxvärdet för loopräknaren skulle kräva anpassning för varje plattform. Om drivrutinen kompileras med en bra kompilator för optimering kan kompilatorn dessutom ta bort drivrutinsräknarens variabel och de loopar där den ökas.
Notera Följ den här implementeringsguiden om drivrutinen måste stanna medan enheten uppdaterar sin maskinvarustatus: En drivrutin kan anropa KeStallExecutionProcessor innan den läser enhetsregister. Drivrutinen bör minimera den tid den står stilla och bör i allmänhet ange ett stilleståndsintervall som inte överstiger 50 mikrosekunder.
Kornigheten för ett KeStallExecutionProcessor-intervall är en mikrosekunder.
Om enheten ofta kräver mer än 50 mikrosekunder för att uppdatera tillståndet bör du överväga att konfigurera en enhetsdedikerad tråd i drivrutinen.