Freigeben über


Erstellen eines Hardwarebenachrichtigungsclienttreibers

Dieser Abschnitt enthält allgemeine Anleitungen zur Entwicklung eines Hardwarebenachrichtigungsclienttreibers, der die von Microsoft bereitgestellte KMDF-Klassenerweiterung verwendet.

  1. Erstellen Sie eine Datei für Ihre Clienttreiberimplementierung, die mit Mshwnclxstub.lib verknüpft ist und die Header hwn.h und hwnclx.h enthält.

  2. Definieren Sie Instanzen der erforderlichen Rückruffunktionen für KMDF- und Hardwarebenachrichtigungsklassenerweiterungen. Insbesondere müssen Sie diese Rückruffunktionen implementieren und registrieren, wie im folgenden Beispielcode gezeigt.

    DRIVER_INITIALIZE DriverEntry;
    EVT_WDF_DRIVER_DEVICE_ADD HwnClientEvtDeviceAdd;
    HWN_CLIENT_INITIALIZE_DEVICE HwnClientInitializeDevice;
    HWN_CLIENT_UNINITIALIZE_DEVICE HwnClientUnInitializeDevice;
    HWN_CLIENT_QUERY_DEVICE_INFORMATION HwnClientQueryDeviceInformation;
    HWN_CLIENT_START_DEVICE HwnClientStartDevice;
    HWN_CLIENT_STOP_DEVICE HwnClientStopDevice;
    HWN_CLIENT_SET_STATE HwnClientSetState;
    HWN_CLIENT_GET_STATE HwnClientGetState;
    
  3. Implementieren Sie die DriverEntry-Routine , bei der es sich um den Einstiegspunkt des Clienttreibers handelt, der für die Initialisierung verantwortlich ist. Für den Hardwarebenachrichtigungsclienttreiber sollte diese Funktion Folgendes behandeln:

  4. Implementieren Sie die EVT_WDF_DRIVER_DEVICE_ADD-Funktion , die für die Durchführung von Geräteinitialisierungsvorgängen verantwortlich ist, wenn der PnP-Manager das Vorhandensein eines Geräts meldet. Für den Hardwarebenachrichtigungsclienttreiber sollte diese Funktion Folgendes behandeln:

  5. Implementieren Sie die definierte HWN_CLIENT_INITIALIZE_DEVICE-Funktion , die von der Klassenerweiterung aufgerufen wird, um den Hardwarebenachrichtigungscontroller für die Verwendung vorzubereiten.

  6. Implementieren Sie die definierte HWN_CLIENT_UNINITIALIZE_DEVICE-Funktion , die von der Klassenerweiterung aufgerufen wird, um den Hardwarebenachrichtigungscontroller zu initialisieren.

  7. Implementieren Sie die definierte HWN_CLIENT_QUERY_DEVICE_INFORMATION-Funktion , die von der Klassenerweiterung aufgerufen wird. Diese Funktion ist für das Abrufen der Attribute einer Hardwarebenachrichtigungskomponente verantwortlich.

  8. Implementieren Sie die definierte HWN_CLIENT_START_DEVICE-Funktion , die von der Klassenerweiterung aufgerufen wird. Diese Funktion ist für das Starten des Hardwarebenachrichtigungscontrollers und die Zuweisung von ACPI-Ressourcen für den Clienttreiber verantwortlich.

  9. Implementieren Sie die definierte HWN_CLIENT_STOP_DEVICE-Funktion , die von der Klassenerweiterung aufgerufen wird. Diese Funktion ist für das Beenden des Hardwarebenachrichtigungscontrollers und das Freigeben von ACPI-Ressourcen verantwortlich, die vom Clienttreiber verwendet werden.

  10. Implementieren Sie die definierte HWN_CLIENT_SET_STATE, die von der Klassenerweiterung aufgerufen wird. Diese Funktion ist für das Festlegen von Hardwarebenachrichtigungskomponentenzuständen verantwortlich.

  11. Implementieren Sie die definierte HWN_CLIENT_GET_STATE, die von der Klassenerweiterung aufgerufen wird. Diese Funktion ist für das Abrufen der aktuellen Werte der Hardwarebenachrichtigungskomponenten verantwortlich. Wenn der Eingabepuffer NULL ist, was bedeutet, dass der Benutzer den spezifischen Hardwarebenachrichtigungsstatus nicht angegeben hat, sollte diese Funktion Zustandsinformationen für alle Hardwarebenachrichtigungskomponenten zurückgeben.

Hardwarebenachrichtigungen