PROTOCOL_CM_ADD_PARTY コールバック関数 (ndis.h)
ProtocolCmAddParty 関数は必須の関数です。 ProtocolCmAddParty は、メディア固有のパラメーターを設定して、既存のマルチポイント呼び出しにパーティを追加し、新しいパーティの状態データを格納し、そのパーティを呼び出しに追加します。
構文
PROTOCOL_CM_ADD_PARTY ProtocolCmAddParty;
NDIS_STATUS ProtocolCmAddParty(
[in] NDIS_HANDLE CallMgrVcContext,
[in, out] PCO_CALL_PARAMETERS CallParameters,
[in] NDIS_HANDLE NdisPartyHandle,
[out] PNDIS_HANDLE CallMgrPartyContext
)
{...}
パラメーター
[in] CallMgrVcContext
呼び出しマネージャーが VC ごとの状態を維持する、呼び出しマネージャーによって割り当てられたコンテキスト領域へのハンドルを指定します。 呼び出しマネージャーは、 ProtocolCoCreateVc 関数から NDIS にこのハンドルを提供しました。
[in, out] CallParameters
既存 の呼 び出しに追加されるパーティの、接続指向クライアントによって指定されたパラメーターを含むCO_CALL_PARAMETERS構造体へのポインター。
[in] NdisPartyHandle
既存の仮想接続に追加されるマルチポイント パーティを一意に識別する、NDIS によって提供されるハンドルを指定します。 このハンドルは呼び出しマネージャーに対して不透明であり、NDIS ライブラリ用に予約されています。
[out] CallMgrPartyContext
呼び出しマネージャーがマルチポイント呼び出しのこのパーティに関する状態を維持する、呼び出しマネージャーが指定したコンテキスト領域へのハンドルを返す場合に指定します。
戻り値
ProtocolCmAddParty は、その操作の状態を次のいずれかとして返します。
リターン コード | 説明 |
---|---|
|
通話マネージャーが、パーティに関する状態を維持するために必要なリソースを正常に割り当て、通話にパーティを正常に追加したことを示します。 |
|
通話マネージャーがパーティを非同期的に追加する要求を完了することを示します。 通話マネージャーがパーティを追加するためのすべての操作を完了したら、 NdisCmAddPartyComplete を 呼び出して、この操作が完了したことを NDIS に通知する必要があります。 |
|
通話マネージャーが、接続にパーティを追加するためにリソースを割り当てたり初期化したりできなかったことを示します。 |
|
呼び出し元が CallParameters の呼び出しパラメーターで無効または使用できない機能を要求したか、またはこの呼び出しマネージャーでサポートされているメディアの種類がマルチポイント呼び出しをサポートしていないために、呼び出しマネージャーがマルチポイント呼び出しにパーティを追加できなかったことを示します。 |
注釈
ProtocolCmAddParty は、 NdisPartyHandle で指定されたパーティに関する状態情報をマルチポイント呼び出しに追加するために、呼び出しマネージャーが保持するために必要な動的リソースと構造体の割り当てを実行します。 このようなリソースには、メモリ バッファー、データ構造、イベント、その他の同様のリソースが含まれますが、これらに限定されません。 呼び出しマネージャーは、この関数の関連するパーティごとの構造体も初期化する必要があります。
呼び出しマネージャーが割り当てるパーティごとの状態領域では、呼び出しマネージャーは、今後の呼び出しで参照するために NdisPartyHandle で指定されたハンドルを格納する必要があります。 呼び出しマネージャーが割り当てられ、パーティごとの状態領域の初期化が完了したら、NDIS に制御を返す前に、状態バッファーのアドレスを CallMgrPartyContext ハンドルとして設定する必要があります。 これを行うには、ハンドルを逆参照し、状態バッファーへのポインターをハンドルの値として格納します。 例:
*CallMgrPartyContext = SomeBuffer;
通話マネージャーは、必要に応じて、ネットワーク ハードウェアまたはその他のメディア固有のアクターと必要な通信を実行し、 CallParameters の呼び出しパラメーターで指定されたパーティを既存のマルチポイント呼び出しに追加します。
例
ProtocolCmAddParty 関数を定義するには、まず、定義する関数の型を識別する関数宣言を指定する必要があります。 Windows には、ドライバーの関数型のセットが用意されています。 関数の種類を使用して関数を宣言すると、 ドライバーのコード分析、 静的ドライバー検証ツール (SDV)、およびその他の検証ツールでエラーが検出され、Windows オペレーティング システム用のドライバーを記述するための要件になります。たとえば、" MyCmAddParty" という名前の ProtocolCmAddParty 関数を定義するには、次のコード例に示すように 、PROTOCOL_CM_ADD_PARTY 型を使用します。
MINIPORT_ADD_DEVICE MyCmAddParty;
次に、次のように関数を実装します。
_Use_decl_annotations_
NDIS_STATUS
MyCmAddParty(
NDIS_HANDLE CallMgrVcContext,
PCO_CALL_PARAMETERS CallParameters,
NDIS_HANDLE NdisPartyHandle,
PNDIS_HANDLE CallMgrPartyContext
)
{...}
PROTOCOL_CM_ADD_PARTY関数の種類は、Ndis.h ヘッダー ファイルで定義されます。 コード分析ツールを実行するときにエラーをより正確に識別するには、 Use_decl_annotations 注釈を関数定義に追加してください。 Use_decl_annotations注釈を使用すると、ヘッダー ファイル内のPROTOCOL_CM_ADD_PARTY関数型に適用される注釈が確実に使用されます。 関数宣言の要件の詳細については、「NDIS ドライバーの関数 ロール型を使用して関数を宣言する」を参照してください。
Use_decl_annotationsの詳細については、「関数の動作に注釈を付ける」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista の NDIS 6.0 および NDIS 5.1 ドライバー (「ProtocolCmAddParty (NDIS 5.1)」を参照) でサポートされています。 Windows XP の NDIS 5.1 ドライバー (「ProtocolCmAddParty (NDIS 5.1)」を参照) でサポートされています。 |
対象プラットフォーム | Windows |
ヘッダー | ndis.h (Ndis.h を含む) |
IRQL | <= DISPATCH_LEVEL |