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 |
---|---|
|
El autor de la llamada no es un cliente registrado de GpioClx. |
|
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 |