Udostępnij przez


Wprowadzenie do zasobów sprzętowych

Zasoby sprzętowe systemu to porty we/wy, wektory przerwań, kanały bezpośredniego dostępu do pamięci (DMA) i inne ścieżki komunikacyjne, które muszą być przypisane do każdego urządzenia podłączonego do systemu. Tematy w tej sekcji opisują, jak sterowniki Kernel-Mode Driver Framework (KMDF) negocjują wymagania dotyczące zasobów sprzętowych dla urządzenia, dokonują przeglądu proponowanej listy zasobów, a następnie otrzymują przypisane zasoby. W tej sekcji omówiono również, w jaki sposób zarówno sterowniki KMDF, jak i User-Mode Driver Framework (UMDF) uzyskują dostęp do przypisanych zasobów i mapują je.

Gdy użytkownik podłącza urządzenie PnP, sterownik wyliczający urządzenie zwykle tworzy jedną lub więcej konfiguracji logicznych, które są kombinacjami zasobów sprzętowych, których może używać urządzenie. Te konfiguracje obejmują następujące elementy:

  • Konfiguracja rozruchu zawierająca listę zasobów sprzętowych, których urządzenie wymaga po uruchomieniu systemu. (W przypadku urządzeń PnP te informacje są dostarczane przez system BIOS).

  • Dodatkowe konfiguracje, w których urządzenie może działać. Sterownik grupuje te dodatkowe konfiguracje na liście wymagań dotyczących zasobów. Menedżer pnP ostatecznie wybierze zasoby z tej listy, aby przypisać je do urządzenia.

Po utworzeniu konfiguracji logicznych sterownik wysyła je do struktury, a struktura wysyła je do menedżera pnP.

Następnie menedżer PnP określa, których sterowników wymaga urządzenie i ładuje je, jeśli nie zostały jeszcze załadowane. Menedżer pnP wysyła listę wymagań sprzętowych urządzenia do sterowników urządzenia do przeglądu. Sterowniki funkcji i filtrowania mogą modyfikować tę listę i wysyłać je z powrotem do menedżera PnP.

Menedżer pnP sprawdza listę zmodyfikowanych wymagań sprzętowych i określa, które z określonych zasobów są rzeczywiście dostępne w systemie. Jeśli urządzenie wymaga zasobów, które menedżer PnP wcześniej przypisał do innego urządzenia, menedżer PnP może podjąć próbę redystrybucji zasobów między urządzeniami systemu.

Następnie menedżer PnP tworzy listę zasobów, która jest listą zasobów, które menedżer PnP zamierza przypisać do urządzenia. Menedżer PnP wysyła tę listę do sterowników urządzenia do przeglądu. W tym momencie sterowniki funkcji i filtrowania mogą usuwać zasoby z listy, ale nie mogą dodawać do niej zasobów.

Na koniec menedżer PnP przypisuje zasoby do urządzenia. Struktura przekazuje listę zasobów do sterownika funkcji i sterownika filtrującego urządzenia, a sterownik funkcji urządzenia wykonuje wszelkie niezbędne inicjowanie, aby urządzenie i sterownik mogły uzyskać dostęp do zasobów.

W poniższych krokach opisano bardziej szczegółowo proces:

  1. Użytkownik podłącza urządzenie.

  2. Kierowca autobusu wykrywa urządzenie i rozpoznaje je.

  3. Platforma wywołuje funkcję zwrotną EvtDeviceResourcesQuery sterownika magistrali, która tworzy listę zasobów opisującą konfigurację rozruchową urządzenia.

  4. Struktura wywołuje funkcję zwrotną kierowcy magistrali EvtDeviceResourceRequirementsQuery, która tworzy listę wymagań dotyczących zasobów dla urządzenia.

  5. Menedżer PnP określa, których sterowników wymaga urządzenie i ładuje je, jeśli nie zostały jeszcze załadowane, aby utworzyć stos sterowników dla urządzenia.

  6. Menedżer pnP wysyła listę wymagań dotyczących zasobów urządzenia do stosu sterowników do przeglądu. Gdy lista przechodzi w dół stosu sterowników, framework wywołuje funkcję wywołania zwrotnego EvtDeviceFilterRemoveResourceRequirements w każdym sterowniku funkcji i filtrze. Gdy lista wraca przez stos, framework wywołuje każdą funkcję oraz funkcję wywołania zwrotnego sterownika filtra EvtDeviceFilterAddResourceRequirements. Obie te funkcje wywołania zwrotnego mogą modyfikować listę wymagań dotyczących zasobów.

  7. Menedżer pnP tworzy listę zasobów dla urządzenia i wysyła go do stosu sterowników do przeglądu. Struktura wywołuje każdą funkcję oraz funkcję wywołania zwrotnego sterownika filtru o nazwie EvtDeviceRemoveAddedResources, która usuwa zasoby dodane przez funkcję wywołania zwrotnego EvtDeviceFilterAddResourceRequirements, aby sterownik magistrali nie próbował ich używać.

  8. Platforma odbiera ostateczną listę zasobów z menedżera PnP i przechowuje ją.

  9. Jeśli sterownik wywołuje metodę WdfInterruptCreate w celu utworzenia obiektów przerwania, struktura znajdzie zasoby przerwania na liście zasobów i przypisze je do obiektów przerwania.

  10. Po wprowadzeniu urządzenia w niezainicjowany stan D0, platforma wywołuje funkcję zwrotną EvtDevicePrepareHardware każdego sterownika, przekazując nieprzetworzone i przetłumaczone wersje listy zasobów urządzenia jako argument wejściowy. Sterownik może zapisać listę zasobów, która jest ważna, dopóki platforma nie wywoła funkcji wywołania zwrotnego EvtDeviceReleaseHardware.