GPIO-Gerätekontexte
Ein GPIO-Controllergerät (General Purpose E/O) wird durch ein Frameworkgeräteobjekt dargestellt. Der GPIO-Controllertreiber kann diesem Geräteobjekt einen Gerätekontext zuordnen. Der Treiber verwendet diesen Gerätekontext, um Informationen zum Zustand des GPIO-Controllergeräts dauerhaft zu speichern.
Wenn die GPIO-Frameworkerweiterung (GpioClx) eine Ereignisrückruffunktion aufruft, die vom Treiber implementiert wird, übergibt GpioClx den Gerätekontext als Parameter an diese Funktion. Die Rückruffunktion untersucht den Gerätekontext, um den aktuellen Zustand des Geräts zu bestimmen. Wenn die Funktion diesen Zustand ändert, aktualisiert sie den Gerätekontext entsprechend.
GpioClx weist den Speicher für ein Geräteobjekt zu. Wenn ein GPIO-Controllertreiber über mehrere Geräteobjekte verfügt, hat der Gerätekontext für jedes dieser Objekte dieselbe Größe. Während der DriverEntry-Routine ruft der Treiber die GPIO_CLX_RegisterClient-Methode auf, um seine Rückruffunktionen zu registrieren und die größe des benötigten Gerätekontexts anzugeben. Später ruft der Treiber während der Rückrufroutine EvtDriverDeviceAdd die GPIO_CLX_ProcessAddDevicePostDeviceCreate-Methode auf, um das neue Geräteobjekt an GpioClx zu übergeben, und GpioClx ordnet den Gerätekontext für dieses Objekt zu. Wenn GpioClx anschließend eine vom Treiber implementierte Rückruffunktion aufruft, wird dieser Gerätekontext als Parameter an die Funktion übergeben.