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