Skip to content

Commit eba0287

Browse files
author
dahall
committed
Added new FwpUClnt elements (#525)
1 parent 6e0d2b3 commit eba0287

File tree

3 files changed

+538
-6
lines changed

3 files changed

+538
-6
lines changed

PInvoke/FwpUClnt/FwpMTypes.cs

Lines changed: 251 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

PInvoke/FwpUClnt/FwpMU.Func1.cs

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1296,6 +1296,111 @@ public static Win32Error FwpmConnectionGetById0([In] HFWPENG engineHandle, ulong
12961296
public static extern Win32Error FwpmConnectionGetSecurityInfo0([In] HFWPENG engineHandle, [In] SECURITY_INFORMATION securityInfo,
12971297
out PSID sidOwner, out PSID sidGroup, out PACL dacl, out PACL sacl, out SafeFwpmMem securityDescriptor);
12981298

1299+
/// <summary>
1300+
/// The TCP/IP stack supports destination address-based routing for outbound connections. <b>FwpmConnectionPolicyAdd0API</b> allows you
1301+
/// to configure more expressive routing policies for outbound connections, and thereby to enable more complex scenarios such as source
1302+
/// address-based routing, process-based routing, port-based routing, and others. A connection policy consists of an array of match
1303+
/// conditions, an array of route settings, and an associated weight. You can configure multiple policies, and they are evaluated based
1304+
/// on their configured weights for an outbound connection (a higher weight takes precedence). The route setting of the first policy
1305+
/// whose conditions (ANDed) matches the outbound connection is applied.
1306+
/// </summary>
1307+
/// <param name="engineHandle">
1308+
/// <para>Type: _In_ <b><c>HANDLE</c></b></para>
1309+
/// <para>A handle to an open session with the filter engine. To open a session with the filter engine, call <c>FwpmEngineOpen0</c>.</para>
1310+
/// </param>
1311+
/// <param name="connectionPolicy">
1312+
/// <para>Type: _In_ <b>const <c>FWPM_PROVIDER_CONTEXT3</c>*</b></para>
1313+
/// <para>The state associated with a provider context.</para>
1314+
/// </param>
1315+
/// <param name="ipVersion">
1316+
/// <para>Type: _In_ <b><c>FWP_IP_VERSION</c></b></para>
1317+
/// <para>IP version of the traffic.</para>
1318+
/// </param>
1319+
/// <param name="weight">
1320+
/// <para>Type: _In_ <b><c>UINT64</c></b></para>
1321+
/// <para>Specifies the weight that this Trusted Intermediary Agent (TIA) should be given compared to any peers.</para>
1322+
/// </param>
1323+
/// <param name="numFilterConditions">
1324+
/// <para>Type: _In_ <b><c>UINT32</c></b></para>
1325+
/// <para>The number of elements in filterConditions.</para>
1326+
/// </param>
1327+
/// <param name="filterConditions">
1328+
/// <para>Type: _In_reads_(numFilterConditions) <b>const <c>FWPM_FILTER_CONDITION0</c>*</b></para>
1329+
/// <para>A filter condition that must be true for the action to be taken.</para>
1330+
/// <para>
1331+
/// Of the possible match conditions (see <c>Filtering condition identifiers</c>), the ones in the following list are supported by
1332+
/// <b>FwpmConnectionPolicyAdd0</b>. Set these values in <b>FWPM_FILTER_CONDITION0::fieldKey</b>.
1333+
/// </para>
1334+
/// <list type="bullet">
1335+
/// <item>
1336+
/// <description><b>FWPM_CONDITION_ALE_APP_ID</b></description>
1337+
/// </item>
1338+
/// <item>
1339+
/// <description><b>FWPM_CONDITION_ALE_USER_ID</b></description>
1340+
/// </item>
1341+
/// <item>
1342+
/// <description><b>FWPM_CONDITION_IP_LOCAL_ADDRESS</b></description>
1343+
/// </item>
1344+
/// <item>
1345+
/// <description><b>FWPM_CONDITION_IP_LOCAL_ADDRESS_TYPE</b></description>
1346+
/// </item>
1347+
/// <item>
1348+
/// <description><b>FWPM_CONDITION_IP_LOCAL_PORT</b></description>
1349+
/// </item>
1350+
/// <item>
1351+
/// <description><b>FWPM_CONDITION_IP_PROTOCOL</b></description>
1352+
/// </item>
1353+
/// <item>
1354+
/// <description><b>FWPM_CONDITION_IP_REMOTE_ADDRESS</b></description>
1355+
/// </item>
1356+
/// <item>
1357+
/// <description><b>FWPM_CONDITION_IP_DESTINATION_ADDRESS_TYPE</b></description>
1358+
/// </item>
1359+
/// <item>
1360+
/// <description><b>FWPM_CONDITION_IP_REMOTE_PORT</b></description>
1361+
/// </item>
1362+
/// <item>
1363+
/// <description><b>FWPM_CONDITION_FLAGS</b></description>
1364+
/// </item>
1365+
/// <item>
1366+
/// <description><b>FWPM_CONDITION_ALE_ORIGINAL_APP_ID</b></description>
1367+
/// </item>
1368+
/// <item>
1369+
/// <description><b>FWPM_CONDITION_ALE_PACKAGE_ID</b></description>
1370+
/// </item>
1371+
/// <item>
1372+
/// <description><b>FWPM_CONDITION_COMPARTMENT_ID</b></description>
1373+
/// </item>
1374+
/// </list>
1375+
/// </param>
1376+
/// <param name="sd">
1377+
/// <para>Type: _In_opt_ <b><c>PSECURITY_DESCRIPTOR</c></b></para>
1378+
/// <para>The security information.</para>
1379+
/// </param>
1380+
/// <remarks>
1381+
/// <para>These are the supported route settings (see <c>FWP_NETWORK_CONNECTION_POLICY_SETTING_TYPE</c>):</para>
1382+
/// <para>
1383+
/// <b>FWP_NETWORK_CONNECTION_POLICY_SOURCE_ADDRESS</b>. The source address to use for the connection. The value should be a
1384+
/// <b>FWP_UINT32</b> for an IPv4 address, and a <b>FWP_BYTE_ARRAY16_TYPE</b> for an IPv6 address.
1385+
/// </para>
1386+
/// <para>
1387+
/// <b>FWP_NETWORK_CONNECTION_POLICY_NEXT_HOP_INTERFACE</b>. The LUID of the outgoing interface to use for the connection. The value
1388+
/// should be a <b>FWP_UINT64</b>.
1389+
/// </para>
1390+
/// <para>
1391+
/// <b>FWP_NETWORK_CONNECTION_POLICY_NEXT_HOP</b>. The nexthop address (or gateway) to use for the connection. The value should be a
1392+
/// <b>FWP_UINT32</b> for an IPv4 address, and a <b>FWP_BYTE_ARRAY16_TYPE</b> for an IPv6 address.
1393+
/// </para>
1394+
/// </remarks>
1395+
// https://learn.microsoft.com/en-us/windows/win32/api/fwpmu/nf-fwpmu-fwpmconnectionpolicyadd0 DWORD FwpmConnectionPolicyAdd0( HANDLE
1396+
// engineHandle, const FWPM_PROVIDER_CONTEXT3 *connectionPolicy, FWP_IP_VERSION ipVersion, UINT64 weight, UINT32 numFilterConditions,
1397+
// const FWPM_FILTER_CONDITION0 *filterConditions, PSECURITY_DESCRIPTOR sd );
1398+
[PInvokeData("fwpmu.h", MSDNShortId = "NF:fwpmu.FwpmConnectionPolicyAdd0")]
1399+
[DllImport(Lib_Fwpuclnt, SetLastError = false, ExactSpelling = true)]
1400+
public static extern Win32Error FwpmConnectionPolicyAdd0([In] HFWPENG engineHandle, in FWPM_PROVIDER_CONTEXT3 connectionPolicy, FWP_IP_VERSION ipVersion,
1401+
ulong weight, uint numFilterConditions, [In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 4)] FWPM_FILTER_CONDITION0[] filterConditions,
1402+
[In, Optional] PSECURITY_DESCRIPTOR sd);
1403+
12991404
/// <summary>
13001405
/// The <c>FwpmConnectionSetSecurityInfo0</c> function sets specified security information in the security descriptor for a connection
13011406
/// object change event.

0 commit comments

Comments
 (0)