共用方式為


PROTOCOL_CL_INCOMING_CLOSE_CALL回呼函式 (ndis.h)

所有連線導向的 NDIS 用戶端都會使用 ProtocolClIncomingCloseCall 函式。 所有這類客戶端都必須具備完整運作 ProtocolClIncomingCloseCall 函式。

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

語法

PROTOCOL_CL_INCOMING_CLOSE_CALL ProtocolClIncomingCloseCall;

void ProtocolClIncomingCloseCall(
  [in] NDIS_STATUS CloseStatus,
  [in] NDIS_HANDLE ProtocolVcContext,
  [in] PVOID CloseData,
  [in] UINT Size
)
{...}

參數

[in] CloseStatus

指定狀態,指出連線中斷的原因,這通常是NDIS_STATUS_SUCCESS表示呼叫的遠端合作物件要求關閉連線。 任何其他值表示網路上的問題導致呼叫管理員終止連線。

[in] ProtocolVcContext

針對正在關閉連線的 VC,指定用戶端每個 VC 內容區域的句柄。 無論 CloseStatus的值為何,用戶端都無法傳送或接收 NdisVcHandle 所指定之 VC 上的數據, 儲存在此內容區域中。

[in] CloseData

包含通訊協定特定關閉訊息的緩衝區指標,可能是由透過網路接收呼叫管理員的遠端用戶端所提供,或者此參數可以 NULL

CloseStatus NDIS_STATUS_SUCCESS 時,如果基礎網路媒體不支援在關閉連線時傳輸數據,此參數會 NULL。 不過,任何特定的呼叫管理員可能會定義結構,以在網路上發生問題所造成的呼叫終止時,將其他診斷資訊傳遞給其用戶端。

[in] Size

指定 CloseData的緩衝區大小,如果 CloseData為 null,則為零。

傳回值

沒有

言論

呼叫 ProtocolClIncomingCloseCall 表示已發生下列其中一項:

  • 呼叫管理員已透過網路收到關閉已建立連線的要求,NdisVcHandle 用戶端儲存在其每個 VC 內容區域中 ProtocolVcContext
  • 呼叫管理員偵測到網路問題會防止在已建立的連線上進行進一步的數據傳輸。
不論是哪一種情況,ProtocolClIncomingCloseCall 都應該執行任何通訊協定決定的作業,例如通知用戶端自己的用戶端連線已中斷。 例如,如果關閉的呼叫是由用戶端所建立的多點 VC,ProtocolClIncomingCloseCall 必須呼叫 NdisClDropParty 一或多次,直到只有單一合作對象維持在其多點 VC 上為止。

無論指定的 VC 是單一點或多點連線,ProtocolClIncomingCloseCall 都必須呼叫 NdisCloseCall,以確認用戶端不會嘗試傳送或預期接收此特定 VC 上的資料。 如果呼叫管理員建立此 VC,ProtocolClIncomingCloseCall 在呼叫 NdisCloseCall 之後,應該傳回控制權。 呼叫管理員負責終結或重複使用它所建立的任何 VC。

如果用戶端最初針對傳出呼叫建立此 VC,ProtocolClIncomingCloseCall 在呼叫 NdisClDropParty 之後,可以執行下列其中一項動作,如有的話,NdisCloseCall

  • 如果 CloseStatus NDIS_STATUS_SUCCESS,請卸除具有 NdisCoDeleteVc 的 VC,然後釋放用戶端的每個 VC 內容區域,或準備在後續 呼叫 NdisCoCreateVc中重複使用。
  • 如果 CloseStatus NDIS_STATUS_SUCCESS,請保留用戶端建立的 VC,並準備其每個 VC 內容區域,以便在後續呼叫 NdisClMakeCall中重複使用。
  • 否則,如果呼叫管理員指出網路已無法運作,請卸除 NdisCoDeleteVc NdisCoDeleteVc,並釋放其每個 VC 內容區域。

範例

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

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

PROTOCOL_CL_INCOMING_CLOSE_CALL MyClIncomingCloseCall;

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

_Use_decl_annotations_
VOID
 MyClIncomingCloseCall(
    NDIS_STATUS  CloseStatus,
    NDIS_HANDLE  ProtocolVcContext,
    PVOID  CloseData,
    UINT  Size
    )
  {...}

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

如需 Use_decl_annotations的相關信息,請參閱 批注函式行為

要求

要求 價值
最低支援的用戶端 支援 Windows Vista 中的 NDIS 6.0 和 NDIS 5.1 驅動程式(請參閱 ProtocolClIncomingCloseCall (NDIS 5.1)。 支援 NDIS 5.1 驅動程式 (請參閱 Windows XP 中的 ProtocolClIncomingCloseCall (NDIS 5.1)。
目標平臺 窗戶
標頭 ndis.h (包括 Ndis.h)
IRQL <= DISPATCH_LEVEL

另請參閱

NdisCloseCall

NdisClDropParty

NdisClMakeCall

NdisCmDispatchIncomingCloseCall

NdisCoCreateVc

NdisCoDeleteVc

NdisFreeMemory

NdisFreeToNPagedLookasideList NdisMCmDispatchIncomingCloseCall

ProtocolClDropPartyComplete

ProtocolCoDeleteVc