MINIPORT_UNLOAD コールバック関数 (ndis.h)
NDIS は、システムがドライバーのアンロード操作を完了する前に、リソースを解放するドライバーを要求するミニポート ドライバーの ミニポート ドライバーのUnload 関数を呼び出します。
構文
MINIPORT_UNLOAD MiniportUnload;
void MiniportUnload(
[in] PDRIVER_OBJECT DriverObject
)
{...}
パラメーター
[in] DriverObject
ドライバーのドライバー オブジェクトである DRIVER_OBJECT 構造体へのポインター。
戻り値
なし
解説
ドライバーは、 を呼び出すときに 、MiniportDriverUnload エントリ ポイントを指定します。 NdisMRegisterMiniportDriver 関数。
NDIS ミニポート ドライバーに関連付けられているドライバー オブジェクトは、 アンロード ルーチンを指定します。 オペレーティング システムは、ミニポート ドライバー サービスが削除されたすべてのデバイスの アンロード ルーチンを呼び出します。 NDIS は、NDIS ドライバーの アンロード ルーチンを提供します。 NDIS は、アンロード ルーチンからミニポート ドライバーのミニポートDriverUnload 関数を呼び出します。
Unload ルーチンの機能は、ドライバー固有です。 一般的な規則として、 MiniportDriverUnload ドライバーの DriverEntry ルーチンで実行された操作を元に戻す必要があります。
ミニポート ドライバーは、 を呼び出します。MiniportDriverUnload からの NdisMDeregisterMiniportDriver 関数。
中間ドライバーでは、 NdisMDeregisterMiniportDriver に加えて、ドライバーのプロトコル インターフェイスを登録解除する NdisDeregisterProtocolDriver 関数。 また、MiniportDriverUnload は、プロトコル ドライバー インターフェイス リソースの割り当てを解除するなど、必要なクリーンアップ操作も実行する必要があります。
ミニポート ドライバーが負荷分散ドライバーなどの複数のデバイス インスタンスを管理する場合、NDIS は、NDIS が各デバイス インスタンスに対して MiniportHaltEx 関数を 1 回呼び出すまで、MiniportDriverUnload を呼び出しません。
NDIS は 、IRQL = PASSIVE_LEVELで MiniportDriverUnload を呼び出します。
例
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 |