次の方法で共有


GPIO_CLX_AcquireInterruptLock関数 (gpioclx.h)

GPIO_CLX_AcquireInterruptLock メソッドは、汎用 I/O (GPIO) コントローラーのピンのバンクに割り込みロックを取得します。

構文

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。 「解説」を参照してください。

関連項目

GPIO_CLX_ReleaseInterruptLock