Отсутствует класс ShutdownManager в приложении UWP на основе C ++? - PullRequest
0 голосов
/ 03 апреля 2019

В настоящее время я играю с Windows IoT Core и пытаюсь разработать приложение на основе C ++ для Raspberry Pi 3b. Я хочу перезагрузить / выключить Pi из приложения, но я не уверен, как мне это сделать.

В справочнике UWP API перечислены C # Windows.System , что соответствует C ++ Windows :: System. Но, похоже, что не все классы доступны в C ++. Образцы UWP (C #) используют класс ShutdownManager для перезагрузки и завершения работы, но его нет в пространстве имен C ++. Теперь я не уверен, как я должен реализовать эту функциональность, используя API. Есть ли другие способы решить эту проблему для C ++?

Решение: Мне не хватало Windows IoT Extensions для UWP . Они должны быть добавлены вручную в Visual Studio, щелкнув правой кнопкой мыши Project, затем Add -> Reference -> Universal Windows -> Extensions. Теперь у меня есть доступ к пространству имен, и я смог перезагрузить и выключить мое устройство.

1 Ответ

0 голосов
/ 04 апреля 2019

Но кажется, что не все классы доступны в C ++.

Означало ли это, что при сборке проекта C ++ UWP он не может быть успешно собран или при запуске приложенияна устройстве возникло исключение?

API-интерфейс ShutdownManager доступен в C ++, он действительно включен в пространство имен Windows :: System, см. этот документ .И обратите внимание, что:

Этот API требует использования IoT systemManagement и включения iot в список IgnorableNamespaces .Пользователи могут добавить следующее в свой Package.appmanifest : и добавить iot в свой существующий список IgnorableNamespaces.

Следующий код прекрасно работает на моем устройстве.

TimeSpan ts;
ts.Duration = 1000;
ShutdownManager::BeginShutdown(ShutdownKind::Shutdown, ts);
...