GPIO_CLX_ProcessAddDevicePreDeviceCreate, fonction (gpioclx.h)
La méthode GPIO_CLX_ProcessAddDevicePreDeviceCreate charge les informations d’initialisation dans deux structures qui sont passées en tant que paramètres d’entrée à la méthode WdfDeviceCreate .
Syntaxe
NTSTATUS GPIO_CLX_ProcessAddDevicePreDeviceCreate(
[in] WDFDRIVER Driver,
[in, out] PWDFDEVICE_INIT DeviceInit,
[out] PWDF_OBJECT_ATTRIBUTES FdoAttributes
);
Paramètres
[in] Driver
Un handle WDFDRIVER vers l’objet pilote d’infrastructure pour le pilote de contrôleur GPIO.
[in, out] DeviceInit
Pointeur vers une structure de WDFDEVICE_INIT allouée par l’infrastructure. Cette méthode charge les informations d’initialisation dans cette structure. Au retour, cette structure est prête à être utilisée comme paramètre d’entrée pour la méthode WdfDeviceCreate .
[out] FdoAttributes
Pointeur vers une structure de WDF_OBJECT_ATTRIBUTES allouée par l’appelant. Cette méthode charge les informations d’initialisation dans cette structure. Au retour, cette structure est prête à être utilisée comme paramètre d’entrée pour la méthode WdfDeviceCreate .
Valeur retournée
GPIO_CLX_ProcessAddDevicePreDeviceCreate retourne STATUS_SUCCESS si l’appel réussit. Les valeurs de retour possibles incluent les codes d’erreur suivants.
Code de retour | Description |
---|---|
|
L’appelant n’est pas un client inscrit de GpioClx. |
|
Mémoire insuffisante. |
Remarques
Votre pilote de contrôleur GPIO doit appeler cette méthode dans sa fonction de rappel EvtDriverDeviceAdd , avant l’appel à la méthode WdfDeviceCreate qui crée l’objet de périphérique (FDO) qui représente le contrôleur GPIO. Sinon, l’extension d’infrastructure GPIO (GpioClx) ne peut pas gérer les demandes d’E/S ni traiter les interruptions pour le nouvel objet d’appareil d’infrastructure.
Exemples
L’exemple de code suivant montre la fonction de rappel EvtDriverDeviceAdd dans le pilote du contrôleur GPIO pour un périphérique de contrôleur 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;
}
Dans l’exemple de code précédent, l’appel WdfDeviceCreate crée l’objet d’appareil framework qui représente l’appareil du contrôleur GPIO. Les deux paramètres d’entrée de cet appel pointent vers des structures WDFDEVICE_INIT et WDF_OBJECT_ATTRIBUTES . Ces structures sont modifiées par l’appel GPIO_CLX_ProcessAddDevicePreDeviceCreate , qui précède l’appel WdfDeviceCreate . Le paramètre de sortie, Device, de l’appel WdfDeviceCreate est un paramètre d’entrée à l’appel GPIO_CLX_ProcessAddDevicePostDeviceCreate , qui suit l’appel WdfDeviceCreate .
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible à partir de Windows 8. |
Plateforme cible | Universal |
En-tête | gpioclx.h |
Bibliothèque | Msgpioclxstub.lib |
IRQL | PASSIVE_LEVEL |