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 zum 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. Auf der Rückgabe kann diese Struktur als Eingabeparameter für die WdfDeviceCreate-Methode verwendet werden.

[out] FdoAttributes

Ein Zeiger auf eine aufrufergeteilte WDF_OBJECT_ATTRIBUTES Struktur. Diese Methode lädt Initialisierungsinformationen in diese Struktur. Auf 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 Anruf erfolgreich ist. Mögliche Rückgabewerte sind die folgenden Fehlercodes.

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

Bemerkungen

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

Beispiele

Das folgende Codebeispiel zeigt die EvtDriverDeviceAdd Rückruffunktion 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 zeigen auf WDFDEVICE_INIT und WDF_OBJECT_ATTRIBUTES Strukturen. Diese Strukturen werden durch den aufruf GPIO_CLX_ProcessAddDevicePreDeviceCreate geändert, der dem WdfDeviceCreate Aufruf vorausgeht. Der Ausgabeparameter Deviceaus dem WdfDeviceCreate Aufruf ist ein Eingabeparameter für den GPIO_CLX_ProcessAddDevicePostDeviceCreate Aufruf, der dem WdfDeviceCreate Aufruf folgt.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar ab Windows 8.
Zielplattform- Universal
Header- gpioclx.h
Library Msgpioclxstub.lib
IRQL- PASSIVE_LEVEL

Siehe auch

EvtDriverDeviceAdd

GPIO_CLX_ProcessAddDevicePostDeviceCreate

WDFDEVICE_INIT

WDF_OBJECT_ATTRIBUTES

WdfDeviceCreate