Freigeben über


Erforderliche Zuständigkeiten von DriverEntry

Die erforderlichen, geordneten Zuständigkeiten einer DriverEntry-Routine sind wie folgt:

  1. Stellen Sie Einstiegspunkte für die Standardroutinen des Fahrers bereit.

    Der Treiber speichert Einstiegspunkte für viele seiner Standardroutinen im Treiberobjekt oder der Treibererweiterung. Zu diesen Einstiegspunkten gehören diejenigen für die AddDevice-Routine des Fahrers, Dispatchroutinen, StartIo-Routine und Unload-Routine . Beispielsweise würde ein Treiber die Einstiegspunkte für seine AddDevice-, DispatchPnP- und DispatchPower-Routinen mit Anweisungen wie den folgenden festlegen (Xxx ist ein Platzhalter für ein vom Anbieter bereitgestelltes Präfix, das den Treiber identifiziert):

        :
    DriverObject->DriverExtension->AddDevice = XxxAddDevice;
    DriverObject->MajorFunction[IRP_MJ_PNP] = XxxDispatchPnp;
    DriverObject->MajorFunction[IRP_MJ_POWER] = XxxDispatchPower;
        :
    

    Zusätzliche Standardroutinen, z. B. ISRs oder IoCompletion-Routinen , werden durch aufrufen von Systemunterstützungsroutinen angegeben. Weitere Informationen finden Sie in den Beschreibungen einzelner Standardtreiberroutinen.

  2. Erstellen und/oder initialisieren Sie verschiedene treiberweite Objekte, Typen oder Ressourcen, die der Treiber verwendet. Beachten Sie, dass die meisten Standardroutinen Objekte auf Gerätebasis verwenden, sodass Treiber solche Objekte in ihren AddDevice-Routinen oder nach Dem Empfang einer IRP_MN_START_DEVICE-Anforderung einrichten sollten.

    Wenn der Treiber über einen dedizierten Gerätethread verfügt oder auf kerneldefinierte Dispatcherobjekte wartet, initialisiert die DriverEntry-Routine möglicherweise Kernelverteilerobjekte. (Je nachdem, wie der Treiber die Objekte verwendet, kann er diese Aufgabe stattdessen in seiner AddDevice-Routine oder nach Dem Empfang einer IRP_MN_START_DEVICE-Anforderung ausführen.)

  3. Geben Sie den zugeordneten und nicht mehr benötigten Arbeitsspeicher frei.

  4. Gibt NTSTATUS zurück, der angibt, ob der Treiber erfolgreich geladen wurde und Anforderungen vom PnP-Manager akzeptieren und verarbeiten kann, um seine Geräte zu konfigurieren, hinzuzufügen und zu starten. (Siehe DriverEntry Return Values.)