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 |
---|---|
|
Il chiamante non è un client registrato di GpioClx. |
|
Memoria insufficiente. |
Osservazioni
Il driver del controller GPIO deve chiamare questo metodo nella relativa EvtDriverDeviceAdd funzione di 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 le richieste di I/O o gli interrupt di processo per il nuovo oggetto dispositivo framework.
Esempi
L'esempio di codice seguente mostra la EvtDriverDeviceAdd funzione di 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 questo punto di chiamata vengono WDFDEVICE_INIT e WDF_OBJECT_ATTRIBUTES strutture. 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.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Disponibile a partire da Windows 8. |
piattaforma di destinazione | Universale |
intestazione | gpioclx.h |
libreria | Msgpioclxstub.lib |
IRQL | PASSIVE_LEVEL |