共用方式為


MINIPORT_UNLOAD回呼函式 (ndis.h)

NDIS 會呼叫迷你埠驅動程式的 MiniportDriverUnload 函式,以要求驅動程式在系統完成驅動程式卸載作業之前釋放資源。

注意 您必須使用 MINIPORT_UNLOAD 類型來宣告函式。 如需詳細資訊,請參閱下列範例一節。
 

語法

MINIPORT_UNLOAD MiniportUnload;

void MiniportUnload(
  [in] PDRIVER_OBJECT DriverObject
)
{...}

參數

[in] DriverObject

DRIVER_OBJECT 結構的指標,該結構是驅動程序的驅動程序物件。

傳回值

備註

驅動程式會在呼叫 時指定 MiniportDriverUnload 進入點 NdisMRegisterMiniportDriver 函 式。

與 NDIS 迷你埠驅動程式相關聯的驅動程式物件會指定 Unload 例程。 當已移除迷你埠驅動程序服務的所有裝置時,操作系統會呼叫 Unload 例程。 NDIS 提供 NDIS 驅動程式的 Unload 例程。 NDIS 會從 Unload 例程呼叫迷你埠驅動程式的 MiniportDriverUnload 函式。

Unload 例程的功能是驅動程式特定的。 一般規則是 MiniportDriverUnload 應該復原驅動程式 DriverEntry 例程中執行的作業。

迷你埠驅動程式會呼叫來自 MiniportDriverUnload NdisMDeregisterMiniportDriver 函式。

除了 NdisMDeregisterMiniportDriver 之外,中繼驅動程式也會呼叫 NdisDeregisterProtocolDriver 函 式,以取消註冊驅動程式的通訊協定介面。 MiniportDriverUnload 也應該執行任何必要的清除作業,例如解除分配任何通訊協定驅動程式介面資源。

如果迷你埠驅動程式管理多個裝置實例,例如負載平衡驅動程式,NDIS 將不會呼叫 MiniportDriverUnload ,直到 NDIS 針對每個裝置實例呼叫 MiniportHaltEx 函式一次。

NDIS 會在 IRQL 呼叫 MiniportDriverUnload = PASSIVE_LEVEL。

例子

若要定義 MiniportDriverUnload 函式,您必須先提供可識別您要定義之函式類型的函式宣告。 Windows 提供一組驅動程式的函式類型。 使用函式類型宣告函式有助於 驅動程式的程式代碼分析靜態驅動程式驗證程式 (SDV) ,以及其他驗證工具尋找錯誤,而且是撰寫 Windows 作業系統驅動程式的需求。

例如,若要定義名為 「 MyDriverUnload」 的 MiniportDriverUnload 函式,請使用 MINIPORT_UNLOAD 類型,如下列程式代碼範例所示:

MINIPORT_UNLOAD MyDriverUnload;

然後,實作您的函式,如下所示:

_Use_decl_annotations_
VOID
 MyDriverUnload(
    PDRIVER_OBJECT  DriverObject
    )
  {...}

MINIPORT_UNLOAD函式類型定義於 Ndis.h 頭檔中。 若要在執行程式代碼分析工具時更精確地識別錯誤,請務必將 Use_decl_annotations 批註新增至函式定義。 Use_decl_annotations批註可確保使用頭檔中套用至MINIPORT_UNLOAD函式類型的註釋。 如需函數宣告需求的詳細資訊,請參閱 使用 NDIS 驅動程式的函式角色類型來宣告函式。

如需 Use_decl_annotations的詳細資訊,請參閱 標註函式行為

規格需求

需求
最低支援的用戶端 NDIS 6.0 和更新版本支援。
目標平台 Windows
標頭 ndis.h (包含 Ndis.h)
IRQL PASSIVE_LEVEL

另請參閱

DRIVER_OBJECT

MiniportHaltEx

NdisDeregisterProtocolDriver

NdisMDeregisterMiniportDriver

NdisMRegisterMiniportDriver

卸載