Freigeben über


GPIO_CLX_ProcessAddDevicePreDeviceCreate-Funktion (gpioclx.h)

Die GPIO_CLX_ProcessAddDevicePreDeviceCreate-Methode lädt Initialisierungsinformationen in zwei Strukturen, die als Eingabeparameter an die WdfDeviceCreate-Methode übergeben werden.

Syntax

NTSTATUS GPIO_CLX_ProcessAddDevicePreDeviceCreate(
  [in]      WDFDRIVER              Driver,
  [in, out] PWDFDEVICE_INIT        DeviceInit,
  [out]     PWDF_OBJECT_ATTRIBUTES FdoAttributes
);

Parameter

[in] Driver

Ein WDFDRIVER-Handle für das Frameworktreiberobjekt für den GPIO-Controllertreiber.

[in, out] DeviceInit

Ein Zeiger auf eine vom Framework zugewiesene WDFDEVICE_INIT-Struktur . Diese Methode lädt Initialisierungsinformationen in diese Struktur. Bei der Rückgabe kann diese Struktur als Eingabeparameter für die WdfDeviceCreate-Methode verwendet werden.

[out] FdoAttributes

Ein Zeiger auf eine aufruferseitig zugewiesene WDF_OBJECT_ATTRIBUTES-Struktur . Diese Methode lädt Initialisierungsinformationen in diese Struktur. Bei der Rückgabe kann diese Struktur als Eingabeparameter für die WdfDeviceCreate-Methode verwendet werden.

Rückgabewert

GPIO_CLX_ProcessAddDevicePreDeviceCreate gibt STATUS_SUCCESS zurück, wenn der Aufruf erfolgreich ist. Mögliche Rückgabewerte sind die folgenden Fehlercodes.

Rückgabecode Beschreibung
STATUS_INVALID_PARAMETER
Der Aufrufer ist kein registrierter GpioClx-Client.
STATUS_INSUFFICIENT_RESOURCES
Nicht genügend Arbeitsspeicher.

Hinweise

Ihr GPIO-Controllertreiber muss diese Methode in seiner Rückruffunktion EvtDriverDeviceAdd aufrufen, bevor die WdfDeviceCreate-Methode aufgerufen wird, die das Geräteobjekt (Device Object, FDO) erstellt, das den GPIO-Controller darstellt. Andernfalls kann die GPIO-Frameworkerweiterung (GpioClx) keine E/A-Anforderungen verarbeiten oder Unterbrechungen für das neue Frameworkgeräteobjekt verarbeiten.

Beispiele

Das folgende Codebeispiel zeigt die Rückruffunktion EvtDriverDeviceAdd im GPIO-Controllertreiber für ein GPIO-Controllergerät "XYZ".

NTSTATUS
  XyzEvtDriverDeviceAdd(
    _In_ WDFDRIVER Driver,
    _Inout_ PWDFDEVICE_INIT DeviceInit
    )
{
    WDFDEVICE Device;
    WDF_OBJECT_ATTRIBUTES FdoAttributes;
    NTSTATUS Status;

    Status = GPIO_CLX_ProcessAddDevicePreDeviceCreate(Driver,
                                                      DeviceInit,
                                                      &FdoAttributes);
    if (!NT_SUCCESS(Status)) {
        goto ExitDeviceAdd;
    }

    //
    // Call the framework to create the device and attach it to the lower stack.
    //

    Status = WdfDeviceCreate(&DeviceInit, &FdoAttributes, &Device);
    if (!NT_SUCCESS(Status)) {
        goto ExitDeviceAdd;
    }

    Status = GPIO_CLX_ProcessAddDevicePostDeviceCreate(Driver, Device);
    if (!NT_SUCCESS(Status)) {
        goto ExitDeviceAdd;
    }

ExitDeviceAdd:
    return Status;
}

Im vorherigen Codebeispiel erstellt der WdfDeviceCreate-Aufruf das Framework-Geräteobjekt, das das GPIO-Controllergerät darstellt. Die beiden Eingabeparameter für diesen Aufruf verweisen auf WDFDEVICE_INIT - und WDF_OBJECT_ATTRIBUTES-Strukturen . Diese Strukturen werden durch den GPIO_CLX_ProcessAddDevicePreDeviceCreate-Aufruf geändert, der dem Aufruf WdfDeviceCreate vorangeht. Der Ausgabeparameter Device aus dem WdfDeviceCreate-Aufruf ist ein Eingabeparameter für den GPIO_CLX_ProcessAddDevicePostDeviceCreate-Aufruf , der dem Aufruf WdfDeviceCreate folgt.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar ab Windows 8.
Zielplattform Universell
Header gpioclx.h
Bibliothek Msgpioclxstub.lib
IRQL PASSIVE_LEVEL

Weitere Informationen

EvtDriverDeviceAdd

GPIO_CLX_ProcessAddDevicePostDeviceCreate

WDFDEVICE_INIT

WDF_OBJECT_ATTRIBUTES

WdfDeviceCreate