次の方法で共有


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

接続指向ミニポートには、ミニポートCoActivateVc 関数が必要です。 ミニポートCoActivateVc は、仮想接続がアクティブ化されていることをミニポート ドライバーに示すために NDIS によって呼び出されます。

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

構文

MINIPORT_CO_ACTIVATE_VC MiniportCoActivateVc;

NDIS_STATUS MiniportCoActivateVc(
  [in]      NDIS_HANDLE MiniportVcContext,
  [in, out] PCO_CALL_PARAMETERS CallParameters
)
{...}

パラメーター

[in] MiniportVcContext

ミニポート ドライバーが VC ごとの状態を維持するミニポート ドライバーによって割り当てられたコンテキスト領域へのハンドルを指定します。 ミニポート ドライバーは、その ミニポートCoCreateVc 関数から NDIS にこのハンドルを提供しました。

[in, out] CallParameters

この VC に対して確立される呼び出しマネージャーによって指定された呼び出しパラメーターを指定します。 出力時に、ミニポート ドライバーは、特定のフラグが CO_CALL_PARAMETERS 構造体に設定されている場合、変更された呼び出しパラメーターを返します。

戻り値

リターン コード 形容
NDIS_STATUS_SUCCESS
VC が正常にアクティブ化されたことを示します。
NDIS_STATUS_PENDING
ミニポート ドライバーが VC を非同期的にアクティブ化する要求を完了することを示します。 ミニポート ドライバーの操作が完了したら、呼び出す必要があります。NdisMCoActivateVcComplete します。
NDIS_STATUS_INVALID_DATA
CallParameters で指定された呼び出しパラメーターが、このミニポート ドライバーがサポートするメディアの種類に対して無効または無効であることを示します。
NDIS_STATUS_RESOURCES
ミニポート ドライバーがアクティブな VC に関する状態情報を維持するために必要なすべてのリソースを割り当てることができなかったため、ミニポート ドライバーが VC をアクティブ化できなかったことを示します。

備考

ミニポート ドライバーは、アダプターが要求された呼び出しをサポートできることを確認するために、CallParametersで指定されているように、この VC の呼び出しパラメーターを検証する必要があります。 要求された呼び出しパラメーターを満たすことができない場合、ミニポート ドライバーは、NDIS_STATUS_INVALID_DATAで要求に失敗する必要があります。

ミニポートコアクティブ化Vc は、既にアクティブな呼び出しの呼び出しパラメーターを変更するために、1 つの VC に対して何度も呼び出すことができます。 ミニポート ドライバーは、すべての呼び出しでパラメーターを検証し、要求を満たすために、そのアダプターで必要な処理を実行する必要があります。 ただし、指定された呼び出しパラメーターを設定できない場合は、接続指向クライアントまたは呼び出しマネージャーが古い呼び出しパラメーターを使用してデータを送受信し続けることができるため、ミニポートCoActivateVc は VC を使用可能な状態のままにする必要があります。

CallParameters->MediaParameters->Flagsの呼び出しパラメーター構造でROUND_UP_FLOWフラグまたはROUND_DOWN_FLOW フラグが設定されている場合、ミニポート ドライバーは、設定されている適切なフラグに従ってフロー レートが丸められた後、VC の実際のフロー レートを返すように要求されています。 これらのフラグが設定されているため、ミニポート ドライバーが呼び出しパラメーターのいずれかを変更する場合は、CallParametersで VC に使用されている実際の呼び出しパラメーターを返す必要があります。

呼び出しパラメーターが許容される場合は、ミニポートCoActivateVc は、仮想接続 (つまり、プログラミング受信バッファー) を介してデータを受信または送信するアダプターを準備するために必要に応じてアダプターと通信します。

の例

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

たとえば、"MyCoActivateVc" という名前の ミニポートCoActivateVc 関数を定義するには、次のコード例に示すように MINIPORT_CO_ACTIVATE_VC 型を使用します。

MINIPORT_CO_ACTIVATE_VC MyCoActivateVc;

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

_Use_decl_annotations_
NDIS_STATUS
 MyCoActivateVc(
    NDIS_HANDLE  MiniportVcContext,
    PCO_CALL_PARAMETERS  CallParameters
    )
  {...}

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

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

必要条件

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

関連項目

ミニポートCoCreateVc する

ミニポートCoDeactivateVc

NdisMCoActivateVcComplete