VpnChannel.Start 方法

定义

创建 VPN 插件要使用的 VPN 通道。 它还为客户端计算机中的应用程序创建 L3 网络接口,以便能够查看公司网络。

public:
 virtual void Start(IVectorView<HostName ^> ^ assignedClientIPv4list, IVectorView<HostName ^> ^ assignedClientIPv6list, VpnInterfaceId ^ vpnInterfaceId, VpnRouteAssignment ^ routeScope, VpnNamespaceAssignment ^ namespaceScope, unsigned int mtuSize, unsigned int maxFrameSize, bool optimizeForLowCostNetwork, Platform::Object ^ mainOuterTunnelTransport, Platform::Object ^ optionalOuterTunnelTransport) = Start;
/// [Windows.Foundation.Metadata.Overload("Start")]
void Start(IVectorView<HostName> const& assignedClientIPv4list, IVectorView<HostName> const& assignedClientIPv6list, VpnInterfaceId const& vpnInterfaceId, VpnRouteAssignment const& routeScope, VpnNamespaceAssignment const& namespaceScope, uint32_t const& mtuSize, uint32_t const& maxFrameSize, bool const& optimizeForLowCostNetwork, IInspectable const& mainOuterTunnelTransport, IInspectable const& optionalOuterTunnelTransport);
[Windows.Foundation.Metadata.Overload("Start")]
public void Start(IReadOnlyList<HostName> assignedClientIPv4list, IReadOnlyList<HostName> assignedClientIPv6list, VpnInterfaceId vpnInterfaceId, VpnRouteAssignment routeScope, VpnNamespaceAssignment namespaceScope, uint mtuSize, uint maxFrameSize, bool optimizeForLowCostNetwork, object mainOuterTunnelTransport, object optionalOuterTunnelTransport);
function start(assignedClientIPv4list, assignedClientIPv6list, vpnInterfaceId, routeScope, namespaceScope, mtuSize, maxFrameSize, optimizeForLowCostNetwork, mainOuterTunnelTransport, optionalOuterTunnelTransport)
Public Sub Start (assignedClientIPv4list As IReadOnlyList(Of HostName), assignedClientIPv6list As IReadOnlyList(Of HostName), vpnInterfaceId As VpnInterfaceId, routeScope As VpnRouteAssignment, namespaceScope As VpnNamespaceAssignment, mtuSize As UInteger, maxFrameSize As UInteger, optimizeForLowCostNetwork As Boolean, mainOuterTunnelTransport As Object, optionalOuterTunnelTransport As Object)

参数

assignedClientIPv4list

IVectorView<HostName>

IReadOnlyList<HostName>

指向 IVectorView 的指针< Windows.Networking.HostName *> 向量,用于指定 VPN 服务器分配给 VPN 客户端的 IPv4 地址。 应在 VPN L3 接口上设置地址。 如果 null,则使用 DHCPv4。

assignedClientIPv6list

IVectorView<HostName>

IReadOnlyList<HostName>

指向 Windows.Networking.HostName 结构的指针,该结构指定 VPN 服务器分配给 VPN 客户端的 IPv6 地址,应在 VPN L3 接口上设置该地址。 如果 null,则使用 DHCPv6 或 RD。

vpnInterfaceId
VpnInterfaceId

指向 VpnInterfaceId 的指针。

routeScope
VpnRouteAssignment

指向 Windows.Networking.VpnRouteAssignment 类的指针,该类表示应关联/不与 VPN 接口关联的路由

namespaceScope
VpnNamespaceAssignment

指向 Windows.Networking.DomainNameAssignment 类的指针,该类表示与 VPN 通道关联的名称前缀列表,包括其 DNS 和代理服务器。

mtuSize
UInt32

unsigned int

uint32_t

指定 VPN L3 网络接口的 MTU 大小的 UINT16 值。 这也是接收池中 IVpnPacketBuffers 的大小。 此值应配置为最多 1400。

maxFrameSize
UInt32

unsigned int

uint32_t

一个 UINT16 值,该值指定 VPN 协议封装定义的帧的最大大小,而不计算 outerTunnelTransport。 这也是发送池中 IVpnPacketBuffers 的大小。 此值应配置为 mtuSize + [封装标头的大小],并且应 <=1500。 如果 mtuSize 或封装标头大小大于 1500,则应减小,因为平台将帧大小限制为 1500。

optimizeForLowCostNetwork
Boolean

bool

一个 布尔值 指定 VPN 框架是否应监视和使用低成本网络,因为它们可用。 如果 TRUE VPN 框架将调用连接回调到 VPN 插件,以在旧网络成本高且新的低成本网络可用时重新连接它。

mainOuterTunnelTransport
Object

Platform::Object

IInspectable

用于套接字传输的 IInspectable 对象。 此对象可以是 Windows.Networking.Sockets.DatagramSocketWindows.Networking.Sockets.StreamSocket。 此套接字控制与 VPN 服务器的连接,并用于发送封装的 IP 数据包和接收封装的数据。

optionalOuterTunnelTransport
Object

Platform::Object

IInspectable

用于套接字传输的可选 IInspectable 对象。 此对象可以是 Windows.Networking.Sockets.DatagramSocketWindows.Networking.Sockets.StreamSocket。 此套接字控制与 VPN 服务器的连接,并用于发送封装的 IP 数据包和接收封装的数据。

属性

Windows 要求

应用功能
networkingVpnProvider

注解

如果函数成功,则返回值 S_OK,否则该函数将返回描述特定失败的错误 hresult 值。 如果插件未连接,则错误将 E_ACCESSDENIED

注意

在连接的 VPN 插件外部调用此 API 将失败,因为 VPN 插件与系统之间的活动和交互由 VPN 配置文件控制。 每个进程只能有一个 VPN 配置文件,因为 VPN 插件只映射了一个 VPN 配置文件,如果调用方要创建多个配置文件对象,它们都将引用相同的设置。

成功后,VPN 框架将转移 outertTunnelTransport 的所有权。 使用相同参数多次调用此方法将不起作用。 使用参数值变体多次调用此方法可确保通道使用最新值进行更新,而不会对其他属性造成任何中断。

每个进程只能有一个 VPN 通道,因此 VPN 插件只能为其分配一个 VPN 通道。 mtuSize 必须始终小于 maxFrameSize。

适用于