GPIO_CLX_ProcessAddDevicePreDeviceCreate-Funktion (gpioclx.h)
Die GPIO_CLX_ProcessAddDevicePreDeviceCreate-Methode lädt Initialisierungsinformationen in zwei Strukturen, die als Eingabeparameter an die WdfDeviceCreate-Methode übergeben werden.
Syntax
NTSTATUS GPIO_CLX_ProcessAddDevicePreDeviceCreate(
[in] WDFDRIVER Driver,
[in, out] PWDFDEVICE_INIT DeviceInit,
[out] PWDF_OBJECT_ATTRIBUTES FdoAttributes
);
Parameter
[in] Driver
Ein WDFDRIVER-Handle für das Frameworktreiberobjekt für den GPIO-Controllertreiber.
[in, out] DeviceInit
Ein Zeiger auf eine vom Framework zugewiesene WDFDEVICE_INIT-Struktur . Diese Methode lädt Initialisierungsinformationen in diese Struktur. Bei der Rückgabe kann diese Struktur als Eingabeparameter für die WdfDeviceCreate-Methode verwendet werden.
[out] FdoAttributes
Ein Zeiger auf eine aufruferseitig zugewiesene WDF_OBJECT_ATTRIBUTES-Struktur . Diese Methode lädt Initialisierungsinformationen in diese Struktur. Bei der Rückgabe kann diese Struktur als Eingabeparameter für die WdfDeviceCreate-Methode verwendet werden.
Rückgabewert
GPIO_CLX_ProcessAddDevicePreDeviceCreate gibt STATUS_SUCCESS zurück, wenn der Aufruf erfolgreich ist. Mögliche Rückgabewerte sind die folgenden Fehlercodes.
Rückgabecode | Beschreibung |
---|---|
|
Der Aufrufer ist kein registrierter GpioClx-Client. |
|
Nicht genügend Arbeitsspeicher. |
Hinweise
Ihr GPIO-Controllertreiber muss diese Methode in seiner Rückruffunktion EvtDriverDeviceAdd aufrufen, bevor die WdfDeviceCreate-Methode aufgerufen wird, die das Geräteobjekt (Device Object, FDO) erstellt, das den GPIO-Controller darstellt. Andernfalls kann die GPIO-Frameworkerweiterung (GpioClx) keine E/A-Anforderungen verarbeiten oder Unterbrechungen für das neue Frameworkgeräteobjekt verarbeiten.
Beispiele
Das folgende Codebeispiel zeigt die Rückruffunktion EvtDriverDeviceAdd im GPIO-Controllertreiber für ein GPIO-Controllergerät "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;
}
Im vorherigen Codebeispiel erstellt der WdfDeviceCreate-Aufruf das Framework-Geräteobjekt, das das GPIO-Controllergerät darstellt. Die beiden Eingabeparameter für diesen Aufruf verweisen auf WDFDEVICE_INIT - und WDF_OBJECT_ATTRIBUTES-Strukturen . Diese Strukturen werden durch den GPIO_CLX_ProcessAddDevicePreDeviceCreate-Aufruf geändert, der dem Aufruf WdfDeviceCreate vorangeht. Der Ausgabeparameter Device aus dem WdfDeviceCreate-Aufruf ist ein Eingabeparameter für den GPIO_CLX_ProcessAddDevicePostDeviceCreate-Aufruf , der dem Aufruf WdfDeviceCreate folgt.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Verfügbar ab Windows 8. |
Zielplattform | Universell |
Header | gpioclx.h |
Bibliothek | Msgpioclxstub.lib |
IRQL | PASSIVE_LEVEL |