NdisClAddParty 函式 (ndis.h)
NdisClAddParty 會在用戶端的多點 VC 上新增一方。
語法
NDIS_STATUS NdisClAddParty(
[in] NDIS_HANDLE NdisVcHandle,
[in] NDIS_HANDLE ProtocolPartyContext,
[in, out] PCO_CALL_PARAMETERS CallParameters,
[out] PNDIS_HANDLE NdisPartyHandle
);
參數
[in] NdisVcHandle
NdisCoCreateVc 所傳回之 VC 句柄的指標。
[in] ProtocolPartyContext
指定呼叫端配置之駐留內容區域的句柄,如果用戶端的呼叫成功,用戶端將會維護每一方狀態。
[in, out] CallParameters
型 別CO_CALL_PARAMETERS 結構的指標,其中呼叫端已指定要在其多點 VC 上加入之合作對象的尋址資訊。
[out] NdisPartyHandle
如果載入物件作業成功,則為 NDIS 所設定之變數的指標。
傳回值
當 NdisClAddParty 傳回NDIS_STATUS_PENDING以外的任何專案時,客戶端應該對其進行內部呼叫 ProtocolClAddPartyComplete 函式 。 否則,當此作業完成時,NDIS 會呼叫用戶端的 ProtocolClAddPartyComplete 函式。
備註
在呼叫 NdisClAddParty 之前,客戶端必須在其 VC 上使用 NdisClMakeCall 設定多點連線,以及配置和初始化其內容區域,才能新增該合作物件。 用戶端通常會在呼叫 NdisClAddPartyParty 時,將指標傳遞至這類內容區域做為 ProtocolPartyContext,以及該內容區域內變數的指標作為 NdisPartyHandle 參數。
對 NdisClAddParty 的呼叫會導致 NDIS 將此要求轉送至呼叫管理員的 ProtocolCmAddParty 函式,用戶端會與其共用指定的 NdisVcHandle 。 呼叫管理員會立即傳回錯誤狀態,或者,如果嘗試滿足此要求,NDIS_STATUS_PENDING。 如果在遠端端端點或基礎迷你埠驅動程式上拒絕其嘗試,呼叫管理員會在呼叫 NdisCmAddPartyComplete 或 NdisMCmAddPartyComplete 時傳回最終的錯誤狀態,例如NDIS_STATUS_FAILURE。 用戶端的 ProtocolClAddPartyComplete 函式應該先檢查輸入 Status 自變數是否有NDIS_STATUS_SUCCESS,然後再繼續進行。
基礎網路媒體會決定用戶端是否可以在多點 VC 上指定每一方流量參數。
如果基礎網路媒體不支援多點 VM 上的每一方流量參數,每當客戶端嘗試在 CallParameters 新增具有規格且不符合該 VC 已建立流量參數的 CallParameters 時,呼叫管理員都可以執行下列其中一項動作:
- 拒絕新增合作物件的要求。
- 成功在該 VC 上新增合作物件時,將流量參數重設為已為多點 VC 建立的流量參數。
- 成功新增新合作物件時,請變更已在 VC 上之每一方的流量參數。
接著,NDIS 會將用戶端提供的 ProtocolPartyContext 句柄傳遞至與這個新增合作對象相關的用戶端 ProtocolClXxx 函式,包括對的呼叫 ProtocolClAddPartyComplete。
多點呼叫是否允許使用每一方流量參數的雙向和/或每方傳輸,取決於用戶端所系結的基礎迷你埠驅動程序媒體。 NdisPartyHandle 只代表成功呼叫 NdisClAddParty 而不是多點 VC 所新增的特定合作物件。 因此,用戶端只能將其 ProtocolPartyContext 區域用於後續合作物件特定的呼叫管理要求。 對於不支援每一方傳輸或流量參數的網路媒體進行數據傳輸,客戶端必須改用 NdisVcHandle 。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 支援 NDIS 6.0 和 NDIS 5.1 驅動程式 (請參閱 Windows Vista 中的 NdisClAddParty (NDIS 5.1) ) 。 (支援 NDIS 5.1 驅動程式,請參閱 Windows XP 中的 NdisClAddParty (NDIS 5.1) ) 。 |
目標平台 | 桌面 |
標頭 | ndis.h (包含 Ndis.h) |
程式庫 | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI 合規性規則 | Irql_Protocol_Driver_Function () |