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.
Valor de retorno
GPIO_CLX_ProcessAddDevicePreDeviceCreate retorna STATUS_SUCCESS se a chamada for bem-sucedida. Os valores de retorno possíveis incluem os seguintes códigos de erro.
Código de retorno | Descrição |
---|---|
|
O chamador não é um cliente registrado do GpioClx. |
|
Sem memória. |
Observações
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 da 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 da estrutura que representa o dispositivo do 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 |
---|---|
de cliente com suporte mínimo | Disponível a partir do Windows 8. |
da Plataforma de Destino | Universal |
cabeçalho | gpioclx.h |
biblioteca | Msgpioclxstub.lib |
IRQL | PASSIVE_LEVEL |