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 在MiniportAdapterHandle參數中傳遞至MiniportAddDevice的控制碼是 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 會呼叫迷你埠驅動程式的 MiniportRemoveDevice 函式。 MiniportRemoveDevice函式應該復原MiniportAddDevice函式執行的作業。