網路驅動程式中的多處理器支援
若要為所有Microsoft Windows 版本撰寫可攜式驅動程式,您必須撰寫程式代碼,以在具有多個並行執行處理器的電腦上安全地執行。 網路驅動程式必須是多處理器安全,而且必須使用提供的 NDIS 連結庫函式。
在單處理器環境中,單一處理器一次只會執行一部計算機指令,即使網路介面卡 (NIC) 或其他裝置有可能在封包到達或定時器中斷時中斷目前的執行數據流。 一般而言,在操作像封包佇列這樣的數據結構時,驅動程式的一個會停用 NIC 上的中斷,進行處理,然後重新啟用中斷。 單處理器環境中的許多線程似乎同時執行,但實際上是在交錯的時間片中執行。
在多處理器環境中,處理器會同時執行數部電腦指令。 驅動程式必須同步處理,如此一來,當某個驅動程式函式作通用數據結構時,另一個處理器上的相同或另一個驅動程式函式不會同時嘗試修改共享數據。 所有驅動程式碼在對稱多處理器 (SMP) 電腦中都是可重入的。 若要消除此資源保護問題,Windows 設備驅動程式會使用自旋鎖。 如需詳細資訊,請參閱網路驅動程式 中的同步處理和通知。