Stoppa en enhet för att inaktivera den (Windows 98/Me)
På Windows 98/Me utfärdar PnP-hanteraren stop-IRP:er när Enhetshanteraren inaktiverar enheten. (Windows 2000 och senare versioner av Windows utfärdar ta bort IRP:er i den här situationen).
PnP-hanteraren skickar stopp-IRP:erna i följande sekvens:
PnP-hanteraren utfärdar en IRP_MN_QUERY_STOP_DEVICE för att fråga om drivrutinerna för en enhet kan stoppa enheten.
Om alla drivrutiner i enhetsstacken returnerar STATUS_SUCCESS har drivrutinerna försatt enheten i ett tillstånd (stopp väntar) från vilket enheten snabbt kan stoppas.
PnP-hanteraren frågar så många enhetsstackar som behövs för att inaktivera enheten.
Om IRP_MN_QUERY_STOP_DEVICE lyckas utfärdar PnP-hanteraren en IRP_MN_STOP_DEVICE för att stoppa enheten.
PnP-hanteraren skickar endast stopp-IRP om den tidigare frågestopps-IRP:n för enheten har slutförts framgångsrikt. Som svar på en stopp-IRP släpper drivrutiner enhetens maskinvaruresurser (till exempel dess I/O-portar) och nekar alla IRP:er som kräver åtkomst till enheten.
Om IRP_MN_QUERY_STOP_DEVICE misslyckas skickar PnP-hanteraren en IRP_MN_CANCEL_STOP_DEVICE för att avbryta frågan.
Som svar på en IRP_MN_CANCEL_STOP_DEVICE returnerar drivrutinerna för en enhet enheten till det startade tillståndet och återupptar bearbetningen av I/O-begäranden för enheten.
PnP-hanteraren avbryter frågestoppet för en enhetsstack om en drivrutin i stacken misslyckades med begäran. När PnP-hanteraren avbryter förfrågningsstoppet på bara en enhetsstack skickar den IRP_MN_CANCEL_STOP_DEVICE begäran eftersom alla drivrutiner som är anslutna ovanför drivrutinen som misslyckades med att behandla förfrågan har enheten i vänteläge för stopp. När IRP_MN_CANCEL_STOP_DEVICE lyckas har drivrutinerna returnerat enheten till starttillståndet.
När en enhet inaktiveras kan dess drivrutiner inte köa inkommande IRP:er eftersom det inte finns någon garanti för när enheten kan aktiveras igen. Data kan därför gå förlorade.