次の方法で共有


NdisClCloseCall 関数 (ndis.h)

NdisClCloseCall、指定された VC の呼び出しを取り壊すよう要求します。

構文

NDIS_STATUS NdisClCloseCall(
  [in]           NDIS_HANDLE NdisVcHandle,
  [in, optional] NDIS_HANDLE NdisPartyHandle,
  [in, optional] PVOID       Buffer,
  [in]           UINT        Size
);

パラメーター

[in] NdisVcHandle

閉じている、または切断されている呼び出しの VC へのハンドル。 このハンドルは、VC が最初に NdisCoCreateVcで作成されたときに NDIS によって提供されました。これは、クライアントが発信呼び出しを行う準備をしているか、クライアントへの着信呼び出しをディスパッチするための準備として呼び出しマネージャーによって行われたかどうかです。

[in, optional] NdisPartyHandle

マルチポイント VC または NULLで削除される最後のパーティへのハンドル。 これがマルチポイント VC の場合、クライアントは、NdisClMakeCall する前の呼び出しからこのハンドルを取得するか、NdisClAddParty します。

[in, optional] Buffer

接続が閉じられたときにリモート ノード上のパーティに送信されるデータを含む呼び出し元によって割り当てられたバッファーへのポインター。 基になるメディアに応じて、このポインターは NULL できます。

[in] Size

バッファー が NULL 場合、バッファーのサイズをバイト単位で指定

戻り値

NdisClCloseCall がNDIS_STATUS_PENDING以外のものを返す場合、クライアントは、その呼び出しに対して内部呼び出しを行う必要があります。ProtocolClCloseCallComplete 関数を します。 それ以外の場合、NDIS は、この操作が完了したときにクライアントの ProtocolClCloseCallComplete 関数を呼び出します。

備考

クライアントは、通常、次のいずれかの状況で NdisClCloseCall を呼び出します。

  • 確立された呼び出しを閉じるには、呼び出し NdisClMakeCall を使用してクライアントによって開始されたか、リモート ピアによって提供され、クライアントのProtocolClIncomingCall 関数を します。
  • 次の場所からProtocolClIncomingCloseCall 関数を して、確立された呼び出しを破棄します。

    これは、リモート パーティが最初に開始し、クライアントが受け入れた着信呼び出しをリモート パーティが閉じたときに発生します。 クライアントが開始する発信呼び出しの場合、これは、リモート パーティがリモート ノードのポイントツーポイント接続を閉じた場合、またはマルチポイント VC の最後の残りのパーティーがリモート ノードの呼び出しを閉じたときに発生します。

  • 次の場所からProtocolClMakeCallComplete 関数を して、クライアントが開始した発信呼び出しの試行を破棄します。

    これは、呼び出しマネージャーが NdisClMakeCall に渡されたクライアント指定の呼び出しパラメーター 変更し、クライアントがこれらの変更を受け入れられないと検出した場合に発生します。

  • ProtocolClIncomingQoSChange 関数から確立された呼び出しを破棄します。

    これは、VC の相手が提案した QoS 変更がクライアントに許容できない場合に発生します。

  • 次の場所からProtocolClModifyCallQoSComplete 関数を使用して、確立された呼び出しを破棄します。

    これは、VC でクライアントが提案した QoS の変更が受け入れられず、ProtocolClModifyCallQoSComplete に返された CM 変更 QoS がクライアントに受け入れられない場合に発生します。

NdisClCloseCall 呼び出す前に、プロトコルは、その未処理の送信パケットがすべてそのパケットに返されていることを確認する必要があります。ProtocolCoSendNetBufferListsComplete 関数を します。 (NdisCoSendNetBufferLists 経由で送信されたパケットは、常に ProtocolCoSendNetBufferListsCompleteに非同期的に返されます)。NdisClCloseCall 呼び出した後、プロトコルは NdisCoSendNetBufferLists を呼び出して、ndisClCloseCallによって参照される VC でパケット送信してはなりません。

クライアントが NdisClCloseCall 呼び出すと、NDIS は NdisVcHandle を終了としてマークし、CM の ProtocolCmCloseCall 関数を呼び出します。

クライアントが作成したマルチポイント VC で確立された呼び出しを破棄するには、クライアントが NdisClCloseCall 呼び出す前に、VC の最後のパーティー以外のすべてを解放する 1 回以上 NdisClDropParty呼び出す必要があります。 指定された VC に複数のパーティがまだ接続されている場合、呼び出しマネージャーはマルチポイント呼び出しを閉じるクライアントの要求を失敗させます。 NdisClCloseCall に渡される NdisPartyHandle は、指定された NdisVcHandle で NdisClAddParty または ndisClMakeCall する前の呼び出しからクライアントが取得した任意の有効なハンドルを指定できます。

クライアントが開始するマルチポイント呼び出しのリモート パーティが接続を閉じる要求として、NDIS は、クライアントが作成したマルチポイント VC に複数の未処理のパーティが存在する限り、そのクライアントの ProtocolClDropParty 関数を呼び出します。 最後に残ったリモート パーティが接続を閉じると、NDIS はクライアントの代わりに ProtocolClIncomingCloseCall 関数を します。 したがって、マルチポイント接続を設定するクライアントの ProtocolClIncomingCloseCall 関数は、そのマルチポイント VC 上の最後の残りのパーティを識別し、適切な NdisPartyHandle を渡して NdisClCloseCall する必要があります。

クライアントは、NdisClCloseCallを使用して NdisPartyHandle を解放した後、保持していたパーティごとの状態のリソースを解放 (または再利用のために再初期化) できます。 ただし、クライアントは、NdisClCloseCall で開始した操作の完了時に同様の方法で VC 単位のリソースを解放または再利用することはできません。これは、NdisVcHandleは、終了としてマークされているため、別の呼び出しを行うために再利用できないため、VC が破棄されるまで有効です。 クライアントは、VC 単位のリソースを解放または再初期化する前に発信呼び出し用に VC を作成した場合、NdisCoDeleteVc 呼び出す必要があります。または、クライアントは、ProtocolCoDeleteVc 関数が呼び出されるまで、これらのリソースのリリースまたは再初期化を延期する必要があります。

必要条件

要件 価値
サポートされる最小クライアント Windows Vista の NDIS 6.0 および NDIS 5.1 ドライバー (NdisClCloseCall (NDIS 5.1) を参照) でサポートされています。 Windows XP で NDIS 5.1 ドライバー (NdisClCloseCall (NDIS 5.1) を参照) でサポートされています。
ターゲット プラットフォーム デスクトップ
ヘッダー ndis.h (Ndis.h を含む)
ライブラリ Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI コンプライアンス規則 する Irql_Protocol_Driver_Function(ndis)

関連項目

NdisClDropParty

NdisClMakeCall

NdisClModifyCallQoS

NdisCoDeleteVc

NdisCoSendNetBufferLists

ProtocolClCloseCallComplete

ProtocolClIncomingCallQoSChange

ProtocolClIncomingCloseCall

ProtocolClIncomingDropParty

ProtocolClMakeCallComplete

ProtocolClModifyCallQoSComplete

ProtocolCmCloseCall

ProtocolCoSendNetBufferListsComplete