Udostępnij przez


Procedura zwalniania kierowcy innego niż PnP

Wcześniejsze sterowniki i ogólne sterowniki systemu plików, które nie obsługują żądań usuwania urządzeń PnP, muszą zwalniać zasoby, usuwać obiekty urządzeń i odłączać się od stosu urządzeń w swoich procedurach zwalniania .

Jeśli jeszcze tego nie zrobiono, pierwszą rzeczą, którą powinien zrobić starszy sterownik urządzenia w swojej procedurze Unload, jest wyłączenie przerwań z urządzenia. W przeciwnym razie jego ISR może być wywoływany w celu obsługi przerwania urządzenia, podczas gdy rutyna Unload zwalnia zasoby w części rozszerzenia urządzenia, które ISR potrzebuje do obsługi przerwania. Nawet jeśli jego ISR działa pomyślnie w tych okolicznościach, rutyny DpcForIsr lub CustomDpc, które ISR umieszcza w kolejce, a także ewentualnie inne rutyny sterownika działające przy IRQL >= DISPATCH_LEVEL, zostaną wykonane zanim procedura zwalniania odzyska kontrolę, tym samym zwiększając prawdopodobieństwo, że procedura zwalniania usunęła zasób, do którego odwołuje się inna rutyna sterownika. Aby uzyskać więcej informacji, zobacz Zarządzanie priorytetami sprzętu .

Po wyłączeniu przerwań system plików i starsze sterowniki muszą zwolnić zasoby i obiekty. Aby uzyskać szczegółowe informacje, zobacz następujące dwie sekcje:

Zwalnianie zasobów Driver-Allocated

Zwalnianie obiektów urządzeń i kontrolerów