función GPIO_CLX_ProcessAddDevicePreDeviceCreate (gpioclx.h)

El método GPIO_CLX_ProcessAddDevicePreDeviceCreate carga la información de inicialización en dos estructuras que se pasan como parámetros de entrada al método WdfDeviceCreate .

Sintaxis

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

Parámetros

[in] Driver

Un controlador WDFDRIVER para el objeto de controlador de marco para el controlador GPIO.

[in, out] DeviceInit

Puntero a una estructura de WDFDEVICE_INIT asignada por el marco. Este método carga la información de inicialización en esta estructura. A cambio, esta estructura está lista para usarse como parámetro de entrada para el método WdfDeviceCreate .

[out] FdoAttributes

Puntero a una estructura de WDF_OBJECT_ATTRIBUTES asignada por el autor de la llamada. Este método carga la información de inicialización en esta estructura. A cambio, esta estructura está lista para usarse como parámetro de entrada para el método WdfDeviceCreate .

Valor devuelto

GPIO_CLX_ProcessAddDevicePreDeviceCreate devuelve STATUS_SUCCESS si la llamada se realiza correctamente. Entre los posibles valores devueltos se incluyen los siguientes códigos de error.

Código devuelto Descripción
STATUS_INVALID_PARAMETER
El autor de la llamada no es un cliente registrado de GpioClx.
STATUS_INSUFFICIENT_RESOURCES
Memoria insuficiente

Comentarios

El controlador del controlador GPIO debe llamar a este método en su función de devolución de llamada EvtDriverDeviceAdd , antes de llamar al método WdfDeviceCreate que crea el objeto de dispositivo (FDO) que representa el controlador GPIO. De lo contrario, la extensión de marco gpIO (GpioClx) no puede controlar las solicitudes de E/S ni las interrupciones del proceso para el nuevo objeto de dispositivo de marco.

Ejemplos

En el ejemplo de código siguiente se muestra la función de devolución de llamada EvtDriverDeviceAdd en el controlador del controlador GPIO para un dispositivo de controlador 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;
}

En el ejemplo de código anterior, la llamada WdfDeviceCreate crea el objeto de dispositivo de marco que representa el dispositivo del controlador GPIO. Los dos parámetros de entrada de esta llamada apuntan a WDFDEVICE_INIT y WDF_OBJECT_ATTRIBUTES estructuras. Estas estructuras se modifican mediante la llamada GPIO_CLX_ProcessAddDevicePreDeviceCreate , que precede a la llamada WdfDeviceCreate . El parámetro de salida , Device, de la llamada WdfDeviceCreate es un parámetro de entrada a la llamada GPIO_CLX_ProcessAddDevicePostDeviceCreate , que sigue a la llamada WdfDeviceCreate .

Requisitos

Requisito Value
Cliente mínimo compatible Disponible a partir de Windows 8.
Plataforma de destino Universal
Encabezado gpioclx.h
Library Msgpioclxstub.lib
IRQL PASSIVE_LEVEL

Consulte también

EvtDriverDeviceAdd

GPIO_CLX_ProcessAddDevicePostDeviceCreate

WDFDEVICE_INIT

WDF_OBJECT_ATTRIBUTES

WdfDeviceCreate