Implementieren eines Vorgangsbereichshandlers

Der Treiber muss einen Vorgangsbereichshandler bereitstellen, bei dem es sich um einen PACPI_OP_REGION_HANDLER typisierten Rückruf handelt. Der ACPI-Treiber ruft den Vorgangshandler auf, um auf die Datenfelder in der Vorgangsregion des Treibers zuzugreifen. Der kombinierte Betrieb des Funktionstreibers und des ACPI-BIOS ist herstellerdefiniert und gerätespezifisch. Im Allgemeinen greifen der Funktionstreiber und die ACPI-BIOS-Zugriffsindizes in einer Vorgangsregion zu, die zu gerätespezifischen Vorgängen führen und alle geeigneten Informationen zurückgeben.

Ein Vorgangsbereichshandler verwendet in der Regel die folgenden Parameter, die der ACPI-Treiber an den Handler übergibt:

  • AccessType gibt an, ob der Zugriff ein Lese- oder Schreibzugriff ist.

    Wenn der Zugriff ein Lesevorgang ist, werden Daten aus dem Speicherpuffer des Vorgangsbereichs in den Datenpuffer übertragen. Wenn es sich bei dem Zugriff um einen Schreibzugriff handelt, werden Daten aus dem Datenpuffer in den Arbeitsspeicherpuffer der Vorgangsregion übertragen. Weitere Informationen finden Sie unter Zugreifen auf eine Vorgangsregion.

  • Address gibt einen Byteoffset im Arbeitsspeicherpuffer des Vorgangsbereichs an.

  • Größe gibt die Anzahl der zu übertragenden Bytes an.

  • Data gibt einen Puffer an, der vom ACPI-Treiber für die Datenübertragung bereitgestellt wird.

  • Context gibt den Vorgangsbereichskontext an, den der Treiber für den Vorgangsbereichshandler registriert hat.

    Der Vorgangsbereichskontext wird nur vom Funktionstreiber verwendet und ist gerätespezifisch.

Zusätzlich zu den zuvor beschriebenen Parametern übergibt der ACPI-Treiber auch an einen Vorgangsbereichshandler Zeiger auf Folgendes: ein Vorgangsbereichsobjekt, einen Abschlusshandler und einen Abschlusskontext. Der Funktionstreiber verwendet jedoch nicht das Vorgangsbereichsobjekt in einem Handler, und der Vervollständigungshandler und der Kontext sind für die interne Verwendung reserviert.