funzione GPIO_CLX_ProcessAddDevicePreDeviceCreate (gpioclx.h)

Il metodo GPIO_CLX_ProcessAddDevicePreDeviceCreate carica le informazioni di inizializzazione in due strutture passate come parametri di input al metodo WdfDeviceCreate .

Sintassi

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

Parametri

[in] Driver

Handle WDFDRIVER per l'oggetto driver del framework per il driver del controller GPIO.

[in, out] DeviceInit

Puntatore a una struttura di WDFDEVICE_INIT allocata dal framework. Questo metodo carica le informazioni di inizializzazione in questa struttura. In caso di restituzione, questa struttura è pronta per essere usata come parametro di input per il metodo WdfDeviceCreate .

[out] FdoAttributes

Puntatore a una struttura di WDF_OBJECT_ATTRIBUTES allocata dal chiamante. Questo metodo carica le informazioni di inizializzazione in questa struttura. In caso di restituzione, questa struttura è pronta per essere usata come parametro di input per il metodo WdfDeviceCreate .

Valore restituito

GPIO_CLX_ProcessAddDevicePreDeviceCreate restituisce STATUS_SUCCESS se la chiamata ha esito positivo. I valori restituiti possibili includono i codici di errore seguenti.

Codice restituito Descrizione
STATUS_INVALID_PARAMETER
Il chiamante non è un client registrato di GpioClx.
STATUS_INSUFFICIENT_RESOURCES
Memoria insufficiente.

Commenti

Il driver del controller GPIO deve chiamare questo metodo nella relativa funzione EvtDriverDeviceAdd callback, prima della chiamata al metodo WdfDeviceCreate che crea l'oggetto dispositivo (FDO) che rappresenta il controller GPIO. In caso contrario, l'estensione del framework GPIO (GpioClx) non può gestire richieste di I/O o interruzioni di processo per il nuovo oggetto del dispositivo framework.

Esempio

Nell'esempio di codice seguente viene illustrata la funzione EvtDriverDeviceAdd callback nel driver del controller GPIO per un dispositivo controller GPIO "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;
}

Nell'esempio di codice precedente la chiamata WdfDeviceCreate crea l'oggetto dispositivo framework che rappresenta il dispositivo controller GPIO. I due parametri di input per questa chiamata puntano a strutture WDFDEVICE_INIT e WDF_OBJECT_ATTRIBUTES . Queste strutture vengono modificate dalla chiamata GPIO_CLX_ProcessAddDevicePreDeviceCreate , che precede la chiamata WdfDeviceCreate . Il parametro di output, Device, dalla chiamata WdfDeviceCreate è un parametro di input alla chiamata GPIO_CLX_ProcessAddDevicePostDeviceCreate , che segue la chiamata WdfDeviceCreate .

Requisiti

Requisito Valore
Client minimo supportato Disponibile a partire da Windows 8.
Piattaforma di destinazione Universale
Intestazione gpioclx.h
Libreria Msgpioclxstub.lib
IRQL PASSIVE_LEVEL

Vedi anche

EvtDriverDeviceAdd

GPIO_CLX_ProcessAddDevicePostDeviceCreate

WDFDEVICE_INIT

WDF_OBJECT_ATTRIBUTES

WdfDeviceCreate