função GPIO_CLX_AcquireInterruptLock (gpioclx.h)
O método GPIO_CLX_AcquireInterruptLock adquire um bloqueio de interrupção em um banco de pinos no controlador de E/S de uso geral (GPIO).
Sintaxe
void GPIO_CLX_AcquireInterruptLock(
[in] PVOID Context,
[in] BANK_ID BankId
);
Parâmetros
[in] Context
Um ponteiro para o contexto do dispositivo do driver gpio. A extensão da estrutura gpio (GpioClx) passa esse valor de ponteiro como um parâmetro para as funções de retorno de chamada que são implementadas pelo driver do controlador GPIO.
[in] BankId
O identificador deste banco de pinos GPIO. Se N for o número de bancos no controlador GPIO, BankId será um inteiro no intervalo de 0 a N–1.
Valor de retorno
Nenhum
Observações
Um thread de driver do controlador GPIO chama esse método para sincronizar com a ISR (rotina de serviço de interrupção) no GpioClx. Embora o chamador mantenha o bloqueio de interrupção, o ISR não pode chamar funções de retorno de chamada implementadas pelo driver para acessar registros GPIO no banco especificado. Um driver de controlador GPIO deve chamar esse método antes de tentar acessar registros GPIO que podem ser acessados pelo ISR gpioClx.
O GPioClx ISR chama funções de retorno de chamada implementadas pelo driver para acessar o status de interrupção e habilitar registros no controlador GPIO. Dependendo dos recursos do controlador GPIO, o ISR é chamado em DIRQL ou em PASSIVE_LEVEL. Para obter mais informações, consulte Interrupt-Related retornos de chamada.
Se o GPioClx ISR acessar esses registros de interrupção no DIRQL, GPIO_CLX_AcquireInterruptLock gerará o IRQL do thread de chamada para o DIRQL no qual o ISR é executado. Se o ISR for executado em PASSIVE_LEVEL, esse método não alterará o IRQL do thread de chamada.
O método GPIO_CLX_ReleaseInterruptLock libera um bloqueio de interrupção que foi adquirido em uma chamada anterior para GPIO_CLX_AcquireInterruptLock. O parâmetro BankId especifica o banco afetado pelo bloqueio. Para liberar um bloqueio em um banco, o parâmetro BankId da chamada GPIO_CLX_ReleaseInterruptLock deve corresponder ao parâmetro BankId da chamada GPIO_CLX_AcquireInterruptLock que adquiriu o bloqueio. Se a chamada GPIO_CLX_AcquireInterruptLock gerar o IRQL do thread de chamada, GPIO_CLX_ReleaseInterruptLock restaurará o IRQL original desse thread.
O driver do controlador GPIO pode adquirir e liberar bloqueios de interrupção independentemente nos vários bancos no controlador GPIO. No entanto, é um erro fatal para o motorista tentar adquirir um bloqueio em um banco específico se o motorista já mantém um bloqueio neste banco.
Se o parâmetro Context for NULL ou apontar para um contexto de dispositivo GPIO inválido, esse método causará uma verificação de bugs nos builds de depuração do GpioClx.
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 | DIRQL ou em PASSIVE_LEVEL. Consulte Comentários. |