NdisMIndicateStatus 函式 (ndis.h)
注意 NDIS 5. x 已被取代,並被 NDIS 6 取代。 x。 如需新的 NDIS 驅動程式開發,請參閱 從 Windows Vista 開始的網路驅動程式。 如需移植 NDIS 5 的相關信息。 x 驅動程式至 NDIS 6。 x,請參閱 將 NDIS 5.x 驅動程式移植到 NDIS 6.0。
NdisMIndicateStatus 表示 NIC 狀態變更為較高層級的 NDIS 驅動程式。
語法
void NdisMIndicateStatus(
[in] NDIS_HANDLE MiniportHandle,
[in] NDIS_STATUS GeneralStatus,
[in] PVOID StatusBuffer,
[in] UINT StatusBufferSize
);
參數
[in] MiniportHandle
指定最初輸入 至 MiniportInitialize 的句柄。
[in] GeneralStatus
指定NDIS_STATUS_ XXX 值,指出 NIC 狀態的一般變更。
[in] StatusBuffer
呼叫端配置的緩衝區指標,其中包含中度特定且相依於 GeneralStatus 值的數據。 指出狀態變更的詳細資訊。
[in] StatusBufferSize
指定 StatusBuffer 上緩衝區的大小,以位元組為單位。
傳回值
無
備註
當迷你埠驅動程式呼叫 NdisMIndicateStatus 時,NDIS 會呼叫每個系結通訊協定的 ProtocolStatus 函式。 這可讓系結的通訊協定驅動程式,或可能是組態管理員記錄基礎 NIC 的狀態變更,或採取更正動作。 例如,通訊協定可能會根據指定的NDIS_STATUS_ XXX 呼叫 NdisReset。
當迷你埠驅動程式呼叫 NdisMIndicateStatus 以報告 NIC 狀態的變更時,NDIS 可以呼叫 MiniportReset 函式來嘗試將 NIC 還原至工作狀況。 在這些情況下,NDIS 只能使用 NDIS_STATUS_RESET_START 和更新版本搭配 NDIS_STATUS_RESET_END 呼叫系結通訊協定,而不是使用迷你埠驅動程式所指示的 GeneralStatus 。
NdisMIndicateStatus 提供兩項資訊:
- 整體狀態值,表示狀態的一般變更。
- 一般變更的特定原因,可以是網路特定。 例如,通道插入失敗特別適用於令牌通道 (802.5) 網路,但與乙太網路 (802.3) NIC 及其驅動程序無關。
迷你埠驅動程式也可以呼叫 NdisMIndicateStatus ,以指出意外移除纜線,然後重新插入或暫時失敗的環形等問題。 例如,假設發生下列兩種情況:
迷你埠驅動程式會使用 NDIS_STATUS_RING_STATUS 呼叫 NdisMIndicateStatus 。
StatusBuffer 包含下列其中一個狀態值:
- NDIS_RING_LOBE_WIRE_FAULT
- NDIS_RING_HARD_ERROR NDIS_RING_SIGNAL_LOSS
當狀態的這類變更收到指示之後,任何相關聯的臨界值或統計數據計數器都會保持不變。
迷你埠驅動程序無法在MiniportISR、MiniportHalt或MiniportShutdown函式的內容中呼叫 NdisMIndicateStatus。 只有還原串行化的迷你埠驅動程式可以在其MiniportInitialize函式的內容中呼叫 NdisMIndicateStatus。
迷你埠驅動程序必須在呼叫 NdisMIndicateStatus 之前釋放它所持有的任何微調鎖定。
NdisMIndicateStatus 的串行化呼叫端必須在 IRQL = DISPATCH_LEVEL執行。 NdisMIndicateStatus 的還原串行化呼叫端必須在 IRQL <= DISPATCH_LEVEL執行。
指出網路連線的遺失和還原
當迷你埠驅動程序發現網路連線已遺失時,應該使用 NDIS_STATUS_MEDIA_DISCONNECT 呼叫 NdisMIndicateStatus 。 還原連線時,迷你埠驅動程序應該使用 NDIS_STATUS_MEDIA_CONNECT 呼叫 NdisMIndicateStatus 。
注意 :產生網路連線指示時,802.11 迷你埠驅動程序必須遵循無線 LAN 的媒體狀態指導方針。 如需這些指導方針的詳細資訊,請參閱 802.11 網路的媒體狀態指示。
802.11 無線 LAN Miniport 驅動程式呼叫 NdisMIndicateStatus
802.11 無線 LAN (WLAN) 迷你埠驅動程式可以針對WLAN 媒體進行各種特定指示。 例如,迷你埠驅動程式可以在發生下列情況時發出WLAN 特定的指示:
- 驅動程式偵測到其目前 BSS 關聯的接收訊號強度已變更。
- 驅動程式會在收到的封包上偵測到 TKIP MIC 失敗。
您可以使用 NdisMIndicateStatus,透過 802.11 迷你埠驅動程序來設定下列 WLAN 特定指示:
如需這些媒體特定指示的詳細資訊,請參閱 802.11 Media-Specific 狀態指示。
WAN Miniport 驅動程序呼叫 NdisMIndicateStatus
大部分的 WAN NIC 驅動程式都會指出某些特殊狀態代碼和緩衝區內容的狀態。 這些狀態指示是由WAN NIC 驅動程式所產生,而系結至這類迷你埠驅動程式的NDIS通訊協定驅動程式可以忽略這些指示。 不過,正確處理這些指示通常會導致改善通訊協定和 WAN NIC 驅動程式的效能。
您可以使用 NdisMIndicateStatus 將下列四種類型的 WAN 特定指示傳送至系結通訊協定驅動程式:
- 向上捲動一行
- 向下捲動一行
- 片段
- TAPI 行事件
NDIS_STATUS_WAN_LINE_UP
每當新的連結變成作用中時,WAN 迷你埠驅動程式就會發出線條指示。 在發生這種情況之前,NIC 會接受畫面,並讓他們成功或失敗,但不太可能由任何遠端節點實際接收它們。 在發生這種情況之前,通訊協定應該減少其定時器,並重試計數,以快速使任何連出連線嘗試失敗。
WAN 迷你埠驅動程式會先向 NdisMIndicateStatus 提出此指示,再從 OID_TAPI_GET_ID 要求傳回。
行指示的狀態代碼NDIS_STATUS_WAN_LINE_UP。 StatusBuffer 上的緩衝區會格式化為NDIS_MAC_LINE_UP結構。
NDIS_STATUS_WAN_LINE_DOWN
WAN 迷你埠驅動程式會在鏈接關閉時發出向下行指示。 發生這種情況時,系結通訊協議應該會減少其定時器,並重試計數,直到下一行指示為止。
向下行指示的狀態代碼NDIS_STATUS_WAN_LINE_DOWN。 StatusBuffer 上的緩衝區會格式化為NDIS_MAC_LINE_DOWN結構。
NDIS_STATUS_WAN_FRAGMENT
每當WAN 迷你埠驅動程序從遠端節點收到部分封包時,就會發出片段指示。 發生這種情況時,系結通訊協議應該將框架傳送至遠端節點,以通知這種情況,而不是等候逾時發生。
片段指示的狀態代碼NDIS_STATUS_WAN_FRAGMENT。 StatusBuffer 上的緩衝區會格式化為NDIS_MAC_FRAGMENT結構。
NDISWAN 會藉由計算每個連結上的片段指示數目來監視捨棄的封包。
NDIS_TAPI_EVENT
WAN 迷你埠驅動程序必須針對 TAPI 狀態指示使用 NDIS_STATUS_TAPI_INDICATION 的 GeneralStatus 值。StatusBuffer 上的緩衝區會格式化為NDIS_TAPI_EVENT結構。
- 目標平臺: 通用
- 版本:Windows Vista 中不支援 NDIS 6.0 驅動程式。 請改用 NdisMIndicateStatusEx。 Windows Vista 和 Windows XP 中支援 NDIS 5.1 驅動程式。
規格需求
需求 | 值 |
---|---|
標頭 | ndis.h (包含 Ndis.h) |
程式庫 | Ndis.lib |