NdisClRegisterSap 函式 (ndis.h)
NdisClRegisterSap 會註冊 SAP,用戶端可從遠端節點接收來電。
語法
NDIS_STATUS NdisClRegisterSap(
[in] NDIS_HANDLE NdisAfHandle,
[in] NDIS_HANDLE ProtocolSapContext,
[in] PCO_SAP Sap,
[out] PNDIS_HANDLE NdisSapHandle
);
參數
[in] NdisAfHandle
指定 NdisClOpenAddressFamilyEx 所傳回的句柄,此句柄會隱含識別要用來註冊 SAP 的呼叫管理員。
[in] ProtocolSapContext
指定呼叫端提供的駐留內容區域的句柄,用戶端會在開啟此SAP之後維護此 SAP 的狀態。 如果 對 NdisClRegisterSap 的呼叫成功,NDIS 會將此句柄傳回至此 SAP 的所有後續呼叫。
[in] Sap
要開啟之 SAP 的用戶端提供規格指標,格式化為類型 CO_SAP。
[out] NdisSapHandle
如果這個呼叫成功,則會傳回新註冊 SAP 句柄的變數指標。
傳回值
當 NdisClRegisterSap 傳回NDIS_STATUS_PENDING以外的任何專案時,客戶端應該對其進行內部呼叫 ProtocolClRegisterSapComplete 函式 。 否則,NDIS 會在完成此作業時呼叫用戶端的 ProtocolClRegisterSapComplete 函式。
備註
透過呼叫 NdisClRegisterSap,用戶端會在特定 SAP 上要求連入呼叫的通知。 NDIS 會將指定的 SAP 資訊轉送到呼叫管理員的 ProtocolCmRegisterSap 函式以進行驗證。 如果指定的 SAP 已在使用中,或呼叫管理員無法辨識 Sap 上的用戶端提供的規格,則呼叫管理員會失敗此要求。
SAP 格式與媒體相依,且專屬於呼叫管理員所支援的位址系列,其後續會使用已註冊的 SAP,將連入呼叫路由傳送至適當的用戶端。 呼叫管理員可以註冊已建立 PVC 的 SA,而不需連絡其他網路元件,視基礎媒體而定。
如果對 NdisClRegisterSap 的呼叫成功,客戶端必須儲存在 NdisSapHandle 傳回的句柄,因為它是 NdisClDeregisterSap 的必要參數。 NdisClRegisterSap 的呼叫端通常會將指標傳遞至 ProtocolSapContext 上用戶端配置狀態區域中的變數,讓 NDIS 可以在此呼叫成功時將其設定為 NdisSapHandle。 NDIS 會將指定的 ProtocolSapContext 傳遞至用戶端在有關此 SAP 的所有後續呼叫中註冊的 ProtocolCl/CoXxx 函式,直到用戶端呼叫 NdisClDeregisterSap 為止。
用戶端通常會在成功呼叫 NdisClOpenAddressFamilyEx 之後,從其 ProtocolAfRegisterNotify 函式呼叫 NdisClRegisterSap。 註冊一或多個 SAP 可讓用戶端在呼叫管理員透過網路收到來電時立即接收其來電 (s) 。
相較於用戶端起始的傳出呼叫,用戶端在呼叫 NdisClRegisterSap 之前,不會呼叫 NdisCoCreateVc。 對於連入通話,呼叫管理員會起始 VC 的建立,如下所示:
- 在收到已註冊 SAP 的來電時,呼叫管理員會先呼叫 NdisCoCreateVc,導致 NDIS 呼叫用戶端的 ProtocolCoCreateVc 函式。
- 設定並啟用 VC 時,呼叫管理員會呼叫 NdisCmDispatchIncomingCall,導致 NDIS 呼叫用戶端的 ProtocolClIncomingCall 函式 。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 支援 NDIS 6.0 和 NDIS 5.1 驅動程式, (請參閱 Windows Vista 中的 NdisClRegisterSap (NDIS 5.1) ) 。 支援 NDIS 5.1 驅動程式 (請參閱 Windows XP 中的 NdisClRegisterSap (NDIS 5.1) ) 。 |
目標平台 | 桌面 |
標頭 | ndis.h (包括 Ndis.h) |
程式庫 | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI 合規性規則 | Irql_Protocol_Driver_Function (ndis) |