Udostępnij przez


Nie można zweryfikować obiektów urządzeń

Wiele sterowników tworzy więcej niż jeden rodzaj obiektu urządzenia, wywołując funkcję IoCreateDevice. Niektóre sterowniki tworzą obiekty urządzeń sterujących w swoich procedurach DriverEntry , aby umożliwić aplikacjom komunikowanie się ze sterownikiem, nawet przed utworzeniem FDO przez sterownik. Na przykład sterowniki systemu plików tworzą obiekty urządzeń do obsługi powiadomień systemu plików, gdy rejestrują się jako systemy plików przy użyciu funkcji IoRegisterFileSystem.

Sterownik powinien być gotowy do IRP_MJ_CREATE żądań dla każdego tworzonego obiektu urządzenia. Po zakończeniu żądania z zakończonym powodzeniem sterownik powinien oczekiwać otrzymania żądań wejścia/wyjścia, do których ma dostęp użytkownik, dla utworzonego obiektu pliku. W związku z tym każdy sterownik tworzący więcej niż jeden obiekt urządzenia musi sprawdzić, który obiekt urządzenia określa każde żądanie we/wy.

Załóżmy na przykład, że sterownik tworzy ogólne obiekty urządzeń sterujących w driverEntry, a następnie tworzy kolejny zestaw obiektów urządzeń w procedurze AddDevice . Załóżmy, że rutyna AddDevice inicjuje rozszerzenie urządzenia z informacjami o sterownikach niższego poziomu, ale obiekty urządzeń sterujących nie zawierają tych informacji. W takim przypadku wszystkie procedury wysyłania muszą uważnie sprawdzać każdy obiekt urządzenia, który otrzymują. W przeciwnym razie sterownik może ulec awarii podczas próby użycia informacji o rozszerzeniu urządzenia.