驅動程式開發人員應盡可能將程式碼指定為可分頁,以便為必須常駐於記憶體的程式碼釋放系統空間。 您可以使用 NDIS_PAGEABLE_FUNCTION 巨集將函式標示為可分頁。 IRQL、資源管理功能及函式的其他特性,可能會阻止函式可被分頁。
每個 ProtocolXxx 函式都會在從 PASSIVE_LEVEL 到 DISPATCH_LEVEL 的範圍內執行 IRQL。 在 IRQL = PASSIVE_LEVEL 執行的函數應該標示為可分頁。
在 IRQL = PASSIVE_LEVEL 執行的驅動程式函式,只要不會呼叫,也不會被任何在 IRQL = >DISPATCH_LEVEL 執行的函式(例如會取得自旋鎖的函式)呼叫,就可以進行分頁。 獲取自旋鎖會使得獲取該鎖的線程的 IRQL 上升至 DISPATCH_LEVEL。 在 IR QL = PASSIVE_LEVEL 上執行的驅動程式函式,例如 ProtocolBindAdapterEx,在 IRQL = PASSIVE_LEVEL 上執行的任何 > 函式,如果該驅動程式函式標示為可分頁程式代碼,則DISPATCH_LEVEL。 如需每個 NdisXxx 函式 IRQL 的詳細資訊,請參閱 NDIS 連結庫函式。
NDIS 通訊協定驅動程式的 DriverEntry 函式,以及只從 DriverEntry呼叫的程式代碼,應該使用 NDIS_INIT_FUNCTION 巨集來指定為僅限初始化的程式代碼。 使用此巨集識別的程式代碼假設只在系統初始化時間執行一次,因此只會在該時間進行對應。 在標示為僅限初始化的函式返回後,該函式將被丟棄。