次の方法で共有


WdmlibIoConnectInterruptEx 関数 (iointex.h)

WdmlibIoConnectInterruptEx 関数は、デバイスの割り込みの割り込み処理ルーチンを登録します。

構文

NTSTATUS WdmlibIoConnectInterruptEx(
  [in, out] PIO_CONNECT_INTERRUPT_PARAMETERS Parameters
);

パラメーター

[in, out] Parameters

デバイスと割り込み処理ルーチンを指定する IO_CONNECT_INTERRUPT_PARAMETERS 構造体へのポインター。 返された 場合、WdmlibIoConnectInterruptEx はこの構造体を更新して、デバイスの割り込みに関する情報を保持します。

戻り値

この関数は、成功した場合はSTATUS_SUCCESS、失敗した場合は適切な NTSTATUS エラー値を返します。 考えられるエラー値は次のとおりです。

リターン コード 説明
STATUS_INVALID_DEVICE_REQUEST
指定したデバイスの操作が無効です。 たとえば、 Parameters->Version = CONNECT_LINE_BASED、システムによってデバイスに複数の割り込みメッセージが割り当てられているとします。
STATUS_INVALID_PARAMETER
呼び出し元が無効なパラメーターを指定しました。 このエラーは、たとえば、呼び出し元がデバイスのデバイス オブジェクトに NULL を 指定した場合に発生します。
STATUS_INVALID_PARAMETER_1
呼び出し元は、Parameters が指す構造体の Version メンバーに無効な値を指定しました。 パラメーター->バージョン は、CONNECT_LINE_BASED、CONNECT_MESSAGE_BASED、またはCONNECT_FULLY_SPECIFIEDのいずれかである必要があります。
STATUS_INVALID_PARAMETER_10
呼び出し元は、 Parameters が指す構造体の 10 番目のメンバーに無効な値を指定しました。 このエラーは、たとえば、 Parameters->FullySpecified.ProcessorEnableMask にビットが設定されていない場合に発生します。
STATUS_NOT_FOUND
引数の 1 つが見つかりませんでした。 たとえば、指定したデバイスに割り込みがないか、指定した割り込みベクトルがデバイスに割り当てられていません。

注釈

WdmlibIoConnectInterruptEx を使用すると、従来の行ベースの割り込み (PCI バスでサポートされている割り込みなど) と新しいメッセージシグナル割り込み (PCI バージョン 2.2 および 3.0 でサポートされる割り込みなど) の両方に割り込み処理ルーチンを登録できます。

ドライバーは、行ベースの割り込みのための 割り込みサービス ルーチンを登録し、メッセージシグナル割 り込みのための InterruptMessageService ルーチンを登録します。 各ケースで Parameters のメンバーを指定する方法の詳細については、「 IO_CONNECT_INTERRUPT_PARAMETERS」を参照してください。

WdmlibIoConnectInterruptExParameters のメンバーを更新して、デバイスの割り込みに関する情報を提供します。 WdmlibIoConnectInterruptEx によって提供される情報の詳細については、「IO_CONNECT_INTERRUPT_PARAMETERS」を参照してください。

WdmlibIoConnectInterruptEx に登録されているルーチンの登録を解除するには、WdmlibIoDisconnectInterruptEx を使用します。

ドライバーは、ISR に接続されるまで、割り込みを生成するようにデバイスをプログラミングしないでください。 したがって、 WDmlibIoConnectInterruptEx が返される前に ISR を起動することはできません。 ただし、プログラムできない特定のデバイス (ボタンなど) があります。 これらのデバイスの場合、 ドライバーは WdmlibIoConnectInterruptEx を呼び出したらすぐに ISR を処理するように準備する必要があります。 割り込み行は 、WdmlibIoConnectInterruptEx が呼び出されたときに既にアサートされている可能性があり、 WdmlibIoConnectInterruptEx 呼び出しアンワインドの前に、割り込みコントローラーで行が有効になった直後に発生する可能性があります。

割り込み処理ルーチンの登録の詳細については、「 ISR の登録」を参照してください。

要件

要件
サポートされている最小のクライアント Windows Vista 以降のバージョンの Windows オペレーティング システムで使用できます。 Windows 2000、Windows XP、または Windows Server 2003 でも動作する必要があるドライバーは、代わりに Iointex.lib にリンクしてルーチンを使用できます。
対象プラットフォーム ユニバーサル
Header iointex.h (Iointex.h、Wdm.h、Ntddk.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 HwStorPortProhibitedDDIs

こちらもご覧ください

IO_CONNECT_INTERRUPT_PARAMETERS

InterruptMessageService

InterruptService

WdmlibIoDisconnectInterruptEx