次の方法で共有


着信呼び出しの表示

呼び出しマネージャー または MCM ドライバーは、ネットワークからのシグナリング メッセージで着信呼び出しに関するアラートを受け取ります。 これらのシグナル通知メッセージから、通話マネージャーまたは MCM ドライバーは、着信呼び出しの宛先となる SAP を含む、呼び出しの呼び出しパラメーターを抽出します。

次の図は、着信呼び出しを示す MCM ドライバーを示しています。

Diagram showing an MCM driver indicating an incoming call.

次の図は、着信呼び出しを示す通話マネージャーを示しています。

Diagram illustrating a call manager indicating an incoming call.

着信呼び出しパラメーターが呼び出しマネージャーまたは MCM ドライバーに受け入れられない場合は、そのようなネゴシエーションがシグナリング プロトコルによって許可されている場合、リモート パーティとこれらのパラメーターの変更のネゴシエートを試みることができます。 または、着信呼び出しの転送先のクライアントは、呼び出しマネージャーまたは MCM ドライバーから呼び出しの指示を受信した後、呼び出しパラメーターのネゴシエートを試みることができます (呼び出しパラメーターを変更するためのクライアント開始要求を参照)。 呼び出しマネージャーまたは MCM ドライバーは、リモート パーティとの呼び出しの許容可能な呼び出しパラメーターをネゴシエートできない場合は、呼び出しを拒否する可能性があります。 シグナルプロトコルは、そのような場合に何が可能かを決定します。

クライアントへの着信呼び出しを示す前に、呼び出しマネージャーまたは MCM ドライバーは、呼び出しの転送先の SAP を識別する必要があります。 SAP は、クライアントによって以前に 登録されている 必要があります。 呼び出しマネージャーまたは MCM ドライバーも VC の作成 を開始し、この VC のアクティブ化を開始する必要があります。

呼び出しマネージャーまたは MCM ドライバーは、着信呼び出しが送信される SAP を登録したクライアントへの着信呼び出しを示します。 呼び出しマネージャーは、 NdisCmDispatchIncomingCallを使用 した着信呼び出しを示します。 MCM ドライバーは、 NdisMCmDispatchIncomingCallを使用 した着信呼び出しを示します。

Ndis(M)CmDispatchIncomingCall の呼び出しでは、呼び出しマネージャーまたは MCM ドライバーは次を渡します。

  • 着信呼び出しの宛先となる SAP を識別する NdisSapHandle

  • 着信呼び出しの仮想回線を識別する NdisVcHandle

  • 呼び出しの呼び出しパラメーターを含む CO_CALL_PARAMETERS型の構造体へのポインター。

Ndis(M)CmDispatchIncomingCall を呼び出すと、NDIS はクライアントの ProtocolClIncomingCall 関数を呼び出し、クライアントが要求された接続を受け入れるか拒否します。 ProtocolClIncomingCall は、SAP、VC、および呼び出しパラメーターを検証する必要があります。

ProtocolClIncomingCall は、同期的に完了することも、 NdisClIncomingCallComplete を使用してNDIS_STATUS_PENDINGを返して非同期的に完了することもできます。 NdisClIncomingCallComplete を呼び出すと、NDIS が呼び出しマネージャーまたは MCM ドライバーの ProtocolCmIncomingCallComplete 関数を呼び出します。

ProtocolClIncomingCall の同期完了によって返されるか、 NdisClIncomingCallComplete に提供されるNDIS_STATUS コードは、クライアントによる着信呼び出しの受け入れまたは拒否を示します。 クライアントは、バッファー内のCO_CALL_PARAMETERS構造体内の呼び出しの呼び出しパラメーターも返します。 クライアントが許容できない呼び出しパラメーターを検出した場合は、シグナリング プロトコルで許可されている場合は、CALL_PARAMETERS_CHANGEDを使用してCO_CALL_PARAMETERS構造体の Flags メンバーを設定し、バッファー内のCO_CALL_PARAMETERS構造体に変更された呼び出しパラメーターを指定することで、呼び出しパラメーターの変更を要求できます。

クライアントが着信呼び出しを受け入れる場合、呼び出しマネージャーまたは MCM ドライバーは、呼び出しが受け入れられたことを呼び出し元のエンティティに示す通知メッセージを送信する必要があります。 それ以外の場合、呼び出しマネージャーまたは MCM ドライバーは、呼び出しが拒否されたことを示す通知メッセージを送信する必要があります。 クライアントが呼び出しパラメーターの変更を要求している場合、呼び出しマネージャーまたは MCM ドライバーは、呼び出しパラメーターの変更を要求する通知メッセージを送信します。

クライアントが呼び出しを受け入れた場合、またはクライアントの要求された呼び出しパラメーターの変更がリモート パーティによって受け入れられた場合、呼び出しマネージャーは NdisCmDispatchCallConnected を呼び出し、MCM ドライバーは NdisMCmDispatchCallConnected を呼び出します。 Ndis(M)CmDispatchCallConnected を呼び出すと、NDIS はクライアントの ProtocolClCallConnected 関数を呼び出します。

クライアントが呼び出しを拒否し、呼び出しマネージャーまたは MCM ドライバーが着信呼び出しの VC を既にアクティブ化している場合、呼び出しマネージャーまたは MCM ドライバーは Ndis(M)CmDeactivateVc を呼び出して、VC がアクティブ化されている場合に VC を非アクティブ化します。 呼び出しマネージャーまたは MCM ドライバーは、呼び出しマネージャーまたは MCM ドライバーの場合は NdisMCmDeleteVc の場合に NdisCoDeleteVc を呼び出すことによって VC の削除 を開始できます。

クライアントが呼び出しを受け入れたが、エンド ツー エンド接続が正常に確立されなかった場合 (たとえば、リモート パーティが通話を停止したため)、通話マネージャーまたは MCM ドライバーは Ndis(M)CmDispatchCallConnected を呼び出しません。 代わりに、 Ndis(M)CmDispatchIncomingCloseCall を呼び出します。これにより、NDIS はクライアントの ProtocolClIncomingCloseCall 関数を呼び出します。 その後、クライアントは NdisClCloseCall を呼び出して、呼び出しの破棄を完了する必要があります。 呼び出しマネージャーまたは MCM ドライバーは、 Ndis(M)CmDeactivateVC を呼び出して、着信呼び出し用に作成した VCを非アクティブ化 します。 呼び出しマネージャーまたは MCM ドライバーは、呼び出しマネージャーまたは MCM ドライバーの場合は NdisMCmDeleteVc の場合に NdisCoDeleteVc を呼び出すことによって VC の削除 を開始できます。