ホーム › NetworkManagement.Rras › ROUTING_PROTOCOL_CONFIG
ROUTING_PROTOCOL_CONFIG
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| dwCallbackFlags | DWORD | 4 | +0 | +0 | 将来の使用のために予約済みです。 |
| pfnRpfCallback | PMGM_RPF_CALLBACK | 8/4 | +8 | +4 | RPF チェックを実行するためにルーティング プロトコルを呼び出すコールバックです。 |
| pfnCreationAlertCallback | PMGM_CREATION_ALERT_CALLBACK | 8/4 | +16 | +8 | 新しい送信元からの、または新しいグループ宛てのマルチキャスト パケットを転送すべきインターフェイス (ルーティング プロトコルが所有するインターフェイスの部分集合) を判別するために、ルーティング プロトコルを呼び出すコールバックです。 |
| pfnPruneAlertCallback | PMGM_PRUNE_ALERT_CALLBACK | 8/4 | +24 | +12 | 指定された送信元およびグループに対する受信者が、他のルーティング プロトコルが所有するインターフェイス上に存在しなくなったことをルーティング プロトコルに通知するためのコールバックです。 |
| pfnJoinAlertCallback | PMGM_JOIN_ALERT_CALLBACK | 8/4 | +32 | +16 | 指定された送信元およびグループに対する新しい受信者が、別のルーティング プロトコルが所有するインターフェイス上に存在することをルーティング プロトコルに通知するためのコールバックです。 |
| pfnWrongIfCallback | PMGM_WRONG_IF_CALLBACK | 8/4 | +40 | +20 | 指定された送信元から指定されたグループ宛てのパケットが誤ったインターフェイスで受信されたことをルーティング プロトコルに通知するためのコールバックです。 |
| pfnLocalJoinCallback | PMGM_LOCAL_JOIN_CALLBACK | 8/4 | +48 | +24 | あるインターフェイス上でグループに対する新しい受信者を IGMP が検出したことをルーティング プロトコルに通知するためのコールバックです。 |
| pfnLocalLeaveCallback | PMGM_LOCAL_LEAVE_CALLBACK | 8/4 | +56 | +28 | あるインターフェイス上でグループに対する受信者が存在しなくなったことを IGMP が検出したことを、ルーティング プロトコルに通知するためのコールバックです。 |
| pfnDisableIgmpCallback | PMGM_DISABLE_IGMP_CALLBACK | 8/4 | +64 | +32 | IGMP が有効なインターフェイスの所有権をプロトコルが取得または解放しようとしていることを IGMP に通知するための、IGMP へのコールバックです。 |
| pfnEnableIgmpCallback | PMGM_ENABLE_IGMP_CALLBACK | 8/4 | +72 | +36 | IGMP が有効なインターフェイスの所有権の取得または解放をプロトコルが完了したことを IGMP に通知するための、IGMP へのコールバックです。 |
公式ドキュメント
ROUTING_PROTOCOL_CONFIG 構造体は、プロトコルがマルチキャスト グループ マネージャーに登録するときに、マルチキャスト グループ マネージャーへ渡されるルーティング プロトコルの構成情報を記述します。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
#include <windows.h>
// ROUTING_PROTOCOL_CONFIG (x64 80 / x86 40 バイト)
typedef struct ROUTING_PROTOCOL_CONFIG {
DWORD dwCallbackFlags;
PMGM_RPF_CALLBACK pfnRpfCallback;
PMGM_CREATION_ALERT_CALLBACK pfnCreationAlertCallback;
PMGM_PRUNE_ALERT_CALLBACK pfnPruneAlertCallback;
PMGM_JOIN_ALERT_CALLBACK pfnJoinAlertCallback;
PMGM_WRONG_IF_CALLBACK pfnWrongIfCallback;
PMGM_LOCAL_JOIN_CALLBACK pfnLocalJoinCallback;
PMGM_LOCAL_LEAVE_CALLBACK pfnLocalLeaveCallback;
PMGM_DISABLE_IGMP_CALLBACK pfnDisableIgmpCallback;
PMGM_ENABLE_IGMP_CALLBACK pfnEnableIgmpCallback;
} ROUTING_PROTOCOL_CONFIG;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct ROUTING_PROTOCOL_CONFIG
{
public uint dwCallbackFlags;
public IntPtr pfnRpfCallback;
public IntPtr pfnCreationAlertCallback;
public IntPtr pfnPruneAlertCallback;
public IntPtr pfnJoinAlertCallback;
public IntPtr pfnWrongIfCallback;
public IntPtr pfnLocalJoinCallback;
public IntPtr pfnLocalLeaveCallback;
public IntPtr pfnDisableIgmpCallback;
public IntPtr pfnEnableIgmpCallback;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure ROUTING_PROTOCOL_CONFIG
Public dwCallbackFlags As UInteger
Public pfnRpfCallback As IntPtr
Public pfnCreationAlertCallback As IntPtr
Public pfnPruneAlertCallback As IntPtr
Public pfnJoinAlertCallback As IntPtr
Public pfnWrongIfCallback As IntPtr
Public pfnLocalJoinCallback As IntPtr
Public pfnLocalLeaveCallback As IntPtr
Public pfnDisableIgmpCallback As IntPtr
Public pfnEnableIgmpCallback As IntPtr
End Structureimport ctypes
from ctypes import wintypes
class ROUTING_PROTOCOL_CONFIG(ctypes.Structure):
_fields_ = [
("dwCallbackFlags", wintypes.DWORD),
("pfnRpfCallback", ctypes.c_void_p),
("pfnCreationAlertCallback", ctypes.c_void_p),
("pfnPruneAlertCallback", ctypes.c_void_p),
("pfnJoinAlertCallback", ctypes.c_void_p),
("pfnWrongIfCallback", ctypes.c_void_p),
("pfnLocalJoinCallback", ctypes.c_void_p),
("pfnLocalLeaveCallback", ctypes.c_void_p),
("pfnDisableIgmpCallback", ctypes.c_void_p),
("pfnEnableIgmpCallback", ctypes.c_void_p),
]#[repr(C)]
pub struct ROUTING_PROTOCOL_CONFIG {
pub dwCallbackFlags: u32,
pub pfnRpfCallback: *mut core::ffi::c_void,
pub pfnCreationAlertCallback: *mut core::ffi::c_void,
pub pfnPruneAlertCallback: *mut core::ffi::c_void,
pub pfnJoinAlertCallback: *mut core::ffi::c_void,
pub pfnWrongIfCallback: *mut core::ffi::c_void,
pub pfnLocalJoinCallback: *mut core::ffi::c_void,
pub pfnLocalLeaveCallback: *mut core::ffi::c_void,
pub pfnDisableIgmpCallback: *mut core::ffi::c_void,
pub pfnEnableIgmpCallback: *mut core::ffi::c_void,
}import "golang.org/x/sys/windows"
type ROUTING_PROTOCOL_CONFIG struct {
dwCallbackFlags uint32
pfnRpfCallback uintptr
pfnCreationAlertCallback uintptr
pfnPruneAlertCallback uintptr
pfnJoinAlertCallback uintptr
pfnWrongIfCallback uintptr
pfnLocalJoinCallback uintptr
pfnLocalLeaveCallback uintptr
pfnDisableIgmpCallback uintptr
pfnEnableIgmpCallback uintptr
}type
ROUTING_PROTOCOL_CONFIG = record
dwCallbackFlags: DWORD;
pfnRpfCallback: Pointer;
pfnCreationAlertCallback: Pointer;
pfnPruneAlertCallback: Pointer;
pfnJoinAlertCallback: Pointer;
pfnWrongIfCallback: Pointer;
pfnLocalJoinCallback: Pointer;
pfnLocalLeaveCallback: Pointer;
pfnDisableIgmpCallback: Pointer;
pfnEnableIgmpCallback: Pointer;
end;const ROUTING_PROTOCOL_CONFIG = extern struct {
dwCallbackFlags: u32,
pfnRpfCallback: ?*anyopaque,
pfnCreationAlertCallback: ?*anyopaque,
pfnPruneAlertCallback: ?*anyopaque,
pfnJoinAlertCallback: ?*anyopaque,
pfnWrongIfCallback: ?*anyopaque,
pfnLocalJoinCallback: ?*anyopaque,
pfnLocalLeaveCallback: ?*anyopaque,
pfnDisableIgmpCallback: ?*anyopaque,
pfnEnableIgmpCallback: ?*anyopaque,
};type
ROUTING_PROTOCOL_CONFIG {.bycopy.} = object
dwCallbackFlags: uint32
pfnRpfCallback: pointer
pfnCreationAlertCallback: pointer
pfnPruneAlertCallback: pointer
pfnJoinAlertCallback: pointer
pfnWrongIfCallback: pointer
pfnLocalJoinCallback: pointer
pfnLocalLeaveCallback: pointer
pfnDisableIgmpCallback: pointer
pfnEnableIgmpCallback: pointerstruct ROUTING_PROTOCOL_CONFIG
{
uint dwCallbackFlags;
void* pfnRpfCallback;
void* pfnCreationAlertCallback;
void* pfnPruneAlertCallback;
void* pfnJoinAlertCallback;
void* pfnWrongIfCallback;
void* pfnLocalJoinCallback;
void* pfnLocalLeaveCallback;
void* pfnDisableIgmpCallback;
void* pfnEnableIgmpCallback;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; ROUTING_PROTOCOL_CONFIG サイズ: 40 バイト(x86)
dim st, 10 ; 4byte整数×10(構造体サイズ 40 / 4 切り上げ)
; dwCallbackFlags : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; pfnRpfCallback : PMGM_RPF_CALLBACK (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; pfnCreationAlertCallback : PMGM_CREATION_ALERT_CALLBACK (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; pfnPruneAlertCallback : PMGM_PRUNE_ALERT_CALLBACK (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; pfnJoinAlertCallback : PMGM_JOIN_ALERT_CALLBACK (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; pfnWrongIfCallback : PMGM_WRONG_IF_CALLBACK (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; pfnLocalJoinCallback : PMGM_LOCAL_JOIN_CALLBACK (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; pfnLocalLeaveCallback : PMGM_LOCAL_LEAVE_CALLBACK (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; pfnDisableIgmpCallback : PMGM_DISABLE_IGMP_CALLBACK (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; pfnEnableIgmpCallback : PMGM_ENABLE_IGMP_CALLBACK (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; ROUTING_PROTOCOL_CONFIG サイズ: 80 バイト(x64)
dim st, 20 ; 4byte整数×20(構造体サイズ 80 / 4 切り上げ)
; dwCallbackFlags : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; pfnRpfCallback : PMGM_RPF_CALLBACK (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; pfnCreationAlertCallback : PMGM_CREATION_ALERT_CALLBACK (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; pfnPruneAlertCallback : PMGM_PRUNE_ALERT_CALLBACK (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; pfnJoinAlertCallback : PMGM_JOIN_ALERT_CALLBACK (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; pfnWrongIfCallback : PMGM_WRONG_IF_CALLBACK (+40, 8byte) qpoke st,40,値 / qpeek(st,40) ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; pfnLocalJoinCallback : PMGM_LOCAL_JOIN_CALLBACK (+48, 8byte) qpoke st,48,値 / qpeek(st,48) ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; pfnLocalLeaveCallback : PMGM_LOCAL_LEAVE_CALLBACK (+56, 8byte) qpoke st,56,値 / qpeek(st,56) ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; pfnDisableIgmpCallback : PMGM_DISABLE_IGMP_CALLBACK (+64, 8byte) qpoke st,64,値 / qpeek(st,64) ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; pfnEnableIgmpCallback : PMGM_ENABLE_IGMP_CALLBACK (+72, 8byte) qpoke st,72,値 / qpeek(st,72) ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global ROUTING_PROTOCOL_CONFIG
#field int dwCallbackFlags
#field intptr pfnRpfCallback
#field intptr pfnCreationAlertCallback
#field intptr pfnPruneAlertCallback
#field intptr pfnJoinAlertCallback
#field intptr pfnWrongIfCallback
#field intptr pfnLocalJoinCallback
#field intptr pfnLocalLeaveCallback
#field intptr pfnDisableIgmpCallback
#field intptr pfnEnableIgmpCallback
#endstruct
stdim st, ROUTING_PROTOCOL_CONFIG ; NSTRUCT 変数を確保
st->dwCallbackFlags = 100
mes "dwCallbackFlags=" + st->dwCallbackFlags