Поделиться через


Общий доступ к подключению к Интернету

В этом документе описывается, как можно включить общий доступ к интернет-подключениям (ICS) в Windows IoT Базовая. Разработчики могут использовать API NetworkTetheringManager для программной настройки ICS. API описан в классе NetworkOperatorTetheringManager . При использовании одного из Windows 10 IoT Базовая образ выпуска ICS также можно настроить с помощью портала устройств.

Важно!

Сначала необходимо создать профиль Wi-Fi, а в манифест необходимо добавить следующее: <DeviceCapability Name="wiFiControl" />

Руководство по совместному использованию см. в документе о выпуске Windows IoT Базовая за ноябрь 2015 г .

Настройка ICS с помощью портала устройств

См. документацию на портале устройств Windows (WDP).

Пример кода ICS

В приведенном ниже примере кода показано, как api NetworkOperatorTetheringManager используется для начала совместного использования ethernet-подключения через Wi-Fi. Метод CreateFromConnectionProfile принимает аргументы, указывающие открытый и закрытый интерфейсы. В любых случаях неправильной настройки, например при отключении Wi-Fi радио или ограниченном подключении Ethernet, при попытке начать общий доступ к Интернету передается соответствующий код ошибки, относящийся к этому сценарию.

using Windows.Networking.NetworkOperators;
using Windows.Networking.Connectivity; 
 
// Find the Ethernet profile (IANA Type 6)
var connectionProfiles = NetworkInformation.GetConnectionProfiles(); 
var ethernetConnectionProfile = connectionProfiles.FirstOrDefault(x => x.NetworkAdapter.IanaInterfaceType == 6); 

// Find an 802.11 wireless network interface (IANA Type 71)
var wirelessConnectionProfile = connectionProfiles.FirstOrDefault(x => x.NetworkAdapter.IanaInterfaceType == 71);
var targetNetworkAdapter = wirelessConnectionProfile.NetworkAdapter;

if (ethernetConnectionProfile != null && targetNetworkAdapter != null)
{
    var tetheringManager = NetworkOperatorTetheringManager.CreateFromConnectionProfile(ethernetConnectionProfile, targetNetworkAdapter); 

    var result = await tetheringManager.StartTetheringAsync(); 
    if (result.Status == TetheringOperationStatus.Success)
    {
        UpdateUI();
    }
    else
    {
        ProcessTetheringError(result);
    }
}