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 函式可完成中斷的延後處理。
NdisMQueueDpcEx 與 NdisMQueueDpc 函式相同,但 TargetProcessors 參數的類型為 KGROUP_AFFINITY。 因此, NdisMQueueDpcEx 可以在任何處理器群組中的處理器上排程 DPC。 若要在多個處理器群組中排程 DPC,您可以使用對 NdisMQueueDpcEx 的多個呼叫。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | NDIS 6.20 和更新版本支援。 |
目標平台 | Universal |
標頭 | ndis.h (包括 Ndis.h) |
程式庫 | Ndis.lib |
IRQL | 任何層級 |