Udostępnij przez


Inicjowanie sterownika miniportu

Gdy urządzenie sieciowe stanie się dostępne, system ładuje sterownik miniportu NDIS do zarządzania urządzeniem (jeśli sterownik nie został jeszcze załadowany). Każdy sterownik miniportu musi udostępniać funkcję DriverEntry. System wywołuje DriverEntry po załadowaniu sterownika. DriverEntry rejestruje cechy sterownika miniportu w NDIS, w tym obsługiwaną wersję NDIS i punkty wejściowe sterownika.

System przekazuje dwa argumenty do DriverEntry:

  • Wskaźnik do obiektu sterownika, który został utworzony przez system wejścia/wyjścia.

  • Wskaźnik do ścieżki rejestru, który określa, gdzie są przechowywane parametry specyficzne dla sterownika.

W funkcji DriverEntry sterowniki miniportów przekazują oba te wskaźniki w wywołaniu funkcji NdisMRegisterMiniportDriver. Sterowniki Miniport eksportują zestaw standardowych funkcji MiniportXxx, przechowując punkty wejścia w strukturze NDIS_MINIPORT_DRIVER_CHARACTERISTICS i przekazując strukturę do NdisMRegisterMiniportDriver.

DriverEntry dla sterowników miniportu zwraca wartość zwracaną przez wywołanie metody NdisMRegisterMiniportDriver.

Sterownik miniportu wykonuje również wszelkie inne inicjalizacje specyficzne dla sterownika, których wymaga w DriverEntry. Sterownik wykonuje inicjowanie specyficzne dla adaptera w funkcji MiniportInitializeEx. Aby uzyskać więcej informacji na temat inicjowania adaptera, zobacz Inicjowanie adaptera.

DriverEntry może przydzielić strukturę NDIS_MINIPORT_DRIVER_CHARACTERISTICS na stosie, ponieważ biblioteka NDIS kopiuje odpowiednie informacje do własnej przestrzeni pamięci. DriverEntry powinien wyczyścić pamięć tej struktury za pomocą NdisZeroMemory zanim ustawi jakiekolwiek wartości dostarczone przez sterownik w jego składnikach. Członkowie MajorNdisVersion oraz MinorNdisVersion muszą zawierać główne i pomocnicze wersje NDIS, które są obsługiwane przez sterownik. W każdym członku strukturze charakterystyki XxxHandler, DriverEntry musi ustawić punkt wejścia do funkcji MiniportXxx dostarczonej przez sterownik, lub członek musi być NULL.

Aby umożliwić sterownikowi miniportu konfigurowanie opcjonalnych usług, NDIS wywołuje funkcję MiniportSetOptions w kontekście wywołania przez sterownik miniportu funkcji NdisMRegisterMiniportDriver. Aby uzyskać więcej informacji na temat usług opcjonalnych, zobacz Configuring Optional Miniport Driver Services.

Sterowniki wywołujące NdisMRegisterMiniportDriver muszą być przygotowane na to, że funkcje MiniportInitializeEx mogą być wywołane przez NDIS w dowolnym momencie po zwróceniu DriverEntry. Taki sterownik musi mieć wystarczające informacje o instalacji i konfiguracji przechowywane w rejestrze lub dostępne z wywołań do funkcji konfiguracji specyficznej dla typu magistrali NdisXxx, aby przygotować jakiekolwiek zasoby specyficzne dla karty sieciowej, których sterownik będzie potrzebować do wykonywania operacji we/wy sieciowych.

Sterownik miniportu musi ostatecznie wywołać NdisMDeregisterMiniportDriver, aby zwolnić zasoby, które zostały przydzielone przez wywołanie NdisMRegisterMiniportDriver. Jeśli inicjowanie sterownika zakończy się niepowodzeniem po pomyślnym wywołaniu NdisMRegisterMiniportDriver, sterownik może wywołać NdisMDeregisterMiniportDriver w ramach DriverEntry. W przeciwnym razie sterownik miniportu musi zwolnić zasoby specyficzne dla sterownika, które przydziela w funkcji MiniportDriverUnload. Innymi słowy, jeśli NdisMRegisterMiniportDriver nie zwraca NDIS_STATUS_SUCCESS, DriverEntry musi zwolnić wszystkie przydzielone zasoby, zanim zwróci kontrolę. Jeśli tak się stanie, sterownik nie zostanie załadowany. Aby uzyskać więcej informacji, zobacz Zwalnianie Sterownika Miniportu.