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 drivrutins DispatchRead- och DispatchWrite-rutiner hanterar IRP:er med I/O-funktionskoderna IRP_MJ_READ respektive IRP_MJ_WRITE. Alternativt kan en kombinerad DispatchReadWrite-rutin hantera IRP:er för båda dessa I/O-funktionskoder.
Varje drivrutin för en enhet som data kan överföras till systemet från måste ha en DispatchRead-rutin . Varje drivrutin för en enhet som data kan överföras till från systemet måste ha en DispatchWrite-rutin . Alla drivrutiner som överför data i båda riktningarna kan ha en kombinerad DispatchReadWrite-rutin .
Drivrutiner på lägre nivå hanterar IRP_MJ_READ och IRP_MJ_WRITE begäranden asynkront. Därför måste DispatchRead - och/eller DispatchWrite-rutiner i drivrutiner på högsta nivå vidarebefordra dessa begäranden för vidare bearbetning, förutsatt att begäran har giltiga parametrar i drivrutins I/O-stackplatsen för IRP.
Om en drivrutin konfigurerar sina enhetsobjekt för buffrad eller direkt I/O påverkar hur den hanterar överföringsbegäranden. I synnerhet kan en drivrutin som använder direkt I/O för att utföra DMA-åtgärder behöva dela upp stora överföringsbegäranden i en sekvens med mindre överföringsåtgärder för att uppfylla en IRP_MJ_READ eller IRP_MJ_WRITE begäran. Mer information finns i Indata-/utdatatekniker.
Följande underavsnitt beskriver några av design- och implementeringsövervägandena för DispatchReadWrite-rutiner i drivrutiner på lägsta nivå som använder buffrad I/O och direkt I/O, samt i drivrutiner på högre nivå som ligger ovanför dem:
Hantera överföringar asynkront
DispatchReadWrite med buffrad I/O
DispatchReadWrite med direkt I/O