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