MINIPORT_HALT コールバック関数 (ndis.h)
NDIS ミニポート アダプターが削除されたときにリソースを解放し、ハードウェアを停止するミニポート ドライバーの ミニポートHaltEx 関数を呼び出します。 この関数は、ミニポートを停止状態にし、他のコールバックは発生できません (ミニポートShutdownEx 含む)。 ミニポート ドライバーの状態の詳細については、「ミニポート アダプターの状態と操作 を参照してください。
構文
MINIPORT_HALT MiniportHalt;
void MiniportHalt(
[in] NDIS_HANDLE MiniportAdapterContext,
[in] NDIS_HALT_ACTION HaltAction
)
{...}
パラメーター
[in] MiniportAdapterContext
ミニポート ドライバーがその ミニポートInitializeEx 関数に割り当てられたコンテキスト領域へのハンドル。 ミニポート ドライバーは、ミニポート アダプターの状態情報を維持するには、このコンテキスト領域を使用します。
[in] HaltAction
ミニポート アダプターを停止する理由。 次のいずれかの値を指定できます。
NdisHaltDeviceDisabled
NDIS は、プラグ アンド プレイ (PnP) の削除メッセージに応答してミニポート アダプターを停止しています。
NdisHaltDeviceInstanceDeInitialized
NDIS は、中間ドライバーの呼び出しに応答してミニポート アダプターを停止しています。NdisIMDeInitializeDeviceInstance 関数を します。
NdisHaltDevicePoweredDown
NDIS は、システムがスリープ状態になるため、ミニポート アダプターを停止しています。
NdisHaltDeviceSurpriseRemoved
ミニポート アダプターが突然削除され、ハードウェアが存在しません。
NdisHaltDeviceFailed
ハードウェア障害が原因でミニポート アダプターが削除されています。 ndisMRemoveMiniport 関数 呼び出されたミニポート ドライバーか、バス ドライバーが再開時に NIC の電源をオンにしませんでした。
NdisHaltDeviceInitializationFailed
NDIS が正常に完了した ミニポートInitializeEx 関数が正常に完了した後、不明な理由でミニポート アダプターを初期化できませんでした。
NdisHaltDeviceStopped
NDIS は、PnP 停止デバイス メッセージに応答してミニポート アダプターを停止しています。
戻り値
何一つ
備考
ドライバーは、ミニポートHaltEx エントリ ポイントを呼び出すときに指定します。NdisMRegisterMiniportDriver 関数を します。
NDIS は、ドライバーの ミニポートInitializeEx 関数が正常に返された後、いつでも ミニポートHaltEx を呼び出すことができます。 ドライバーが物理 NIC を制御する場合は、ミニポートHaltEx NIC を停止する必要があります。 NDIS 中間ドライバーを呼び出す場合は、NdisIMDeInitializeDeviceInstance 関数、NDIS はドライバーの仮想デバイスの ミニポートHaltEx 関数を呼び出します。
ミニポートHaltEx は、デバイスのミニポートInitializeEx 割り当てられたすべてのリソースを解放する必要があります。 ミニポートHaltEx は、そのデバイスの後続の操作でドライバーが割り当てたその他のリソースも解放します。 ドライバーは、最初にリソースを割り当てた NdisXxx 関数の逆数を呼び出す必要があります。 一般的な規則として、ミニポートHaltEx 関数は、ミニポートInitializeEx から行われたドライバーの呼び出しに逆順に逆の逆 NdisXxx 関数呼び出す必要があります。
NIC が割り込みを生成する場合、ミニポート ドライバーの ミニポートHaltEx 関数は、ドライバーの ミニポートInterrupt 関数によって取り込まれる可能性 ミニポートHaltEx 呼び出しまでNdisMDeregisterInterruptEx 関数が返。 このようなドライバーの ミニポートHaltEx 関数は割り込みを無効にし、呼び出す必要がありますNdisMDeregisterInterruptEx できるだけ早く。 ドライバーは、次の時間まで割り込みを受け続けることができることに注意してください。NdisMDeregisterInterruptEx 戻。 NdisMDeregisterInterruptEx は、ドライバーがスケジュールされたすべての DPC を終了するまで戻りません (詳細については、ミニポートInterruptDPC 関数を参照してください)。
システム タイマー キュー内にある可能性があるタイマー オブジェクトに関連付けられている NetTimerCallback 関数がドライバーにある場合は、ミニポートHaltEx は、NdisCancelTimerObject 関数を呼び出す必要があります。 NdisCancelTimerObject 失敗した場合、タイマーは既に発生している可能性があります。 この場合、ドライバーは、ミニポートHaltEx からドライバーが戻る前に、タイマー関数が完了待機する必要があります。
未処理の OID 要求がある場合、または要求を送信 場合、NDIS はミニポートHaltEx を呼び出しません。 NDIS は、ミニポートHaltEx を呼び出した後、影響を受けるデバイスそれ以上の要求を送信しません。
ドライバーが任意の操作が完了するまで待機する必要がある場合は、ミニポートHaltEx は、NdisWaitEvent 関数または NdisMSleep 関数を使用できます。
NDIS は IRQL = PASSIVE_LEVEL でミニポートHaltEx 呼び出します。
の例
ミニポートHaltEx 関数を定義するには、まず、定義する関数の型を識別する関数宣言を指定する必要があります。 Windows には、ドライバーの関数の種類のセットが用意されています。 関数の種類を使用して関数を宣言すると、ドライバー のコード分析、静的ドライバー検証ツール (SDV)、およびその他の検証ツールをすると、エラーが検出され、Windows オペレーティング システムのドライバーを記述するための要件になります。たとえば、"MyHaltEx" という名前の ミニポートHaltEx 関数を定義するには、次のコード例に示すように MINIPORT_HALT 型を使用します。
MINIPORT_HALT MyHaltEx;
次に、次のように関数を実装します。
_Use_decl_annotations_
VOID
MyHaltEx(
NDIS_HANDLE MiniportAdapterContext,
NDIS_HALT_ACTION HaltAction
)
{...}
MINIPORT_HALT 関数の種類は、Ndis.h ヘッダー ファイルで定義されています。 コード分析ツールの実行時にエラーをより正確に識別するには、Use_decl_annotations 注釈を関数定義に追加してください。 Use_decl_annotations 注釈により、ヘッダー ファイル内の MINIPORT_HALT 関数型に適用される注釈が確実に使用されます。 関数宣言の要件の詳細については、「ndis ドライバーの の関数の役割の種類を使用して関数を宣言するを参照してください。
Use_decl_annotationsの詳細については、「関数の動作に注釈を付ける」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | NDIS 6.0 以降でサポートされています。 |
ターゲット プラットフォーム の | ウィンドウズ |
ヘッダー | ndis.h (Ndis.h を含む) |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 を する | WlanAssociation、WlanConnectionRoaming、WlanDisassociation、WlanTimedAssociation、WlanTimedConnectionRoaming、WlanTimedConnectRequest、WlanTimedLinkQuality、WlanTimedScan |
関連項目
ミニポート ドライバー のアダプターの状態を
ミニポート アダプターの を停止する
ミニポート アダプターの状態と操作 の
ミニポートReturnNetBufferListsNdisCancelTimerObject の
NdisIMDeInitializeDeviceInstance のNdisMDeregisterInterruptEx の
NdisMRegisterMiniportDriver の
NdisMRemoveMiniport の
NdisMSleep の
NdisWaitEvent の
NetTimerCallback の