NdisMRegisterInterruptEx 関数 (ndis.h)
NDIS ミニポート ドライバーは、割り込みを登録する NdisMRegisterInterruptEx 関数を呼び出します。
構文
NDIS_STATUS NdisMRegisterInterruptEx(
[in] NDIS_HANDLE MiniportAdapterHandle,
[in] NDIS_HANDLE MiniportInterruptContext,
[in] PNDIS_MINIPORT_INTERRUPT_CHARACTERISTICS MiniportInterruptCharacteristics,
[out] PNDIS_HANDLE NdisInterruptHandle
);
パラメーター
[in] MiniportAdapterHandle
NDIS が に渡したミニポート アダプター ハンドル MiniportInitializeEx 関数。
[in] MiniportInterruptContext
コンテキスト情報のブロックへのポインター。 ミニポート ドライバーは、割り込みに関する情報を格納するには、このメモリを割り当てます。 NDIS は、割り込みに関連付けられている他の関数への後続の呼び出しでコンテキスト情報ブロックを渡します。
[in] MiniportInterruptCharacteristics
へのポインターミニポート ドライバーが作成した構造体をNDIS_MINIPORT_INTERRUPT_CHARACTERISTICSします。 ドライバーは、ハンドラー エントリ ポイントと割り込み特性を定義する構成パラメーターを使用して、この構造体を初期化します。
[out] NdisInterruptHandle
NDIS ハンドルへのポインター。 NDIS は、新しく作成された割り込みオブジェクトのハンドルを 、NdisInterruptHandle ポインターが指定するアドレスに書き込みます。
戻り値
NdisMRegisterInterruptEx は 、次のいずれかの値を返すことができます。
リターン コード | 説明 |
---|---|
|
NDIS は割り込みオブジェクトを初期化し、 NdisInterruptHandle で有効な割り込みハンドルを指定しました。 NDIS はハードウェア リソースを要求し、割り込みが発生したときに呼び出す関数を設定しました。 |
|
リソースが不足しているため、NdisMRegisterInterruptEx が失敗しました。 |
|
割り込みオブジェクトを初期化しようとしましたが、上記のリスト以外の理由で失敗しました。 |
注釈
ミニポート ドライバーは、割り込みを生成する NIC を管理する場合は、その MiniportInitializeEx 関数から NdisMRegisterInterruptEx を呼び出す必要があります。
MiniportInitializeEx は を呼び出す必要があります。NdisMRegisterInterruptEx を呼び出す前の NdisMSetMiniportAttributes 関数。
ミニポート ドライバーは、次の割り込みサービス関数のエントリ ポイントを指定する必要があります。
MiniportDisableInterruptExNIC がメッセージシグナル割り込み (MSI) をサポートしている場合、ミニポート ドライバーは、次の MSI サービス機能のエントリ ポイントを指定する必要があります。
MiniportMessageInterruptDPC ミニポートDisableMessageInterrupt ミニポートEnableMessageInterruptドライバーが MSI のエントリ ポイントを指定する場合は、MSI 以外の割り込みサービス関数のエントリ ポイントも指定する必要があります。 また、 NdisMRegisterInterruptEx がNDIS_STATUS_SUCCESSを返す場合、ドライバーは の InterruptType メンバーの値を調べる必要があります。 割り 込みの種類を決定する構造体をNDIS_MINIPORT_INTERRUPT_CHARACTERISTICS NDIS が付与します。 NDIS で MSI サポートを許可できない場合は、行ベースの割り込みのサポートが付与されます。
NIC で割り込みが有効になっている場合、ドライバーが NdisMRegisterInterruptEx を呼び出した後でも、NdisMRegisterInterruptEx が返される前でも、ドライバーの MiniportInterrupt(または MiniportMessageInterrupt) 関数をいつでも呼び出すことができます。 そのため、ドライバーは、割り込みを処理する準備ができるまで NdisMRegisterInterruptEx を呼び出さないでください。
ドライバーは を呼び出します。 NdisMRegisterInterruptEx で以前に割り当てられたリソースを解放するための NdisMDeregisterInterruptEx 関数。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | NDIS 6.0 以降でサポートされています。 |
対象プラットフォーム | ユニバーサル |
Header | ndis.h (Ndis.h を含む) |
Library | Ndis.lib |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 | Init_DeRegisterInterrupt(ndis)、 Init_RegisterInterrupt(ndis)、 Irql_Interrupt_Function(ndis)、 NdisMDeregisterInterruptEx(ndis) |