NdisMCmMakeCallComplete 宏 (ndis.h)
NdisMCmMakeCallComplete 會傳回用戶端要求的最終狀態,MCM 驅動程式先前傳回NDIS_STATUS_PENDING,以發出傳出呼叫。
語法
void NdisMCmMakeCallComplete(
_S_,
_VH_,
_PH_,
_CC_,
_CP_
);
參數
_S_
指定嘗試進行連線的最終狀態,NDIS_STATUS_SUCCESS或任何呼叫端決定的NDIS_STATUS_ XXX ,但NDIS_STATUS_PENDING除外。
_VH_
指定用戶端建立的 VC 句柄,MCM 驅動程式會從傳遞給其 ProtocolCmMakeCall 函式的 CallMgrVcContext 取得作為其 ProtocolCoCreateVc 函式的輸入參數。
_PH_
指定用戶端建立之多點 VC 上初始合作物件的句柄,MCM 驅動程式會取得此句柄作為其 ProtocolCmMakeCall 函式的輸入參數。 如果指定的 NdisVcHandle 代表點對點 VC,則此參數為 NULL。
_CC_
指定呼叫端配置的駐留內容區域的句柄,其中 MCM 驅動程式會維護每一方的狀態資訊,如果 NdisPartyHandle 為 NULL,則此參數為 NULL。 對於多點 VC,NDIS 會將此 MCM-driver 提供的 CallManagerPartyContext 句柄傳遞給與此合作對象相關的 ProtocolCmXxx 函式的所有後續呼叫。 如果 Status 是NDIS_STATUS_SUCCESS以外的任何專案,NDIS 會忽略此參數。
_CP_
型別CO_CALL_PARAMETERS結構的指標,指定狀態為NDIS_STATUS_SUCCESS時,為這個連接設定的呼叫參數。
傳回值
無
備註
MCM 驅動程式應該呼叫具有 NDIS_STATUS_SUCCESS 的 NdisMCmMakeCallComplete ,只有當它準備好要在 VC 上進行數據傳輸時。 也就是說,MCM 驅動程式已與網路交涉,以建立 VC 的呼叫參數、為這些呼叫參數設定 NIC,並呼叫 NdisMCmActivateVc 以通知 NDIS VC 啟用。
如果 MCM 驅動程式先前針對指定的 NdisVcHandle 傳回的 ProtocolCmMakeCall 函式NDIS_STATUS_PENDING,則必須呼叫 NdisMCmMakeCallComplete。起始擱置傳出呼叫的用戶端無法使用 VC 進行傳輸,直到迷你埠驅動程式呼叫 NdisMCmMakeCallComplete 與 NDIS_STATUS_SUCCESS 為止。
即使嘗試連線失敗,NDIS 和用戶端都無法釋放它們配置來維護狀態的資源,直到 MCM 驅動程式呼叫 NdisMCmMakeCallComplete 導致呼叫該用戶端 ProtocolClMakeCallComplete 函式 。 事實上,若嘗試設定這類連線失敗,忽略呼叫 NdisMCmMakeCallComplete 也會造成 MCM 驅動程式中的記憶體流失;它可防止用戶端卸除其為失敗的傳出呼叫所建立的 VC,因此不會呼叫 MCM 驅動程式的 ProtocolCoDeleteVc 函式來釋放為該 VC 配置的迷你埠驅動程序資源。
如果 MCM 驅動程式針對 Status 傳遞錯誤,例如 NDIS_STATUS_FAILURE,它就必須考慮 NdisPartyHandle,如果有的話, 當 NdisMCmMakeCallComplete 傳回控件時無效。 CM 可以在 NdisMCmMakeCallComplete 傳回控制權之後,釋出 (或重新初始化,以) 重複使用它配置給指定對象維護狀態的任何資源。 每當 MCM 驅動程式將錯誤狀態傳遞至 NdisMCmMakeCallComplete 時,就會呼叫 MCM 驅動程式的 ProtocolCoDeleteVc 函式來釋放迷你埠驅動程式配置用來追蹤用戶端建立 VC 狀態的任何資源。
在設定用戶端起始的傳出呼叫過程中,MCM 驅動程式可以修改原本傳入其 ProtocolCmMakeCall 函式的用戶端提供呼叫參數。 如果這樣做,MCM 驅動程式必須在呼叫 NdisMCmMakeCallComplete 時,在 CallParameters 的緩衝區中傳遞其修改。 如果客戶端發現這些修改過的呼叫參數無法接受,則會終止呼叫,這也會導致呼叫 MCM 驅動程式的 ProtocolCoDeleteVc 函式。
只有提供整合式呼叫管理支援的連線導向迷你埠驅動程式可以呼叫 NdisMCmMakeCallComplete。 獨立呼叫管理員,向 NDIS 註冊為通訊協定驅動程式,改為呼叫 NdisCmMakeCallComplete 。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | (支援 NDIS 6.0 和 NDIS 5.1 驅動程式,請參閱 Windows Vista 中的 NdisMCmMakeCallComplete (NDIS 5.1) ) 。 (支援 NDIS 5.1 驅動程式,請參閱 Windows XP 中的 NdisMCmMakeCallComplete (NDIS 5.1) ) 。 |
目標平台 | 桌面 |
標頭 | ndis.h (包含 Ndis.h) |
IRQL | <= DISPATCH_LEVEL |
DDI 合規性規則 | Irql_MCM_Function (ndis) |