Библиотека шаблонов C++ среды выполнения Windows (WRL)

Библиотека шаблонов C++ среды выполнения Windows (WRL) — это библиотека шаблонов, которая предлагает низкоуровневый способ создания и использования компонентов среды выполнения Windows.

Примечание

WRL теперь заменен на c++/WinRT, стандартной проекции языка c++ 17 для среда выполнения Windows api. C++/WinRT доступна в Windows SDK начиная с версии 1803 (10.0.17134.0). C++/WinRT реализован полностью в файлах заголовков и предназначен для предоставления первого класса доступа к современным Windows API.

с помощью c++/WinRT можно использовать и создавать интерфейсы среда выполнения Windows api, используя любой стандартный компилятор C++ 17. C++/WinRT, как правило, работает лучше и создает меньше двоичных файлов, чем любой другой языковой параметр для среда выполнения Windows. Мы продолжим предоставлять поддержку C++/CX и WRL, но в новых приложениях настоятельно рекомендуется использовать C++/WinRT. См. дополнительные сведения о C++/WinRT.

Преимущества

библиотека шаблонов среда выполнения Windows C++ позволяет упростить реализацию и использование компонентов модели COM. Он предоставляет методы обслуживания, такие как подсчет ссылок, для управления временем существования объектов и проверки значений HRESULT, чтобы определить, завершилась ли операция успешно или неудачно. для успешного использования библиотеки шаблонов среда выполнения Windows C++ необходимо соблюдать следующие правила и методы.

C++/cx — это высокоуровневый языковой способ использования среда выполнения Windows компонентов. как библиотека шаблонов среда выполнения Windows c++, так и C++/cx упрощают написание кода для среда выполнения Windows, автоматически выполняя задачи обслуживания от вашего имени.

библиотека шаблонов среда выполнения Windows c++ и c++/cx предоставляют различные преимущества. ниже приведены некоторые причины, по которым вместо C++/cx может потребоваться использовать библиотеку шаблонов среда выполнения Windows c++.

  • среда выполнения Windows библиотека шаблонов C++ добавляет небольшую абстракцию по отношению к среда выполнения Windows двоичному интерфейсу приложения (ABI), предоставляя возможность управлять базовым кодом для более эффективного создания или использования api-интерфейсов среда выполнения Windows.

  • C++/CX представляет значения COM HRESULT как исключения. если вы настроили базу кода, использующую COM, или одну, которая не использует исключения, возможно, вы обнаружите, что среда выполнения Windows библиотека шаблонов C++ является более естественным способом работы с среда выполнения Windows, так как не нужно использовать исключения.

    Примечание

    библиотека шаблонов среда выполнения Windows C++ использует значения HRESULT и не создает исключения. кроме того, библиотека шаблонов C++ среда выполнения Windows использует интеллектуальные указатели и шаблон RAII, чтобы гарантировать, что объекты будут уничтожены правильно, когда код приложения создает исключение. Дополнительные сведения о смарт-указателях и RAII см. в разделе интеллектуальные указатели и объекты, собственные ресурсы (RAII).

  • назначение и проектирование библиотеки шаблонов среда выполнения Windows C++ — это библиотека ATL, которая представляет собой набор классов C++ на основе шаблонов, упрощающих программирование COM-объектов. поскольку среда выполнения Windows библиотека шаблонов c++ использует стандартный c++ для создания оболочки среда выполнения Windows, можно легко переносить и взаимодействовать с множеством существующих COM-компонентов, написанных в ATL, на среда выполнения Windows. если вы уже знакомы с библиотекой ATL, может оказаться, что среда выполнения Windows программирование библиотеки шаблонов C++ будет проще.

Приступая к работе

ниже приведены некоторые ресурсы, которые могут помочь вам сразу же приступить к работе с библиотекой шаблонов среда выполнения Windows C++.

Практическое руководство. Активация и использование компонента среды выполнения Windows
показывает, как использовать библиотеку шаблонов среда выполнения Windows C++ для инициализации среда выполнения Windows и активации и использования компонента среда выполнения Windows.

Практическое руководство. Завершение асинхронных операций
демонстрирует использование библиотеки шаблонов среда выполнения Windows C++ для запуска асинхронных операций и выполнения работы по завершении операций.

Практическое руководство. Обработка событий
показывает, как использовать библиотеку шаблонов среда выполнения Windows C++ для подписки на события объекта среда выполнения Windows и управления им.

Пошаговое руководство. Создание приложения UWP с использованием WRL и Media Foundation
Узнайте, как создать приложение UWP, которое использует Microsoft Media Foundation.

Практическое руководство. Создание классического компонента COM
демонстрирует использование библиотеки шаблонов среда выполнения Windows C++ для создания базового com-компонента и базового способа регистрации и использования com-компонента из классического приложения.

Как напрямую создать экземпляры компонентов WRL
Сведения об использовании функций Microsoft::WRL::Make и Microsoft::WRL::Details::MakeAndInitialize для создания экземпляра компонента из определяющего его модуля.

Практическое руководство. Использование winmdidl.exe и midlrt.exe для создания H-файлов из метаданных Windows
Демонстрация использования пользовательских компонент среды выполнения Windows из WRL путем создания IDL-файла из метаданных WINMD.

Пошаговое руководство. подключение с помощью задач и HTTP-запросов XML
Показывает, как использовать интерфейсы IXMLHTTPRequest2 и IXMLHTTPRequest2Callback вместе с задачами для отправки запросов HTTP GET и POST к веб-службе в приложении UWP.

Пример приложения Bing Maps Trip Optimizer
HttpRequestИспользует класс, определенный в пошаговом руководстве: подключение с помощью задач и HTTP-запросов XML в контексте полного приложения UWP.

Создание компонента DLL среды выполнения Windows с использованием примера C++
показывает, как использовать библиотеку шаблонов C++ среда выполнения Windows, чтобы создать внутрипроцессный компонент DLL и использовать его из C++/cx, JavaScript и C#.

Пример игры DirectX Marble Maze
демонстрирует использование библиотеки шаблонов среда выполнения Windows C++ для управления временем существования компонентов COM, таких как DirectX и Media Foundation в контексте полной трехмерной игры.

Всплывающие уведомления из классических приложений
Демонстрирует, как отправлять всплывающие уведомления из классического приложения.

сравнение библиотеки шаблонов C++ среда выполнения Windows с ATL

библиотека шаблонов C++ среда выполнения Windows похожа на библиотеку atl, поскольку ее можно использовать для создания небольших и быстрых COM-объектов. среда выполнения Windows библиотека шаблонов C++ и ATL также совместно используют такие понятия, как определение объектов в модулях, явная регистрация интерфейсов и открытие создания объектов с помощью фабрик. если вы знакомы с библиотекой ATL, возможно, вам будет удобнее среда выполнения Windows библиотеку шаблонов C++.

библиотека шаблонов C++ среда выполнения Windows поддерживает функции COM, необходимые для приложений UWP. Поэтому она отличается от библиотеки ATL, поскольку в последней нет непосредственной поддержки таких функций модели COM, как:

  • aggregation

  • стандартные реализации

  • сдвоенные интерфейсы (IDispatch)

  • стандартные интерфейсы перечислителя

  • точки подключения

  • перемещаемые интерфейсы

  • внедрение OLE

  • Элементы управления ActiveX

  • COM+

Основные понятия

среда выполнения Windows библиотека шаблонов C++ предоставляет типы, представляющие несколько основных понятий. Эти типы описаны в следующих разделах.

ComPtr

типComPtr — тип интеллектуального указателя , который представляет интерфейс, определяемый параметром шаблона. Тип ComPtr используется для объявления переменной, которая может получить доступ к членам объекта, производного от интерфейса. ComPtr автоматически поддерживает счетчик ссылок для указателя базового интерфейса и освобождает интерфейс, когда счетчик ссылок становится равен нулю.

RuntimeClass

RuntimeClass представляет собой экземпляр класса, который наследуется от набора указанных интерфейсов. RuntimeClassобъект может предоставить сочетание поддержки для одного или нескольких среда выполнения Windows COM-интерфейсов или слабой ссылки на компонент.

Модуль

Module представляет коллекцию связанных объектов. Объект Module управляет фабриками класса, создающими объекты, и регистрацией, которая позволяет другим приложениям использовать объект.

Обратный вызов

Функция Callback создает объект, функция-член которого является обработчиком событий (метод обратного вызова). Функция Callback используется для записи асинхронных операций.

EventSource

EventSource используется для управления обработчиками событий делегатов . используйте среда выполнения Windows библиотеку шаблонов C++, чтобы реализовать делегат и использовать EventSource для добавления, удаления и вызова делегатов.

AsyncBase

метод asyncbase предоставляет виртуальные методы, представляющие модель асинхронного программирования среда выполнения Windows. Переопределите члены этого класса для создания пользовательского класса, который может запускать и останавливать асинхронную операцию, а также проверять ход ее выполнения.

FtmBase

FtmBase представляет объект маршаллера в режиме свободного потока. FtmBase создает общую таблицу интерфейса (GIT) и помогает управлять маршалингом и прокси-объектами.

WeakRef

WeakRef — тип интеллектуального указателя, представляющий слабую ссылкуна объект, который может быть доступен или недоступен. WeakRefобъект может использоваться только среда выполнения Windows, а не классической моделью COM.

Объект WeakRef обычно представляет объект, наличием которого управляет внешний поток или приложение. Например, объект WeakRef может ссылаться на объект файла. При открывании файла WeakRef является допустимым и файл, на который он ссылается, доступен. Однако после закрытия файла WeakRef перестает быть допустимым и файл становится недоступным.

Основные API по категориям
выделяет основные типы, функции и макросы библиотеки шаблонов C++ среда выполнения Windows.

Ссылки
содержит справочные сведения для библиотеки шаблонов среда выполнения Windows C++.

Краткий справочник (C++/CX)
краткое описание функций C++/cx, которые поддерживают среда выполнения Windows.

Использование компонентов среды выполнения Windows в Visual C++
показывает, как использовать C++/cx для создания базового среда выполнения Windows компонента.