Библиотека шаблонов 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 реализован полностью в файлах заголовков и предназначен для предоставления доступа к современному API Windows.

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

Льготы

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

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

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

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

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

    Примечание.

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

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

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

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

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

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

Практическое руководство. Обработка событий
Показывает, как использовать библиотеку шаблонов среда выполнения 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 Карты
HttpRequest Использует класс, определенный в пошаговом руководстве: Подключение использование задач и XML-http-запросов в контексте полного приложения UWP.

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

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

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

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

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

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

  • агрегат

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

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

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

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

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

  • внедрение OLE

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

  • COM+

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

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

ComPtr

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

RuntimeClass

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

Модуль

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

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

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

EventSource

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

AsyncBase

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

FtmBase

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

WeakRef

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

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

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

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

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

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