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

Buffer が NULL の場合、Buffer でサイズをバイト単位で指定します

戻り値

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

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

クライアントは、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)」を参照) でサポートされています。
対象プラットフォーム デスクトップ
Header ndis.h (Ndis.h を含む)
Library Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI コンプライアンス規則 Irql_Protocol_Driver_Function(ndis)

こちらもご覧ください

NdisClDropParty

NdisClMakeCall

NdisClModifyCallQoS

NdisCoDeleteVc

NdisCoSendNetBufferLists

ProtocolClCloseCallComplete

ProtocolClIncomingCallQoSChange

ProtocolClIncomingCloseCall

ProtocolClIncomingDropParty

ProtocolClMakeCallComplete

ProtocolClModifyCallQoSComplete

ProtocolCmCloseCall

ProtocolCoSendNetBufferListsComplete