NdisMQueueDpcEx 関数 (ndis.h)
NDIS ミニポート ドライバーは、CPU で DPC 呼び出しをスケジュールする NdisMQueueDpcEx 関数を呼び出します。
構文
KAFFINITY NdisMQueueDpcEx(
[in] IN NDIS_HANDLE NdisInterruptHandle,
[in] IN ULONG MessageId,
[in] IN PGROUP_AFFINITY TargetProcessors,
[in] IN PVOID MiniportDpcContext
);
パラメーター
[in] NdisInterruptHandle
への以前の呼び出しでミニポート ドライバーが取得した割り込みハンドル NdisMRegisterInterruptEx 関数。
[in] MessageId
DPC の MSI メッセージ ID。 DPC が行ベースの割り込みの場合、このパラメーターは使用されず、0 に設定する必要があります。 それ以外の場合、 MessageId は に対するインデックスです。 内のIO_INTERRUPT_MESSAGE_INFO_ENTRY 構造体 IO_INTERRUPT_MESSAGE_INFO 構造体。 ドライバーが NdisMRegisterInterruptEx 関数を使用して MSI に正常に登録されると、NDIS は MessageInfoTable メンバーで関連付けられているIO_INTERRUPT_MESSAGE_INFO構造体へのポインターを渡します。
[in] TargetProcessors
ターゲット プロセッサを示すビットマップ。 NDIS では、ビットマップに示されているターゲット プロセッサごとに DPC をスケジュールする必要があります。 TargetProcessors の各ビットは CPU を識別します。 呼び出し元がビット 0 を設定する場合、NDIS は CPU 0 の DPC をスケジュールします。 呼び出し元がビット 1 を設定する場合、NDIS は CPU 1 用の DPC をスケジュールします。その他のスケジュールも設定します。
[in] MiniportDpcContext
呼び出し元が指定したコンテキスト領域へのポインター。 NDIS は、このポインターを MiniportInterruptDPC の MiniportDpcContext パラメーターに渡します。 MiniportMessageInterruptDPC 関数。
戻り値
NdisMQueueDpcEx は、ターゲット プロセッサを示すビットマップを返します。 戻り値の各ビットは CPU を識別します。
NDIS は、ビットマップに設定されているターゲット プロセッサごとに DPC を正常にスケジュールしました。 NDIS がビット 0 を設定した場合、NDIS は CPU 0 の DPC をスケジュールします。 NDIS がビット 1 を設定した場合、NDIS は CPU 1 用に DPC をスケジュールします。などです。
ドライバーが CPU の DPC を要求し、NDIS がその DPC をスケジュールしなかったことを示している場合、この割り込み/プロセッサ ペアにマップされる DPC がその CPU に対して既にスケジュールされているため、DPC はスケジュールされませんでした。
注釈
NDIS 6.20 以降のミニポート ドライバーは 、NdisMQueueDpcEx を呼び出して、他のプロセッサの DPC 呼び出しを要求します。 NDIS は 、MiniportInterruptDPC または を呼び出します。割り込みの遅延処理を完了する MiniportMessageInterruptDPC 関数。
NdisMQueueDpcEx は NdisMQueueDpc 関数と同じですが、 TargetProcessors パラメーターの型がKGROUP_AFFINITY。 したがって、 NdisMQueueDpcEx は 、任意のプロセッサ グループ内のプロセッサで DPC をスケジュールできます。 複数のプロセッサ グループ内の DPC をスケジュールするには、 NdisMQueueDpcEx への複数の呼び出しを使用できます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | NDIS 6.20 以降でサポートされています。 |
対象プラットフォーム | ユニバーサル |
Header | ndis.h (Ndis.h を含む) |
Library | Ndis.lib |
IRQL | 任意のレベル |