Пример связывания интерфейсов обратного вызова
Предупреждение
UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. Новые функции не добавляются в UMDF 1, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2.
Архивные примеры UMDF 1 можно найти в Windows 11 версии 22H2 — обновление примеров драйверов за май 2022 г.
Дополнительные сведения см. в разделе начало работы с помощью UMDF.
В следующем примере кода показано, как драйвер реализует метод создания экземпляра, который драйвер использует для создания объекта обратного вызова устройства. Драйвер выделяет контекст обратного вызова и связывает предоставленный интерфейс IUnknown с одним или несколькими интерфейсами обратного вызова. Впоследствии платформа может использовать QueryInterface для обнаружения интерфейсов обратного вызова, поддерживаемых драйвером.
static HRESULT CreateInstance(
IUnknown **ppUnknown,
IWDFDeviceInitialize *pDeviceInit,
HANDLE CompletionPort
) {
...
// Allocate the callback context
CMyDevice *pMyDevice = new CMyDevice();
...
HRESULT hr;
// Discover the callback interface
hr = pMyDevice->QueryInterface(
__uuidof(IUnknown),
(void **) ppUnknown
);
...
return hr;
}