Função GPIO_CLX_ProcessAddDevicePreDeviceCreate (gpioclx.h)

O método GPIO_CLX_ProcessAddDevicePreDeviceCreate carrega informações de inicialização em duas estruturas que são passadas como parâmetros de entrada para o método WdfDeviceCreate .

Sintaxe

NTSTATUS GPIO_CLX_ProcessAddDevicePreDeviceCreate(
  [in]      WDFDRIVER              Driver,
  [in, out] PWDFDEVICE_INIT        DeviceInit,
  [out]     PWDF_OBJECT_ATTRIBUTES FdoAttributes
);

Parâmetros

[in] Driver

Um identificador WDFDRIVER para o objeto de driver de estrutura para o driver do controlador GPIO.

[in, out] DeviceInit

Um ponteiro para uma estrutura de WDFDEVICE_INIT alocada por estrutura. Esse método carrega informações de inicialização nessa estrutura. No retorno, essa estrutura está pronta para ser usada como um parâmetro de entrada para o método WdfDeviceCreate .

[out] FdoAttributes

Um ponteiro para uma estrutura de WDF_OBJECT_ATTRIBUTES alocada pelo chamador. Esse método carrega informações de inicialização nessa estrutura. No retorno, essa estrutura está pronta para ser usada como um parâmetro de entrada para o método WdfDeviceCreate .

Retornar valor

GPIO_CLX_ProcessAddDevicePreDeviceCreate retornará STATUS_SUCCESS se a chamada for bem-sucedida. Os possíveis valores retornados incluem os seguintes códigos de erro.

Código de retorno Descrição
STATUS_INVALID_PARAMETER
O chamador não é um cliente registrado do GpioClx.
STATUS_INSUFFICIENT_RESOURCES
Sem memória.

Comentários

O driver do controlador GPIO deve chamar esse método em sua função de retorno de chamada EvtDriverDeviceAdd , antes da chamada para o método WdfDeviceCreate que cria o objeto de dispositivo (FDO) que representa o controlador GPIO. Caso contrário, a extensão da estrutura GPIO (GpioClx) não pode lidar com solicitações de E/S ou processar interrupções para o novo objeto de dispositivo de estrutura.

Exemplos

O exemplo de código a seguir mostra a função de retorno de chamada EvtDriverDeviceAdd no driver do controlador GPIO para um dispositivo de controlador 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;
}

No exemplo de código anterior, a chamada WdfDeviceCreate cria o objeto de dispositivo de estrutura que representa o dispositivo controlador GPIO. Os dois parâmetros de entrada para essa chamada apontam para estruturas WDFDEVICE_INIT e WDF_OBJECT_ATTRIBUTES . Essas estruturas são modificadas pela chamada GPIO_CLX_ProcessAddDevicePreDeviceCreate , que precede a chamada WdfDeviceCreate . O parâmetro de saída , Device, da chamada WdfDeviceCreate é um parâmetro de entrada para a chamada GPIO_CLX_ProcessAddDevicePostDeviceCreate , que segue a chamada WdfDeviceCreate .

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível a partir do Windows 8.
Plataforma de Destino Universal
Cabeçalho gpioclx.h
Biblioteca Msgpioclxstub.lib
IRQL PASSIVE_LEVEL

Confira também

EvtDriverDeviceAdd

GPIO_CLX_ProcessAddDevicePostDeviceCreate

WDFDEVICE_INIT

WDF_OBJECT_ATTRIBUTES

WdfDeviceCreate