共用方式為


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 和更新版本支援。
目標平臺 普遍
標頭 ndis.h (包括 Ndis.h)
連結庫 Ndis.lib
IRQL 任何層級

另請參閱

MiniportInterrupt

MiniportInterruptDPC

MiniportMessageInterrupt

MiniportMessageInterruptDPC

NdisMQueueDpc

NdisMRegisterInterruptEx