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 zum 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. Auf der Rückgabe kann diese Struktur als Eingabeparameter für die WdfDeviceCreate-Methode verwendet werden.
[out] FdoAttributes
Ein Zeiger auf eine aufrufergeteilte WDF_OBJECT_ATTRIBUTES Struktur. Diese Methode lädt Initialisierungsinformationen in diese Struktur. Auf 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 Anruf erfolgreich ist. Mögliche Rückgabewerte sind die folgenden Fehlercodes.
Rückgabecode | Beschreibung |
---|---|
|
Der Aufrufer ist kein registrierter Client von GpioClx. |
|
Nicht genügend Arbeitsspeicher. |
Bemerkungen
Ihr GPIO-Controllertreiber muss diese Methode in seiner EvtDriverDeviceAdd Rückruffunktion aufrufen, bevor der Aufruf der WdfDeviceCreate-Methode, die das Geräteobjekt (FDO) erstellt, das den GPIO-Controller darstellt. Andernfalls kann die GPIO-Frameworkerweiterung (GpioClx) keine E/A-Anforderungen oder Prozessunterbrechungen für das neue Framework-Geräteobjekt verarbeiten.
Beispiele
Das folgende Codebeispiel zeigt die EvtDriverDeviceAdd Rückruffunktion 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 zeigen auf WDFDEVICE_INIT und WDF_OBJECT_ATTRIBUTES Strukturen. Diese Strukturen werden durch den aufruf GPIO_CLX_ProcessAddDevicePreDeviceCreate geändert, der dem WdfDeviceCreate Aufruf vorausgeht. Der Ausgabeparameter Deviceaus dem WdfDeviceCreate Aufruf ist ein Eingabeparameter für den GPIO_CLX_ProcessAddDevicePostDeviceCreate Aufruf, der dem WdfDeviceCreate Aufruf folgt.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Verfügbar ab Windows 8. |
Zielplattform- | Universal |
Header- | gpioclx.h |
Library | Msgpioclxstub.lib |
IRQL- | PASSIVE_LEVEL |