@@ -63,6 +63,26 @@ public enum FWP_ACTION_TYPE : uint
6363 FWP_ACTION_FLAG_CALLOUT = 0x00004000 ,
6464 }
6565
66+ /// <summary>TBD</summary>
67+ // https://learn.microsoft.com/en-us/windows/win32/api/fwptypes/ne-fwptypes-fwp_network_connection_policy_setting_type typedef enum
68+ // FWP_NETWORK_CONNECTION_POLICY_SETTING_TYPE_ { FWP_NETWORK_CONNECTION_POLICY_SOURCE_ADDRESS,
69+ // FWP_NETWORK_CONNECTION_POLICY_NEXT_HOP_INTERFACE, FWP_NETWORK_CONNECTION_POLICY_NEXT_HOP, FWP_NETWORK_CONNECTION_POLICY_MAX } FWP_NETWORK_CONNECTION_POLICY_SETTING_TYPE;
70+ [ PInvokeData ( "fwptypes.h" , MSDNShortId = "NE:fwptypes.FWP_NETWORK_CONNECTION_POLICY_SETTING_TYPE_" ) ]
71+ public enum FWP_NETWORK_CONNECTION_POLICY_SETTING_TYPE
72+ {
73+ /// <summary>TBD</summary>
74+ FWP_NETWORK_CONNECTION_POLICY_SOURCE_ADDRESS = 0 ,
75+
76+ /// <summary>TBD</summary>
77+ FWP_NETWORK_CONNECTION_POLICY_NEXT_HOP_INTERFACE ,
78+
79+ /// <summary>TBD</summary>
80+ FWP_NETWORK_CONNECTION_POLICY_NEXT_HOP ,
81+
82+ /// <summary>TBD</summary>
83+ FWP_NETWORK_CONNECTION_POLICY_MAX ,
84+ }
85+
6686 /// <summary>
6787 /// The <c>FWPM_APPC_NETWORK_CAPABILITY_TYPE</c> enumeration specifies the type of app container network capability that is associated
6888 /// with the object or traffic in question.
@@ -3474,6 +3494,50 @@ public struct FWPM_NET_EVENT3
34743494 public SafeCoTaskMemStruct < FWPM_NET_EVENT_CLASSIFY_DROP_MAC0 > classifyDropMac { get => new ( ptr , false ) ; set => ptr = value ; }
34753495 }
34763496
3497+ /// <summary>Stores a type and value pair for a connection policy setting. You use this structure with <c>FwpmConnectionPolicyAdd0</c>.</summary>
3498+ // https://learn.microsoft.com/en-us/windows/win32/api/fwpmtypes/ns-fwpmtypes-fwpm_network_connection_policy_setting0 typedef struct
3499+ // FWPM_NETWORK_CONNECTION_POLICY_SETTING0_ { FWP_NETWORK_CONNECTION_POLICY_SETTING_TYPE type; FWP_VALUE0 value; } FWPM_NETWORK_CONNECTION_POLICY_SETTING0;
3500+ [ PInvokeData ( "fwpmtypes.h" , MSDNShortId = "NS:fwpmtypes.FWPM_NETWORK_CONNECTION_POLICY_SETTING0_" ) ]
3501+ [ StructLayout ( LayoutKind . Sequential , CharSet = CharSet . Unicode ) ]
3502+ public struct FWPM_NETWORK_CONNECTION_POLICY_SETTING0
3503+ {
3504+ /// <summary>A type of connection policy setting. See <c>FWP_NETWORK_CONNECTION_POLICY_SETTING_TYPE</c>.</summary>
3505+ public FWP_NETWORK_CONNECTION_POLICY_SETTING_TYPE type ;
3506+
3507+ /// <summary>
3508+ /// <para>The value of a connection policy setting.</para>
3509+ /// <para>
3510+ /// <b>FWP_NETWORK_CONNECTION_POLICY_SOURCE_ADDRESS</b>. The source address to use for the connection. The value should be a
3511+ /// <b>FWP_UINT32</b> for an IPv4 address, and a <b>FWP_BYTE_ARRAY16_TYPE</b> for an IPv6 address.
3512+ /// </para>
3513+ /// <para>
3514+ /// <b>FWP_NETWORK_CONNECTION_POLICY_NEXT_HOP_INTERFACE</b>. The LUID of the outgoing interface to use for the connection. The value
3515+ /// should be a <b>FWP_UINT64</b>.
3516+ /// </para>
3517+ /// <para>
3518+ /// <b>FWP_NETWORK_CONNECTION_POLICY_NEXT_HOP</b>. The nexthop address (or gateway) to use for the connection. The value should be a
3519+ /// <b>FWP_UINT32</b> for an IPv4 address, and a <b>FWP_BYTE_ARRAY16_TYPE</b> for an IPv6 address.
3520+ /// </para>
3521+ /// </summary>
3522+ public FWP_VALUE0 value ;
3523+ }
3524+
3525+ /// <summary>
3526+ /// Stores an array of <c>FWPM_NETWORK_CONNECTION_POLICY_SETTING0</c> values, together with the number of elements in that array.
3527+ /// </summary>
3528+ // https://learn.microsoft.com/en-us/windows/win32/api/fwpmtypes/ns-fwpmtypes-fwpm_network_connection_policy_settings0 typedef struct
3529+ // FWPM_NETWORK_CONNECTION_POLICY_SETTINGS0_ { UINT32 numSettings; FWPM_NETWORK_CONNECTION_POLICY_SETTING0 *settings; } FWPM_NETWORK_CONNECTION_POLICY_SETTINGS0;
3530+ [ PInvokeData ( "fwpmtypes.h" , MSDNShortId = "NS:fwpmtypes.FWPM_NETWORK_CONNECTION_POLICY_SETTINGS0_" ) ]
3531+ [ StructLayout ( LayoutKind . Sequential , CharSet = CharSet . Unicode ) ]
3532+ public struct FWPM_NETWORK_CONNECTION_POLICY_SETTINGS0
3533+ {
3534+ /// <summary>The number of <c>FWPM_NETWORK_CONNECTION_POLICY_SETTING0</c> structures contained in settings.</summary>
3535+ public uint numSettings ;
3536+
3537+ /// <summary>An array of <c>FWPM_NETWORK_CONNECTION_POLICY_SETTING0</c> structures</summary>
3538+ public ArrayPointer < FWPM_NETWORK_CONNECTION_POLICY_SETTING0 > settings ;
3539+ }
3540+
34773541 /// <summary>The <c>FWPM_PROVIDER_CHANGE0</c> structure specifies a change notification dispatched to subscribers.</summary>
34783542 /// <remarks>
34793543 /// <c>FWPM_PROVIDER_CHANGE0</c> is a specific implementation of FWPM_PROVIDER_CHANGE. See WFP Version-Independent Names and Targeting
@@ -3495,6 +3559,193 @@ public struct FWPM_PROVIDER_CHANGE0
34953559 public Guid providerKey ;
34963560 }
34973561
3562+ /// <summary>
3563+ /// Stores the state associated with a provider context. <c>FWPM_PROVIDER_CONTEXT0</c>, <c>FWPM_PROVIDER_CONTEXT1</c>, and
3564+ /// <c>FWPM_PROVIDER_CONTEXT2</c> are available.
3565+ /// </summary>
3566+ /// <remarks>The first seven elements of the union are information supplied when adding objects.</remarks>
3567+ // https://learn.microsoft.com/en-us/windows/win32/api/fwpmtypes/ns-fwpmtypes-fwpm_provider_context3 typedef struct
3568+ // FWPM_PROVIDER_CONTEXT3_ { GUID providerContextKey; FWPM_DISPLAY_DATA0 displayData; UINT32 flags; GUID *providerKey; FWP_BYTE_BLOB
3569+ // providerData; FWPM_PROVIDER_CONTEXT_TYPE type; union { IPSEC_KEYING_POLICY1 *keyingPolicy; IPSEC_TRANSPORT_POLICY2
3570+ // *ikeQmTransportPolicy; IPSEC_TUNNEL_POLICY3 *ikeQmTunnelPolicy; IPSEC_TRANSPORT_POLICY2 *authipQmTransportPolicy; IPSEC_TUNNEL_POLICY3
3571+ // *authipQmTunnelPolicy; IKEEXT_POLICY2 *ikeMmPolicy; IKEEXT_POLICY2 *authIpMmPolicy; FWP_BYTE_BLOB *dataBuffer; FWPM_CLASSIFY_OPTIONS0
3572+ // *classifyOptions; IPSEC_TUNNEL_POLICY3 *ikeV2QmTunnelPolicy; IPSEC_TRANSPORT_POLICY2 *ikeV2QmTransportPolicy; IKEEXT_POLICY2
3573+ // *ikeV2MmPolicy; IPSEC_DOSP_OPTIONS0 *idpOptions; FWPM_NETWORK_CONNECTION_POLICY_SETTINGS0 *networkConnectionPolicy; }; UINT64
3574+ // providerContextId; } FWPM_PROVIDER_CONTEXT3;
3575+ [ PInvokeData ( "fwpmtypes.h" , MSDNShortId = "NS:fwpmtypes.FWPM_PROVIDER_CONTEXT3_" ) ]
3576+ [ StructLayout ( LayoutKind . Sequential , CharSet = CharSet . Unicode ) ]
3577+ public struct FWPM_PROVIDER_CONTEXT3
3578+ {
3579+ /// <summary>
3580+ /// <para>Type: <b>GUID</b></para>
3581+ /// <para>
3582+ /// Uniquely identifies the provider context. If the GUID is zero-initialized in the call to <c>FwpmProviderContextAdd2</c>, then
3583+ /// Base Filtering Engine (BFE) will generate one.
3584+ /// </para>
3585+ /// </summary>
3586+ public Guid providerContextKey ;
3587+
3588+ /// <summary>
3589+ /// <para>Type: <b><c>FWPM_DISPLAY_DATA0</c></b></para>
3590+ /// <para>Allows provider contexts to be annotated in a human-readable form. The <c>FWPM_DISPLAY_DATA0</c> structure is required.</para>
3591+ /// </summary>
3592+ public FWPM_DISPLAY_DATA0 displayData ;
3593+
3594+ /// <summary>
3595+ /// <para>Type: <b>UINT32</b></para>
3596+ /// <para>Possible values:</para>
3597+ /// <list type="table">
3598+ /// <listheader>
3599+ /// <description>Provider context flag</description>
3600+ /// <description>Meaning</description>
3601+ /// </listheader>
3602+ /// <item>
3603+ /// <description>FWPM_PROVIDER_CONTEXT_FLAG_PERSISTENT</description>
3604+ /// <description>The object is persistent, that is, it survives across BFE stop/start.</description>
3605+ /// </item>
3606+ /// <item>
3607+ /// <description>FWPM_PROVIDER_CONTEXT_FLAG_DOWNLEVEL</description>
3608+ /// <description>Reserved for internal use.</description>
3609+ /// </item>
3610+ /// </list>
3611+ /// </summary>
3612+ public FWPM_PROVIDER_CONTEXT_FLAG flags ;
3613+
3614+ /// <summary>
3615+ /// <para>Type: <b>GUID*</b></para>
3616+ /// <para>GUID of the policy provider that manages this object.</para>
3617+ /// </summary>
3618+ public GuidPtr providerKey ;
3619+
3620+ /// <summary>
3621+ /// <para>Type: <b><c>FWP_BYTE_BLOB</c></b></para>
3622+ /// <para>Optional provider-specific data that allows providers to store additional context info with the object.</para>
3623+ /// </summary>
3624+ public FWP_BYTE_BLOB providerData ;
3625+
3626+ /// <summary>
3627+ /// <para>Type: <b><c>FWPM_PROVIDER_CONTEXT_TYPE</c></b></para>
3628+ /// <para>The type of provider context.</para>
3629+ /// </summary>
3630+ public FWPM_PROVIDER_CONTEXT_TYPE type ;
3631+
3632+ /// <summary>The union of policies</summary>
3633+ public FWPM_PROVIDER_CONTEXT3_UNION union ;
3634+
3635+ /// <summary>The union of policies</summary>
3636+ [ StructLayout ( LayoutKind . Explicit , CharSet = CharSet . Unicode ) ]
3637+ public struct FWPM_PROVIDER_CONTEXT3_UNION
3638+ {
3639+ /// <summary>
3640+ /// <para>Type: <b><c>IPSEC_KEYING_POLICY1</c>*</b></para>
3641+ /// <para>Available when <b>type</b> is <b>FWPM_IPSEC_KEYING_CONTEXT</b>.</para>
3642+ /// </summary>
3643+ [ FieldOffset ( 0 ) ]
3644+ public StructPointer < IPSEC_KEYING_POLICY1 > keyingPolicy ;
3645+
3646+ /// <summary>
3647+ /// <para>Type: <b><c>IPSEC_TRANSPORT_POLICY2</c>*</b></para>
3648+ /// <para>Available when <b>type</b> is <b>FWPM_IPSEC_IKE_QM_TRANSPORT_CONTEXT</b>.</para>
3649+ /// </summary>
3650+ [ FieldOffset ( 0 ) ]
3651+ public StructPointer < IPSEC_TRANSPORT_POLICY2 > ikeQmTransportPolicy ;
3652+
3653+ /// <summary>
3654+ /// <para>Type: <b><c>IPSEC_TUNNEL_POLICY2</c>*</b></para>
3655+ /// <para>Available when <b>type</b> is <b>FWPM_IPSEC_IKE_QM_TUNNEL_CONTEXT</b>.</para>
3656+ /// </summary>
3657+ [ FieldOffset ( 0 ) ]
3658+ public ManagedStructPointer < IPSEC_TUNNEL_POLICY3 > ikeQmTunnelPolicy ;
3659+
3660+ /// <summary>
3661+ /// <para>Type: <b><c>IPSEC_TRANSPORT_POLICY2</c>*</b></para>
3662+ /// <para>[case()][unique]</para>
3663+ /// </summary>
3664+ [ FieldOffset ( 0 ) ]
3665+ public StructPointer < IPSEC_TRANSPORT_POLICY2 > authipQmTransportPolicy ;
3666+
3667+ /// <summary>
3668+ /// <para>Type: <b><c>IPSEC_TUNNEL_POLICY2</c>*</b></para>
3669+ /// <para>Available when <b>type</b> is <b>FWPM_IPSEC_AUTHIP_QM_TRANSPORT_CONTEXT</b>.</para>
3670+ /// </summary>
3671+ [ FieldOffset ( 0 ) ]
3672+ public ManagedStructPointer < IPSEC_TUNNEL_POLICY3 > authipQmTunnelPolicy ;
3673+
3674+ /// <summary>
3675+ /// <para>Type: <b><c>IKEEXT_POLICY2</c>*</b></para>
3676+ /// <para>Available when <b>type</b> is <b>FWPM_IPSEC_IKE_MM_CONTEXT</b>.</para>
3677+ /// </summary>
3678+ [ FieldOffset ( 0 ) ]
3679+ public StructPointer < IKEEXT_POLICY2 > ikeMmPolicy ;
3680+
3681+ /// <summary>
3682+ /// <para>Type: <b><c>IKEEXT_POLICY2</c>*</b></para>
3683+ /// <para>Available when <b>type</b> is <b>FWPM_IPSEC_AUTHIP_MM_CONTEXT</b>.</para>
3684+ /// </summary>
3685+ [ FieldOffset ( 0 ) ]
3686+ public StructPointer < IKEEXT_POLICY2 > authIpMmPolicy ;
3687+
3688+ /// <summary>
3689+ /// <para>Type: <b><c>FWP_BYTE_BLOB</c>*</b></para>
3690+ /// <para>Available when <b>type</b> is <b>FWPM_GENERAL_CONTEXT</b>.</para>
3691+ /// </summary>
3692+ [ FieldOffset ( 0 ) ]
3693+ public StructPointer < FWP_BYTE_BLOB > dataBuffer ;
3694+
3695+ /// <summary>
3696+ /// <para>Type: <b><c>FWPM_CLASSIFY_OPTIONS0</c>*</b></para>
3697+ /// <para>Available when <b>type</b> is <b>FWPM_CLASSIFY_OPTIONS_CONTEXT</b>.</para>
3698+ /// </summary>
3699+ [ FieldOffset ( 0 ) ]
3700+ public StructPointer < FWPM_CLASSIFY_OPTIONS0 > classifyOptions ;
3701+
3702+ /// <summary>
3703+ /// <para>Type: <b><c>IPSEC_TUNNEL_POLICY2</c>*</b></para>
3704+ /// <para>Available when <b>type</b> is <b>FWPM_IPSEC_IKEV2_QM_TUNNEL_CONTEXT</b>.</para>
3705+ /// </summary>
3706+ [ FieldOffset ( 0 ) ]
3707+ public ManagedStructPointer < IPSEC_TUNNEL_POLICY3 > ikeV2QmTunnelPolicy ;
3708+
3709+ /// <summary>
3710+ /// <para>Type: <b><c>IPSEC_TRANSPORT_POLICY2</c>*</b></para>
3711+ /// <para>Available when <b>type</b> is <b>FWPM_IPSEC_IKEV2_QM_TRANSPORT_CONTEXT</b>.</para>
3712+ /// </summary>
3713+ [ FieldOffset ( 0 ) ]
3714+ public StructPointer < IPSEC_TRANSPORT_POLICY2 > ikeV2QmTransportPolicy ;
3715+
3716+ /// <summary>
3717+ /// <para>Type: <b><c>IKEEXT_POLICY2</c>*</b></para>
3718+ /// <para>Available when <b>type</b> is <b>FWPM_IPSEC_IKEV2_MM_CONTEXT</b>.</para>
3719+ /// </summary>
3720+ [ FieldOffset ( 0 ) ]
3721+ public StructPointer < IKEEXT_POLICY2 > ikeV2MmPolicy ;
3722+
3723+ /// <summary>
3724+ /// <para>Type: <b><c>IPSEC_DOSP_OPTIONS0</c>*</b></para>
3725+ /// <para>Available when <b>type</b> is <b>FWPM_IPSEC_DOSP_CONTEXT</b>.</para>
3726+ /// </summary>
3727+ [ FieldOffset ( 0 ) ]
3728+ public StructPointer < IPSEC_DOSP_OPTIONS0 > idpOptions ;
3729+
3730+ /// <summary>
3731+ /// A pointer to a <c>FWPM_NETWORK_CONNECTION_POLICY_SETTINGS0</c> structure containing the number of network connection polices, and
3732+ /// a list of those policies formatted.
3733+ /// </summary>
3734+ [ FieldOffset ( 0 ) ]
3735+ public StructPointer < FWPM_NETWORK_CONNECTION_POLICY_SETTINGS0 > networkConnectionPolicy ;
3736+ }
3737+
3738+ /// <summary>
3739+ /// <para>Type: <b>UINT64</b></para>
3740+ /// <para>
3741+ /// LUID identifying the context. This is the context value stored in the <b>FWPS_FILTER1</b> structure for filters that reference a
3742+ /// provider context. The <b>FWPS_FILTER1</b> structure is documented in the WDK. This is additional information returned when
3743+ /// getting/enumerating objects.
3744+ /// </para>
3745+ /// </summary>
3746+ public ulong providerContextId ;
3747+ }
3748+
34983749 /// <summary>The <c>FWPM_PROVIDER_CONTEXT_CHANGE0</c> structure contains a change notification dispatched to subscribers.</summary>
34993750 /// <remarks>
35003751 /// <c>FWPM_PROVIDER_CONTEXT_CHANGE0</c> is a specific implementation of FWPM_PROVIDER_CONTEXT_CHANGE. See WFP Version-Independent Names
0 commit comments