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
STATUS_INVALID_PARAMETER
L’appelant n’est pas un client inscrit de GpioClx.
STATUS_INSUFFICIENT_RESOURCES
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

Voir aussi

EvtDriverDeviceAdd

GPIO_CLX_ProcessAddDevicePostDeviceCreate

WDFDEVICE_INIT

WDF_OBJECT_ATTRIBUTES

WdfDeviceCreate