Share via


NdisMQueueDpcEx 函式 (ndis.h)

NDIS 迷你埠驅動程式會呼叫 NdisMQueueDpcEx 函式,以排程 CPU 上的 DPC 呼叫。

語法

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 訊息識別碼。 如果 DPC 用於行型中斷,則不會使用此參數,而且應該設定為零。 否則 ,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 並未排程,因為對應至此中斷/處理器組的 DPC 已經排程給該 CPU。

備註

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 和更新版本的驅動程序應該一律使用 NdisMQueueDpcEx 來排程 DPC。
 

規格需求

需求
最低支援的用戶端 NDIS 6.20 和更新版本支援。
目標平台 Universal
標頭 ndis.h (包括 Ndis.h)
程式庫 Ndis.lib
IRQL 任何層級

另請參閱

MiniportInterrupt

MiniportInterruptDPC

MiniportMessageInterrupt

MiniportMessageInterruptDPC

NdisMQueueDpc

NdisMRegisterInterruptEx