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、またはNDIS_STATUS_PENDINGを除く任意の CM によって決定された NDIS_STATUS_ XXX )。
[in] NdisVcHandle
最初に ProtocolCoCreateVc 関数の入力パラメーターとして呼び出しマネージャーが取得した、クライアントによって作成された VC へのハンドルを指定します。 最近では、CM は ProtocolCmMakeCall 関数に渡された CallMgrVcContext によって指定された VC ごとの状態からこのハンドルを取得しました。
[in, optional] NdisPartyHandle
クライアントが作成したマルチポイント VC の初期パーティへのハンドルを指定します。このハンドルは、呼び出しマネージャーが ProtocolCmMakeCall 関数の入力パラメーターとして取得します。 指定された NdisVcHandle がポイントツーポイント VC を表している場合、このパラメーターは NULL です。
[in, optional] CallMgrPartyContext
呼び出し元によって割り当てられた常駐コンテキスト領域に対する CM 提供のハンドルを指定します。この領域では、CM がパーティごとの状態情報を保持します。NdisPartyHandle が NULL の場合は NULL を指定します。 マルチポイント VC の場合、NDIS は、このパーティに関連する ProtocolCmXxx 関数への後続のすべての呼び出しで、この CM 提供の CallManagerPartyContext ハンドルを渡します。 それ以外の場合、NDIS はこのパラメーターを無視します。
[in] CallParameters
Status がNDIS_STATUS_SUCCESSの場合に、この接続に対して設定された呼び出しパラメーターを指定する CO_CALL_PARAMETERS 型の構造体へのポインター。
戻り値
なし
解説
スタンドアロン呼び出しマネージャーは、基になるミニポート ドライバーが VC でデータ転送を行う準備ができている場合にのみ、NDIS_STATUS_SUCCESSで NdisMCmMakeCallComplete を呼び出す必要があります。 つまり、呼び出しマネージャーはネットワークとネゴシエートして VC の呼び出しパラメーターを確立し、 NdisCmActivateVc を正常に呼び出しました。
スタンドアロン呼び出しマネージャーは、その ProtocolCmMakeCall 関数が以前に特定の NdisVcHandle のNDIS_STATUS_PENDINGを返した場合は、NdisCmMakeCallComplete を呼び出す必要があります。 保留中の発信呼び出しを開始したクライアントは、CM が ndisCmMakeCallComplete をNDIS_STATUS_SUCCESSと共に呼び出すまで、VC を使用して転送を行うことはできません。
試行された接続が失敗した場合でも、 NDISCmMakeCallComplete に対する CM の呼び出しによってクライアントの 呼び出しが発生するまで、NDIS もクライアントも状態を維持するために割り当てられたリソースを解放できません ProtocolClMakeCallComplete 関数。 実際、このような接続を設定しようとして失敗した 場合に NdisCmMakeCallComplete を呼び出さなかった場合、呼び出しマネージャーでもメモリ リークが発生します。これにより、失敗した発信呼び出し用に作成した VC がクライアントによって破棄されるのを防ぐため、CM は呼び出されず、その VC に割り当てられたリソースが解放されます。
CM が状態に対して NDIS_STATUS_FAILURE などのエラーを渡した場合、NdisCmMakeCallComplete を呼び出すとすぐに NdisPartyHandle が無効と見なされます。 CM は、 NdisCmMakeCallComplete が制御を返したときに、特定のパーティの状態を維持するために割り当てられたリソースを解放 (または再利用するために再初期化) できます。 CM の ProtocolCoDeleteVc 関数は、その後、CM が NdisCmMakeCallComplete にエラー状態を渡すたびに、クライアントによって作成された VC の状態を追跡するために CM によって割り当てられたリソースを解放するために呼び出されます。
クライアントによって開始される発信呼び出しを設定する過程で、CM は、最初に ProtocolCmMakeCall 関数に渡されたクライアント指定の呼び出しパラメーターを変更できます。 その場合、CM は NdisCmMakeCallComplete を呼び出すときに、CallParameters のバッファーで変更を渡す必要があります。 クライアントがこれらの変更された呼び出しパラメーターを受け入れられないと検出すると、呼び出しが破棄され、CM の ProtocolCoDeleteVc 関数の呼び出しも発生します。
NDIS をプロトコル ドライバーとして登録するスタンドアロン呼び出しマネージャーのみが NdisCmMakeCallComplete を呼び出すことができます。 統合された呼び出し管理サポート呼び出しを提供するミニポート ドライバー 代わりに NdisMCmMakeCallComplete 。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista の NDIS 6.0 および NDIS 5.1 ドライバー (NdisCmMakeCallComplete (NDIS 5.1) を参照) でサポートされています。 Windows XP の NDIS 5.1 ドライバー (「NdisCmMakeCallComplete (NDIS 5.1)」を参照) でサポートされています。 |
対象プラットフォーム | デスクトップ |
Header | ndis.h (Ndis.h を含む) |
Library | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI コンプライアンス規則 | Irql_CallManager_Function(ndis) |