GPIO_CLX_AcquireInterruptLock 함수(gpioclx.h)

GPIO_CLX_AcquireInterruptLock 메서드는 GPIO(범용 I/O) 컨트롤러의 핀 뱅크에 대한 인터럽트 잠금을 획득합니다.

구문

void GPIO_CLX_AcquireInterruptLock(
  [in] PVOID   Context,
  [in] BANK_ID BankId
);

매개 변수

[in] Context

GPIO 컨트롤러 드라이버의 디바이스 컨텍스트에 대한 포인터입니다. GPIO 프레임워크 확장(GpioClx)은 이 포인터 값을 GPIO 컨트롤러 드라이버에서 구현하는 콜백 함수에 매개 변수로 전달합니다.

[in] BankId

이 GPIO 핀 뱅크의 식별자입니다. N이 GPIO 컨트롤러의 은행 수인 경우 BankId 는 0~N-1 범위의 정수입니다.

반환 값

없음

설명

GPIO 컨트롤러 드라이버 스레드는 이 메서드를 호출하여 GpioClx의 ISR(인터럽트 서비스 루틴)과 동기화합니다. 호출자가 인터럽트 잠금을 보유하는 동안 ISR은 드라이버 구현 콜백 함수를 호출하여 지정된 은행의 GPIO 레지스터에 액세스할 수 없습니다. GPIO 컨트롤러 드라이버는 GpioClx ISR에서 액세스할 수 있는 GPIO 레지스터에 액세스하기 전에 이 메서드를 호출해야 합니다.

GpioClx ISR은 드라이버 구현 콜백 함수를 호출하여 인터럽트 상태 액세스하고 GPIO 컨트롤러에서 레지스터를 사용하도록 설정합니다. GPIO 컨트롤러의 기능에 따라 ISR은 DIRQL 또는 PASSIVE_LEVEL 호출됩니다. 자세한 내용은 인터럽트 관련 콜백을 참조하세요.

GpioClx ISR이 DIRQL에서 이러한 인터럽트 레지스터에 액세스하는 경우 GPIO_CLX_AcquireInterruptLock 호출 스레드의 IRQL을 ISR이 실행되는 DIRQL로 올립니다. ISR이 PASSIVE_LEVEL 실행되는 경우 이 메서드는 호출 스레드의 IRQL을 변경하지 않습니다.

GPIO_CLX_ReleaseInterruptLock 메서드는 GPIO_CLX_AcquireInterruptLock 대한 이전 호출에서 획득한 인터럽트 잠금을 해제합니다. BankId 매개 변수는 잠금의 영향을 받는 은행을 지정합니다. 은행에 대한 잠금을 해제하려면 GPIO_CLX_ReleaseInterruptLock 호출의 BankId 매개 변수가 잠금을 획득한 GPIO_CLX_AcquireInterruptLock 호출의 BankId 매개 변수와 일치해야 합니다. GPIO_CLX_AcquireInterruptLock 호출로 호출 스레드의 IRQL이 발생한 경우 GPIO_CLX_ReleaseInterruptLock 이 스레드의 원래 IRQL을 복원합니다.

GPIO 컨트롤러 드라이버는 GPIO 컨트롤러의 다양한 은행에서 인터럽트 잠금을 독립적으로 획득하고 해제할 수 있습니다. 그러나 운전자가 이미 이 은행에 대한 잠금을 보유하고 있는 경우 드라이버가 특정 은행에 대한 잠금을 획득하려고 시도하는 것은 치명적인 오류입니다.

Context 매개 변수가 NULL이거나 잘못된 GPIO 디바이스 컨텍스트를 가리키는 경우 이 메서드는 GpioClx의 디버그 빌드에서 버그 검사 발생합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8 시작해서 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 gpioclx.h
라이브러리 Msgpioclxstub.lib
IRQL DIRQL 또는 PASSIVE_LEVEL. 설명 부분을 참조하세요.

추가 정보

GPIO_CLX_ReleaseInterruptLock