NdisCloseCall 函式 (ndis.h)
NdisCloseCall 要求關閉指定 VC 的呼叫。
語法
NDIS_STATUS NdisClCloseCall(
[in] NDIS_HANDLE NdisVcHandle,
[in, optional] NDIS_HANDLE NdisPartyHandle,
[in, optional] PVOID Buffer,
[in] UINT Size
);
參數
[in] NdisVcHandle
正在關閉或中斷連線之呼叫的 VC 句柄。 當 VC 最初以 NdisCoCreateVc建立 NDIsCoCreateVc 時,由 NDIS 提供此句柄,無論是由客戶端準備進行傳出電話,還是由呼叫管理員準備將來電分派給用戶端。
[in, optional] NdisPartyHandle
在多點 VC 上卸除的最後一方句柄,或 NULL。 如果這是多點 VC,用戶端會從先前呼叫 NdisClMakeCall 或 NdisClAddParty取得此句柄。
[in, optional] Buffer
呼叫端配置的緩衝區指標,其中包含在連線關閉時要傳送至遠端節點上之合作物件的任何數據。 視基礎媒體而定,此指標可以 NULL。
[in] Size
如果 BufferNULL,則指定 Buffer的大小,以位元組為單位。
傳回值
NdisCloseCall 傳回NDIS_STATUS_PENDING以外的任何專案時,客戶端應該對其進行內部呼叫 ProtocolCloseCallComplete 函式。 否則,NDIS 會在完成此作業時呼叫用戶端的 ProtocolCloseCallComplete 函式。
言論
用戶端通常會在下列任一情況下呼叫 NdisCloseCall:
- 若要關閉已建立的呼叫,用戶端是否已使用 NdisClMakeCall 起始呼叫 或由遠端對等提供,並由用戶端接受 ProtocolClIncomingCall 函式。
-
從
ProtocolClIncomingCloseCall 函式,以終止已建立的呼叫。
當遠端合作物件關閉遠端合作物件最初起始且用戶端接受的連入呼叫時,就會發生這種情況。 針對用戶端起始的傳出呼叫,當遠端合作物件關閉遠端節點上的點對點連線,或當多點 VC 上的最後一個剩餘合作物件關閉遠端節點上的呼叫時,就會發生這種情況。
-
從
ProtocolClMakeCallComplete 函式,以終止用戶端起始的呼叫來電。
如果呼叫管理員已修改傳遞至 NdisClMakeCall 且客戶端發現這些修改無法接受的用戶端指定呼叫參數,就會發生這種情況。
-
從 ProtocolClIncomingQoSChange 函式卸除已建立的呼叫。
如果 VC 上另一方提議的 QoS 變更無法接受用戶端,就會發生這種情況。
-
從
ProtocolClModifyCallQoSComplete 函式,以終止已建立的呼叫。
如果不接受 VC 上的客戶端建議 QoS 變更,且 CM 修改的 QoS 傳回至 ProtocolClModifyCallQoSComplete 對用戶端是不可接受的,就會發生這種情況。
用戶端呼叫 NdisCloseCall 會導致 NDIS 將 NdisVcHandle 標示為關閉,並呼叫 CM 的 ProtocolCmCloseCall 函式。
若要在用戶端建立的多點 VC 上卸除已建立的呼叫,客戶端必須呼叫 NdisClDropParty 一或多次,以釋放 VC 上除最後一方之後,再呼叫 NdisCloseCall。 如果指定的 VC 仍有一個以上的合作對象已連線,則呼叫管理員會讓任何用戶端的要求都失敗,以關閉多點呼叫。 傳遞至 NdisCloseCall 的 NdisPartyHandle 可以是用戶端從先前呼叫 NdisClAddParty 或 NdisClMakeCall,以及指定的 NdisVcHandle 取得的任何有效句柄。
當用戶端起始的多點呼叫要求遠端合作物件要求其連線關閉時,只要用戶端建立的多點 VC 上有一個以上的未完成合作物件,NDIS 就會呼叫用戶端 ProtocolClDropParty 函式。 當最後一個剩餘的遠端合作物件關閉其連線時,NDIS 會呼叫用戶端的 ProtocolClIncomingCloseCall 函式。 因此,設定多點連線的任何用戶端 ProtocolClIncomingCloseCall 函式必須識別其多點 VM 上的最後一個剩餘方,並將適當的 NdisPartyHandle 傳遞至 NdisCloseCall。
用戶端發行 NdisPartyHandleNdisCloseCall之後,它可以釋放或重新初始化以重複使用其所維護之每一方狀態的資源。 不過,客戶端無法在完成以 NdisCloseCall 起始的作業時,以類似的方式釋放或重複使用其每個 VC 資源,因為 NdisVcHandle,因此無法重複使用該呼叫,因為它標示為關閉,在 VC 終結之前仍然有效。 客戶端必須在發行或重新初始化每個 VC 資源之前,先呼叫 NdisCoDeleteVc,否則客戶端必須在呼叫其 ProtocolCoDeleteVc 函式之前,延遲發行或重新初始化這些資源。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows Vista 中支援 NDIS 6.0 和 NDIS 5.1 驅動程式(請參閱 NdisCloseCall (NDIS 5.1)。 支援 NDIS 5.1 驅動程式(請參閱 Windows XP 中的 NdisCloseCall (NDIS 5.1)。 |
目標平臺 | 桌面 |
標頭 | ndis.h (包括 Ndis.h) |
連結庫 | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI 合規性規則 | Irql_Protocol_Driver_Function(ndis) |