Nödvändiga dispatch-rutiner

De flesta drivrutiner måste hantera följande Dispatch-rutiner :

  • DispatchPnP

    IRP_MJ_PNP anger en begäran om PnP-enhetsigenkänning, maskinvarukonfiguration eller resursallokering. Sådana begäranden skickas vanligtvis till en enhetsdrivrutin från PnP-hanteraren eller från en nära kopplad drivrutin på högre nivå.

  • DispatchPower

    IRP_MJ_POWER anger en begäran som rör energitillståndet för enheten eller systemet. Sådana begäranden skickas till enhetsdrivrutinen av antingen en strömhanterare eller en högre nivå drivrutin som är nära kopplad.

  • DispatchCreate

    IRP_MJ_CREATE anger antingen att ett skyddat undersystem i användarläge, eventuellt för ett program eller en undersystemspecifik drivrutin, har begärt ett handtag för filobjektet som är associerat med målenhetsobjektet, eller att en drivrutin på högre nivå ansluter eller kopplar sitt enhetsobjekt till målenhetsobjektet.

  • DispatchClose

    IRP_MJ_CLOSE anger att det sista handtaget för filobjektet som var associerat med målenhetsobjektet har stängts och släppts. Alla I/O-begäranden har slutförts eller avbrutits, så det finns inga utestående referenser till filobjektpekaren.

  • DispatchRead

    IRP_MJ_READ anger en I/O-begäran om att överföra data från den underliggande fysiska enheten till systemet.

  • DispatchWrite

    IRP_MJ_WRITE anger en I/O-begäran om att överföra data från systemet till den underliggande fysiska enheten.

  • DispatchDeviceControl

    IRP_MJ_DEVICE_CONTROL anger en begäran som innehåller en systemdefinierad, enhetstypspecifik I/O-kontrollkod som anger en enhetstypspecifik åtgärd. Drivrutiner på högre nivå skickar dessa IP-adresser vidare till sina underliggande enhetsdrivrutiner, som vanligtvis bearbetar begäran genom att komma åt enheten.

  • DispatchInternalDeviceControl

    IRP_MJ_INTERNAL_DEVICE_CONTROL anger en begäran som skickas till enhetsdrivrutinen, i de flesta fall från en nära kopplad drivrutin på högre nivå, vanligtvis med en privat definierad, drivrutinsspecifik och enhetstypspecifik eller enhetsspecifik I/O-kontrollkod som begär en enhetstypspecifik eller enhetsspecifik åtgärd.

    Endast vissa typer av drivrutiner krävs för att hantera systemdefinierade interna I/O-kontrollbegäranden för enheter, inklusive vissa SCSI-drivrutiner, tangentbords- eller musdrivrutiner och parallella drivrutiner som samverkar med drivrutiner som tillhandahålls av systemet.

  • DispatchSystemControl

    IRP_MJ_SYSTEM_CONTROL används för att ange WMI-begäranden till drivrutiner. Mer information om WMI finns i Windows Management Instrumentation.

De sändningsrutiner som en drivrutin måste tillhandahålla varierar beroende på vilken typ och funktionalitet den underliggande fysiska enheten har. Information om IRP-huvudfunktionskoder som drivrutiner måste hantera finns i den enhetstypspecifika dokumentationen i Windows Driver Kit (WDK).