PMGM_PRUNE_ALERT_CALLBACK
コールバックシグネチャ
DWORD PMGM_PRUNE_ALERT_CALLBACK(
DWORD dwSourceAddr,
DWORD dwSourceMask,
DWORD dwGroupAddr,
DWORD dwGroupMask,
DWORD dwIfIndex,
DWORD dwIfNextHopAddr,
BOOL bMemberDelete,
DWORD* pdwTimeout
);パラメーター
| フィールド | 型 | 説明 |
|---|---|---|
| dwSourceAddr | DWORD | マルチキャストデータの受信を停止する送信元アドレスを指定します。ゼロは、すべての送信元からのデータ受信を停止することを示します (グループに対するワイルドカード受信者)。それ以外の場合、dwSourceAddr の値は送信元または送信元ネットワークの IP アドレスです。 送信元アドレスの範囲を指定するには、マルチキャストグループマネージャーは dwSourceAddr で送信元ネットワークを指定し、dwSourceMask でサブネットマスクを指定します。 |
| dwSourceMask | DWORD | dwSourceAddr に対応するサブネットマスクを指定します。dwSourceAddr と dwSourceMask の 2 つのパラメーターは、マルチキャストデータの受信を停止する送信元の範囲を定義するために組み合わせて使用されます。 マルチキャストグループマネージャーは、dwSourceAddr にもゼロを指定した場合 (ワイルドカード受信者) は、このパラメーターにゼロを指定します。 |
| dwGroupAddr | DWORD | データの受信を停止するマルチキャストグループを指定します。ゼロは、すべてのグループのデータ受信を停止することを示します (ワイルドカード受信者)。それ以外の場合、dwGroupAddr の値はグループの IP アドレスです。 グループアドレスの範囲を指定するには、マルチキャストグループマネージャーは dwGroupAddr でグループアドレスを指定し、dwGroupMask でサブネットマスクを指定します。 |
| dwGroupMask | DWORD | dwGroupAddr に対応するサブネットマスクを指定します。dwGroupAddr と dwGroupMask の 2 つのパラメーターは、マルチキャストグループの範囲を定義するために組み合わせて使用されます。 マルチキャストグループマネージャーは、dwGroupAddr にもゼロを指定した場合 (ワイルドカード受信者) は、このパラメーターにゼロを指定します。 |
| dwIfIndex | DWORD | マルチキャストデータの受信を停止するインターフェイスを指定します。 |
| dwIfNextHopAddr | DWORD | dwIfIndex で指定されたインデックスに対応するネクストホップのアドレスを指定します。dwIfIndex と dwIfNextHopIPAddr の 2 つのパラメーターは、ポイントツーマルチポイントインターフェイス上のネクストホップを一意に識別します。ポイントツーマルチポイントインターフェイスとは、1 つのインターフェイスが複数のネットワークに接続する接続形態です。ポイントツーマルチポイントインターフェイスの例としては、非ブロードキャストマルチアクセス (NBMA) インターフェイスや、すべてのダイヤルアップクライアントが接続する内部インターフェイスなどが挙げられます。 dwIfIndex の値のみで識別されるブロードキャストインターフェイス (イーサネットインターフェイスなど) やポイントツーポイントインターフェイスの場合は、ゼロを指定します。 |
| bMemberDelete | BOOL | このコールバックが、クライアントによって MgmAddGroupMembershipEntry が呼び出されたために呼び出されたのか (マルチキャストグループマネージャーはこのパラメーターを TRUE に設定します)、それとも MFE が作成または更新されたために呼び出されたのか (マルチキャストグループマネージャーはこのパラメーターを FALSE に設定します) を示します。 |
| pdwTimeout | DWORD* | 入力時、pdwTimeout は DWORD サイズのメモリ位置を指すポインターです。 bMemberDelete が FALSE の場合、このパラメーターを使用して、対応する MFE をマルチキャスト転送キャッシュ内に保持する時間を指定できます。クライアントが値を指定しない場合、既定値は 900 秒です。 出力時、pdwTimeout はこの MFE のタイムアウト値 (秒単位) を受け取ります。 |
公式ドキュメント
PMGM_PRUNE_ALERT_CALLBACK コールバックは、他のルーティングプロトコルが所有するインターフェイス上に受信者が存在しなくなったことをプロトコルに通知するために、ルーティングプロトコルを呼び出すものです。
戻り値
RRAS はアプリケーションが特定の値を返すことを想定していません。返された値は RRAS によって無視されます。
解説(Remarks)
クライアントが (s, g)、(, g)、または (, *) のエントリに対して MgmDeleteGroupMembershipEntry 関数を呼び出した場合 (つまりグループメンバーシップが変化した場合)、マルチキャストグループマネージャーは bMemberDelete パラメーターを TRUE に設定し、このコールバックを呼び出します。
MFE の送信インターフェイスリストが変化した場合、マルチキャストグループマネージャーは bMemberDelete パラメーターを FALSE に設定します。この変化は通常、その MFE に対応するグループのメンバーシップが変化したときに発生します。
マルチキャストルーティングプロトコルは、bMemberDelete パラメーターを使用して、グループメンバーシップの変化と MFE の変化を区別できます。
このコールバックを受け取ったときにルーティングプロトコルが行う処理は、プロトコルごとに異なります。プロトコル仕様がそれを正しい動作としている場合、プロトコルは bMemberDelete パラメーターが FALSE に設定されているコールバックを無視してもかまいません。
MgmDeleteGroupMembershipEntry が呼び出されると、マルチキャストグループマネージャーはこのコールバックを使用して、指定された送信元とグループに対する受信者がもう存在しないことを他のマルチキャストグループマネージャークライアントに通知します。
マルチキャストグループマネージャーは、ワイルドカード (*, g) の join に対してこのコールバックを呼び出すタイミングを、次の規則に従って決定します。
- 最後から 2 番目のクライアントについて最後のインターフェイスが削除される場合 (つまり、1 つのクライアントのインターフェイスのみが残る場合)、マルチキャストグループマネージャーは、その残っているクライアントに対して PMGM_PRUNE_ALERT_CALLBACK コールバックを呼び出します。
- 最後のクライアントについて最後のインターフェイスが削除される場合 (つまり、他にインターフェイスが残っていない場合)、このコールバックは、マルチキャストグループマネージャーに登録されている他のすべてのクライアントに対して呼び出されます。
- グループに対する送信元固有の prune (s, g) を受け取ると、マルチキャストグループマネージャーは、送信元 "s" に向かう受信インターフェイスを所有するクライアントに対してのみ PMGM_PRUNE_ALERT_CALLBACK コールバックを呼び出します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)