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 do controlador GPIO. A gpioClx (extensão de estrutura gpio) passa esse valor de ponteiro como um parâmetro para as funções de retorno de chamada 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.

Retornar valor

Nenhum

Comentários

Um thread de driver do controlador GPIO chama esse método para sincronizar com a ISR (rotina de serviço de interrupção) em 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 ISR gpioClx chama funções de retorno de chamada implementadas pelo driver para acessar 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 Retornos de chamada relacionados à interrupção.

Se o ISR gpioClx 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 tiver gerado 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á tiver 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á um bug marcar em builds de depuração de GpioClx.

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 DIRQL ou em PASSIVE_LEVEL. Consulte Observações.

Confira também

GPIO_CLX_ReleaseInterruptLock