Aktualizowanie oprogramowania układowego urządzenia przy użyciu usługi Windows Update

W tym artykule opisano sposób aktualizowania oprogramowania układowego urządzenia wymiennego lub zintegrowanego z obudową przy użyciu usługi Windows Update (WU). Aby uzyskać informacje na temat aktualizowania oprogramowania układowego systemu, zobacz Platforma aktualizacji oprogramowania układowego UEFI systemu Windows.

Aby zaktualizować oprogramowanie układowe urządzenia przy użyciu Windows Update, podaj sterownik urządzenia zawierający ładunek oprogramowania układowego. Jeśli dostarczysz sterownik funkcji dla urządzenia, możesz dodać logikę i pakiet payload aktualizacji oprogramowania układowego do istniejącego sterownika lub udostępnić oddzielny pakiet sterownika aktualizacji oprogramowania układowego. Jeśli urządzenie korzysta ze sterownika dostarczonego przez Microsoft, należy dostarczyć oddzielny pakiet sterownika aktualizacji oprogramowania układowego. W obu przypadkach pakiet sterowników aktualizacji oprogramowania układowego musi być uniwersalny.

Aby uzyskać więcej informacji na temat sterowników uniwersalnych, zobacz Using a Universal INF File. Plik binarny sterownika może używać KMDF, UMDF 2 lub modelu sterowników Windows.

Ponieważ WU nie może uruchamiać oprogramowania, sterownik aktualizacji firmware musi przekazać firmware do Plug and Play (PnP) na potrzeby instalacji.

Działania sterownika aktualizacji oprogramowania układowego

Zazwyczaj sterownik aktualizacji oprogramowania układowego jest lekkim sterownikiem urządzenia, który implementuje następujące procedury:

  • Po uruchomieniu urządzenia lub w funkcji EVT_WDF_DRIVER_DEVICE_ADD wywołania zwrotnego sterownika:

    1. Określ urządzenie, do którego jest przypisany sterownik.
    2. Ustal, czy sterownik ma nowszą wersję oprogramowania układowego niż wersja oprogramowania układowego obecnie wgranego w sprzęcie urządzenia.
    3. Jeśli aktualizacja oprogramowania układowego jest niezbędna, ustaw timer zdarzeń, aby zaplanować aktualizację.
    4. W przeciwnym razie nie rób nic, dopóki kierowca nie zostanie ponownie uruchomiony.
  • Podczas działania systemu:

    1. Jeśli aktualizacja jest kolejkowana, poczekaj na spełnienie zestawu warunków.
    2. Po spełnieniu warunków wykonaj aktualizację oprogramowania układowego w urządzeniu.

Zawartość sterownika aktualizującego oprogramowanie układowe

Zazwyczaj pakiet sterowników aktualizacji oprogramowania układowego zawiera następujące elementy:

  • Uniwersalny sterownik INF
  • Katalog sterowników
  • Sterownik funkcyjny (.sys lub .dll)
  • Plik binarny ładunku aktualizacji firmware'u

Prześlij pakiet aktualizacji oprogramowania układowego jako oddzielne zgłoszenie sterownika.

Dodawanie logiki aktualizacji oprogramowania układowego do sterownika dostarczonego przez dostawcę

Istniejący sterownik funkcji może zaimplementować mechanizm aktualizacji oprogramowania układowego, jak pokazano na poniższym diagramie:

Korzystanie z usługi Windows Update do dostarczania aktualizacji oprogramowania sprzętowego za pośrednictwem istniejącego sterownika funkcyjnego.

Alternatywnie, jeśli chcesz oddzielnie zaktualizować sterownik funkcji i sterownik aktualizacji oprogramowania układowego, utwórz drugi węzeł urządzenia i zainstaluj na nim sterownik aktualizacji oprogramowania układowego. Poniższy schemat pokazuje, jak jedno urządzenie może mieć dwa oddzielne węzły urządzeń:

Używanie Windows Update do dostarczania aktualizacji oprogramowania układowego za pośrednictwem oddzielnego węzła urządzenia.

Węzły urządzeń funkcji i firmware muszą mieć różne identyfikatory sprzętu, aby można było kierować nimi niezależnie.

Drugi węzeł urządzenia można utworzyć na kilka sposobów. Niektóre typy urządzeń mają możliwość udostępniania drugiego węzła urządzenia w ramach jednego fizycznego urządzenia, na przykład przez USB. Za pomocą tej funkcji można utworzyć węzeł urządzenia, na który mogą być kierowane aktualizacje przez usługę WU, i zainstalować na nim sterownik aktualizacji oprogramowania układowego. Jednak wiele typów urządzeń nie zezwala jednemu fizycznemu urządzeniu na wyliczanie więcej niż jednego węzła urządzenia.

W takim przypadku użyj pliku INF zawierającego dyrektywę AddComponent, aby utworzyć węzeł urządzenia przeznaczony dla usługi Windows Update i zainstalować na nim sterownik aktualizacji oprogramowania układowego. Poniższy fragment kodu z pliku INF pokazuje, jak to zrobić:

[Manufacturer]
%Contoso%=Standard,NTamd64
[Standard.NTamd64]
%DeviceName%=Device_Install, PCI\DEVICE_ID
[Device_Install.Components]
AddComponent=ComponentName,,AddComponentSection
[AddComponentSection]
ComponentIDs = ComponentDeviceId

W przykładowym pliku INF ComponentIDs = ComponentDeviceId oznacza, że urządzenie podrzędne ma identyfikator sprzętowy SWC\ComponentDeviceId. Po zainstalowaniu ten moduł INF tworzy następującą hierarchię urządzeń:

Urządzenie nadrzędne, urządzenie podstawowe, urządzenie AddComponent.

W przypadku przyszłych aktualizacji oprogramowania układowego zaktualizuj plik INF i plik binarny zawierający ładunek firmware.

Dodawanie logiki aktualizacji oprogramowania układowego do sterownika dostarczonego przez Microsoft

Aby zaktualizować oprogramowanie układowe urządzeń korzystających ze sterownika dostarczonego przez firmę Microsoft, utwórz drugi węzeł urządzenia, jak pokazano.

Najlepsze praktyki

  • W module INF sterownika aktualizacji oprogramowania układowego określ DIRID 13 , aby spowodować pozostawienie plików w pakiecie sterowników w magazynie sterowników:

    [Firmware_AddReg]
    ; Store location of firmware payload
    HKR,,FirmwareFilename,,"%13%\firmware_payload.bin"
    

    PnP określa tę lokalizację podczas instalowania urządzenia. Sterownik może następnie otworzyć ten klucz rejestru, aby określić lokalizację payloadu.

  • Sterowniki aktualizacji firmware określają następujące wpisy INF:

    Class=Firmware
    ClassGuid={f2e7dd72-6468-4e36-b6f1-6488f42c1b52}
    
  • Aby zlokalizować inny węzeł urządzenia, sterownik oprogramowania układowego powinien przeszukiwać drzewo urządzeń względem własnego węzła, a nie poprzez wyliczanie wszystkich węzłów urządzeń pod kątem dopasowania. Użytkownik mógł podłączyć wiele egzemplarzy urządzenia, a sterownik oprogramowania układowego powinien zaktualizować tylko urządzenie, z którym jest skojarzony. Zazwyczaj węzeł urządzenia, który należy zlokalizować, jest węzłem nadrzędnym lub równorzędnym węzła urządzenia, na którym zainstalowano sterownik oprogramowania układowego. Na przykład na diagramie z dwoma węzłami urządzenia sterownik aktualizacji oprogramowania układowego może wyszukać urządzenie równorzędne, aby znaleźć sterownik funkcji. Na następnym diagramie sterownik oprogramowania układowego może wyszukać urządzenie nadrzędne, aby znaleźć urządzenie podstawowe, z którym musi się komunikować.

  • Sterownik powinien być odporny na obecność wielu instancji urządzenia w systemie, być może z wieloma różnymi wersjami oprogramowania układowego. Na przykład może istnieć jedno urządzenie, które zostało połączone i zaktualizowane kilka razy. Nowe urządzenie może być następnie podłączone, a jego oprogramowanie układowe może być starsze o kilka wersji. Oznacza to, że stan (taki jak bieżąca wersja) musi być przechowywany dla urządzenia, a nie w lokalizacji globalnej.

  • Jeśli istnieje metoda aktualizowania oprogramowania układowego (na przykład plik EXE lub współinstalator), można w dużej mierze ponownie użyć kodu aktualizacji w sterowniku UMDF.