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 호출됩니다. 자세한 내용은 Interrupt-Related 콜백참조하세요.
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. 비고를 참조하세요. |