4 #pragma GCC system_header
11 #if (_WIN32_WINNT >= 0x0500)
12 #define MGM_JOIN_STATE_FLAG 0x00000001
13 #define MGM_FORWARD_STATE_FLAG 0x00000002
14 #define MGM_MFE_STATS_0 0x00000001
15 #define MGM_MFE_STATS_1 0x00000002
16 typedef enum _MGM_ENUM_TYPES
{
20 typedef struct _MGM_IF_ENTRY
{
22 DWORD dwIfNextHopAddr
;
25 } MGM_IF_ENTRY
,*PMGM_IF_ENTRY
;
26 typedef DWORD(CALLBACK
*PMGM_RPF_CALLBACK
)(DWORD
,DWORD
,DWORD
,DWORD
,PDWORD
,PDWORD
,PDWORD
,DWORD
,PBYTE
,PBYTE
);
27 typedef DWORD(CALLBACK
*PMGM_CREATION_ALERT_CALLBACK
)(DWORD
,DWORD
,DWORD
,DWORD
,DWORD
,DWORD
,DWORD
,PMGM_IF_ENTRY
);
28 typedef DWORD(CALLBACK
*PMGM_PRUNE_ALERT_CALLBACK
)(DWORD
,DWORD
,DWORD
,DWORD
,DWORD
,DWORD
,BOOL
,PDWORD
);
29 typedef DWORD(CALLBACK
*PMGM_JOIN_ALERT_CALLBACK
)(DWORD
,DWORD
,DWORD
,DWORD
,BOOL
);
30 typedef DWORD(CALLBACK
*PMGM_WRONG_IF_CALLBACK
)(DWORD
,DWORD
,DWORD
,DWORD
,DWORD
,PBYTE
);
31 typedef DWORD(CALLBACK
*PMGM_LOCAL_JOIN_CALLBACK
)(DWORD
,DWORD
,DWORD
,DWORD
,DWORD
,DWORD
);
32 typedef DWORD(CALLBACK
*PMGM_LOCAL_LEAVE_CALLBACK
)(DWORD
,DWORD
,DWORD
,DWORD
,DWORD
,DWORD
);
33 typedef DWORD(CALLBACK
*PMGM_DISABLE_IGMP_CALLBACK
)(DWORD
,DWORD
);
34 typedef DWORD(CALLBACK
*PMGM_ENABLE_IGMP_CALLBACK
)(DWORD
,DWORD
);
35 typedef struct _ROUTING_PROTOCOL_CONFIG
{
36 DWORD dwCallbackFlags
;
37 PMGM_RPF_CALLBACK pfnRpfCallback
;
38 PMGM_CREATION_ALERT_CALLBACK pfnCreationAlertCallback
;
39 PMGM_PRUNE_ALERT_CALLBACK pfnPruneAlertCallback
;
40 PMGM_JOIN_ALERT_CALLBACK pfnJoinAlertCallback
;
41 PMGM_WRONG_IF_CALLBACK pfnWrongIfCallback
;
42 PMGM_LOCAL_JOIN_CALLBACK pfnLocalJoinCallback
;
43 PMGM_LOCAL_LEAVE_CALLBACK pfnLocalLeaveCallback
;
44 PMGM_DISABLE_IGMP_CALLBACK pfnDisableIgmpCallback
;
45 PMGM_ENABLE_IGMP_CALLBACK pfnEnableIgmpCallback
;
46 } ROUTING_PROTOCOL_CONFIG
,*PROUTING_PROTOCOL_CONFIG
;
47 typedef struct _SOURCE_GROUP_ENTRY
{
52 } SOURCE_GROUP_ENTRY
,*PSOURCE_GROUP_ENTRY
;
53 DWORD WINAPI
MgmAddGroupMembershipEntry(HANDLE
,DWORD
,DWORD
,DWORD
,DWORD
,DWORD
,DWORD
,DWORD
);
54 DWORD WINAPI
MgmDeleteGroupMembershipEntry(HANDLE
,DWORD
,DWORD
,DWORD
,DWORD
,DWORD
,DWORD
,DWORD
);
55 DWORD WINAPI
MgmDeRegisterMProtocol(HANDLE
);
56 DWORD WINAPI
MgmGetFirstMfe(PDWORD
,PBYTE
,PDWORD
);
57 DWORD WINAPI
MgmGetFirstMfeStats(PDWORD
,PBYTE
,PDWORD
,DWORD
);
58 DWORD WINAPI
MgmGetMfe(PMIB_IPMCAST_MFE
,PDWORD
,PBYTE
);
59 DWORD WINAPI
MgmGetMfeStats(PMIB_IPMCAST_MFE
,PDWORD
,PBYTE
,DWORD
);
60 DWORD WINAPI
MgmGetNextMfe(PMIB_IPMCAST_MFE
,PDWORD
,PBYTE
,PDWORD
);
61 DWORD WINAPI
MgmGetNextMfeStats(PMIB_IPMCAST_MFE
,PDWORD
,PBYTE
,PDWORD
,DWORD
);
62 DWORD WINAPI
MgmGetProtocolOnInterface(DWORD
,DWORD
,PDWORD
,PDWORD
);
63 DWORD WINAPI
MgmGroupEnumerationEnd(HANDLE
);
64 DWORD WINAPI
MgmGroupEnumerationGetNext(HANDLE
,PDWORD
,PBYTE
,PDWORD
);
65 DWORD WINAPI
MgmGroupEnumerationStart(HANDLE
,MGM_ENUM_TYPES
,HANDLE
*);
66 DWORD WINAPI
MgmRegisterMProtocol(PROUTING_PROTOCOL_CONFIG
,DWORD
,DWORD
,HANDLE
*);
67 DWORD WINAPI
MgmReleaseInterfaceOwnership(HANDLE
,DWORD
,DWORD
);
68 DWORD WINAPI
MgmSetMfe(HANDLE
,PMIB_IPMCAST_MFE
);
69 DWORD WINAPI
MgmTakeInterfaceOwnership(HANDLE
,DWORD
,DWORD
);