次の方法で共有


PROTOCOL_CL_INCOMING_CLOSE_CALL コールバック関数 (ndis.h)

ProtocolClIncomingCloseCall 関数は、すべての接続指向 NDIS クライアントで使用されます。 このようなすべてのクライアントは、ProtocolClIncomingCloseCall 関数 完全に機能している必要があります。

PROTOCOL_CL_INCOMING_CLOSE_CALL 型を使用して関数を宣言する必要があります。 詳細については、次の例のセクションを参照してください。
 

構文

PROTOCOL_CL_INCOMING_CLOSE_CALL ProtocolClIncomingCloseCall;

void ProtocolClIncomingCloseCall(
  [in] NDIS_STATUS CloseStatus,
  [in] NDIS_HANDLE ProtocolVcContext,
  [in] PVOID CloseData,
  [in] UINT Size
)
{...}

パラメーター

[in] CloseStatus

接続の破棄の原因を示す状態を指定します。これは通常、リモート パーティが呼び出しに接続を閉じるよう要求したことを示すためにNDIS_STATUS_SUCCESSされます。 その他の値は、ネットワーク上の問題が原因で呼び出しマネージャーが接続を終了したことを示します。

[in] ProtocolVcContext

接続が閉じられている VC のクライアントの VC ごとのコンテキスト領域へのハンドルを指定します。 CloseStatus 値に関係なく、クライアントは、このコンテキスト領域に格納されている NdisVcHandle によって指定された VC でデータを送受信することはできません。

[in] CloseData

プロトコル固有のクローズ メッセージを含むバッファーへのポインター。場合によっては、呼び出しマネージャーがネットワーク経由で受信したリモート クライアントによって提供されるメッセージ、またはこのパラメーターを NULL できます。

CloseStatus がNDIS_STATUS_SUCCESSされている場合、基になるネットワーク メディアが接続を閉じるときにデータ転送をサポートしていない場合、このパラメーターは NULL 。 ただし、特定の呼び出しマネージャーは、ネットワーク上の問題によって引き起こされる呼び出しの破棄時に、追加の診断情報をクライアントに渡す構造を定義できます。

[in] Size

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

戻り値

何一つ

備考

ProtocolClIncomingCloseCall 呼び出しは、次のいずれかが発生したことを示します。

  • 呼び出しマネージャーは、確立された接続を閉じる要求をネットワーク経由で受信しました。これは、クライアントが ProtocolVcContext の VC 単位のコンテキスト領域に格納 NdisVcHandle によって識別
  • 呼び出しマネージャーは、ネットワークの問題により、確立された接続でのそれ以上のデータ転送を妨げる可能性があることを検出しました。
どちらの場合も、ProtocolClIncomingCloseCall は、接続が切断されていることをクライアント自身のクライアントに通知するなど、プロトコルによって決定された操作を実行する必要があります。 たとえば、閉じる呼び出しがクライアントによって作成されたマルチポイント VC である場合、ProtocolClIncomingCloseCall は、1 つのパーティーのみがマルチポイント VC に残るまで、1 回以上 NdisClDropParty を 1 回以上呼び出す必要があります。

指定された VC が単一ポイント接続であるかマルチポイント接続であるかに関係なく、ProtocolClIncomingCloseCall は NdisClCloseCall 呼び出して、クライアントがこの特定の VC 上のデータの送信を試みも期待もしないかどうかを確認する必要があります。 呼び出しマネージャーがこの VC を作成した場合、ProtocolClIncomingCloseCall は、NdisClCloseCall 呼び出した後に制御を返す必要があります。 作成した VC を破棄または再利用するのは、呼び出しマネージャーの責任です。

クライアントが最初に発信呼び出し用にこの VC を作成した場合、ProtocolClIncomingCloseCall は、必要な回数 NdisClDropParty を呼び出し、NdisClCloseCall した後で、次のいずれかを実行できます。

  • CloseStatus がNDIS_STATUS_SUCCESSされている場合は、ndisCoDeleteVc して VC を破棄し、クライアントの VC ごとのコンテキスト領域を解放するか、NdisCoCreateVc する後続の呼び出しで再利用できるように準備します。
  • CloseStatus がNDIS_STATUS_SUCCESSされている場合は、クライアントが作成した VC を保持し、その VC 単位のコンテキスト領域を、NdisClMakeCall 後続の呼び出しで再利用できるように準備します。
  • それ以外の場合は、NdisCoDeleteVc VC を破棄し、呼び出しマネージャーがネットワークが動作しなくなったことを示した場合は、VC ごとのコンテキスト領域を解放します。

の例

ProtocolClIncomingCloseCall 関数を定義するには、まず、定義する関数の型を識別する関数宣言を指定する必要があります。 Windows には、ドライバーの関数の種類のセットが用意されています。 関数の種類を使用して関数を宣言すると、ドライバー のコード分析、静的ドライバー検証ツール (SDV)、およびその他の検証ツールをすると、エラーが検出され、Windows オペレーティング システムのドライバーを記述するための要件になります。

たとえば、"MyClIncomingCloseCall" という名前の ProtocolClIncomingCloseCall 関数を定義するには、次のコード例に示すように PROTOCOL_CL_INCOMING_CLOSE_CALL 型を使用します。

PROTOCOL_CL_INCOMING_CLOSE_CALL MyClIncomingCloseCall;

次に、次のように関数を実装します。

_Use_decl_annotations_
VOID
 MyClIncomingCloseCall(
    NDIS_STATUS  CloseStatus,
    NDIS_HANDLE  ProtocolVcContext,
    PVOID  CloseData,
    UINT  Size
    )
  {...}

PROTOCOL_CL_INCOMING_CLOSE_CALL 関数の種類は、Ndis.h ヘッダー ファイルで定義されています。 コード分析ツールの実行時にエラーをより正確に識別するには、Use_decl_annotations 注釈を関数定義に追加してください。 Use_decl_annotations 注釈により、ヘッダー ファイル内の PROTOCOL_CL_INCOMING_CLOSE_CALL 関数型に適用される注釈が確実に使用されます。 関数宣言の要件の詳細については、「ndis ドライバーの の関数の役割の種類を使用して関数を宣言するを参照してください。

Use_decl_annotationsの詳細については、「関数の動作に注釈を付ける」を参照してください。

必要条件

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

関連項目

NdisClCloseCall

NdisClDropParty

NdisClMakeCall

NdisCmDispatchIncomingCloseCall

NdisCoCreateVc

NdisCoDeleteVc

NdisFreeMemory

NdisFreeToNPagedLookasideList NdisMCmDispatchIncomingCloseCall をする

ProtocolClDropPartyComplete

ProtocolCoDeleteVc