MSI-X 預先註冊
若要支援變更 MSI-X 中斷親和性,或移除訊息中斷資源,迷你埠驅動程序必須建立資源需求篩選函式。 這個預先註冊步驟會在 NDIS 呼叫 MiniportInitializeEx 函式之前發生。
若要建立資源需求篩選函式,迷你埠驅動程序必須提供 MiniportSetOptions 函式。 當迷你埠驅動程式從 DriverEntry 例程呼叫 NdisMRegisterMiniportDriver 函式時,驅動程式會在 NDIS_MINIPORT_DRIVER_CHARACTERISTICS 結構中傳遞 MiniportSetOptions 的進入點。 NDIS 會在 NdisMRegisterMiniportDriver的過程中調用 MiniportSetOptions 函式。
從 MiniportSetOptions,迷你埠驅動程式會呼叫 NdisSetOptionalHandlers 函式,並指定 NDIS_MINIPORT_PNP_CHARACTERISTICS 結構。 此結構會定義 MiniportAddDevice、MiniportRemoveDevice、MiniportStartDevice和 MiniportFilterResourceRequirements 函式的進入點。
當 NDIS 收到隨插即用 (PnP) 管理員的附加裝置要求時,NDIS 會呼叫迷你埠驅動程式的 MiniportAddDevice 函式。 NDIS 傳遞至 MiniportAddDevice 的 MiniportAdapterHandle 參數的句柄,是 NDIS 稍後傳遞給 MiniportInitializeEx 函式的句柄。
在 MiniportAddDevice中,驅動程式會初始化 NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES 結構,並將這個結構傳遞至 NdisMSetMiniportAttributes 函式。 NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES 結構包含 MiniportAddDeviceContext 成員,該成員是小型埠驅動程式為裝置配置的上下文區域的控制代碼。 NDIS 稍後會將此內容句柄提供給 MiniportRemoveDevice、MiniportFilterResourceRequirements、MiniportStartDevice和 MiniportInitializeEx 函式。 針對 MiniportInitializeEx,內容句柄會傳遞至 MiniportInitParameters 參數所指向之 NDIS_MINIPORT_INIT_PARAMETERS 結構的 MiniportAddDeviceContext 成員。
在 NDIS 呼叫 MiniportAddDevice 和 MiniportAddDevice 傳回 NDIS_STATUS_SUCCESS 之後,NDIS 在每次接收到 IRP_MN_FILTER_RESOURCE_REQUIREMENTS I/O 請求封包 (IRP) 時,都會呼叫 MiniportFilterResourceRequirements 函式。 MiniportFilterResourceRequirements 可以變更每個 MSI-X 訊息的中斷親和性、新增訊息中斷資源,或者在驅動程式將在 MiniportInitializeEx 函式中註冊行為基礎的中斷時移除訊息中斷資源。 如需建立中斷親和性原則的詳細資訊,請參閱 MSI-X 資源篩選。
當 NDIS 從 PnP 管理員收到移除裝置要求時,NDIS 會呼叫 miniport 驅動程式的 MiniportRemoveDevice 函式。 MiniportRemoveDevice 函式應該會復原 MiniportAddDevice 函式執行的作業。