Anteckning
Å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.
De flesta begäranden som skickas till enhetsdrivrutiner paketeras i I/O-begärandepaket (IRP). En operativsystemkomponent eller en drivrutin skickar en IRP till en drivrutin genom att anropa IoCallDriver, som har två parametrar: en pekare till en DEVICE_OBJECT och en pekare till en IRP. DEVICE_OBJECT har en pekare till en associerad DRIVER_OBJECT. När en komponent anropar IoCallDriver säger vi att komponenten skickar IRP till enhetsobjektet eller skickar IRP till drivrutinen som är associerad med enhetsobjektet. Ibland använder vi frasen skickar IRP eller vidarebefordrar IRP i stället för skickar IRP.
Vanligtvis bearbetas en IRP av flera drivrutiner som är ordnade i en stack. Varje drivrutin i stacken är associerad med ett enhetsobjekt. Mer information finns i Enhetsnoder och enhetsstackar. När en IRP bearbetas av en enhetsstack skickas IRP vanligtvis först till det översta enhetsobjektet i enhetsstacken. Om till exempel en IRP bearbetas av enhetsstacken som visas i det här diagrammet skickas IRP först till filterenhetsobjektet (Filter DO) överst i enhetsstacken.
Överföra en IRP nedåt i enhetsstacken
Anta att I/O-chefen skickar en IRP till Filter DO i diagrammet. Drivrutinen som är associerad med Filter DO, AfterThought.sys, bearbetar IRP och skickar den sedan till det funktionella enhetsobjektet (FDO), som är nästa lägre enhetsobjekt i enhetsstacken. När en drivrutin skickar en IRP till nästa lägre enhetsobjekt i enhetsstacken säger vi att drivrutinen skickar IRP:n nedåt i enhetsstacken.
Vissa IRP:er passeras hela vägen ner i enhetsstacken till det fysiska enhetsobjektet (PDO). Andra IRP:er når aldrig PDO eftersom de slutförs av en av drivrutinerna ovanför PDO.
IRP:er är fristående
IRP-strukturen är fristående i den meningen att den innehåller all information som en drivrutin behöver för att hantera en I/O-begäran. Vissa delar av IRP-strukturen innehåller information som är gemensam för alla deltagande drivrutiner i stacken. Andra delar av IRP innehåller information som är specifik för en viss drivrutin i stacken.