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 は、このポインターを MiniportInterruptDPCMiniportDpcContext パラメーターに渡します。 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 関数。

NdisMQueueDpcExNdisMQueueDpc 関数と同じですが、 TargetProcessors パラメーターの型がKGROUP_AFFINITY。 したがって、 NdisMQueueDpcEx は 、任意のプロセッサ グループ内のプロセッサで DPC をスケジュールできます。 複数のプロセッサ グループ内の DPC をスケジュールするには、 NdisMQueueDpcEx への複数の呼び出しを使用できます。

メモNdisMQueueDpcMiniportInterrupt、および MiniportMessageInterrupt 関数には、ULONG である TargetProcessors パラメーターがあります。 このパラメーターは、プロセッサ グループ 0 の最初の 32 プロセッサを指定します。
 
大事な NDIS 6.20 以降のドライバーでは、DPC をスケジュールするために常に NdisMQueueDpcEx を使用する必要があります。
 

要件

要件
サポートされている最小のクライアント NDIS 6.20 以降でサポートされています。
対象プラットフォーム ユニバーサル
Header ndis.h (Ndis.h を含む)
Library Ndis.lib
IRQL 任意のレベル

こちらもご覧ください

MiniportInterrupt

MiniportInterruptDPC

MiniportMessageInterrupt

MiniportMessageInterruptDPC

NdisMQueueDpc

NdisMRegisterInterruptEx