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. |
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
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per