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 |
---|---|
|
O chamador não é um cliente registrado do GpioClx. |
|
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 |