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 會維護每一方的狀態資訊,如果 NdisPartyHandleNULL,則為 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 ()

另請參閱

CO_CALL_PARAMETERS

NdisAllocateFromNPagedLo,sideList

NdisClMakeCall

NdisMCmMakeCallComplete

ProtocolClMakeCallComplete

ProtocolCmMakeCall

ProtocolCoDeleteVc