Ejemplo de asociación de interfaces de devolución de llamada
Advertencia
UMDF 2 es la versión más reciente de UMDF y sustituye a UMDF 1. Todos los controladores UMDF nuevos deben escribirse con UMDF 2. No se agregan nuevas características a UMDF 1 y hay compatibilidad limitada con UMDF 1 en versiones más recientes de Windows 10. Los controladores universales de Windows deben usar UMDF 2.
Los ejemplos de UMDF 1 archivados se pueden encontrar en la actualización de ejemplos de controladores de Windows 11, versión 22H2 - mayo de 2022.
Para obtener más información, consulta Introducción con UMDF.
En el ejemplo de código siguiente se muestra cómo un controlador implementa un método create-instance que el controlador usa para crear el objeto de devolución de llamada del dispositivo. El controlador asigna el contexto de devolución de llamada y asocia el IUnknown proporcionado a una o varias interfaces de devolución de llamada. Posteriormente, el marco puede usar QueryInterface para detectar las interfaces de devolución de llamada compatibles con el controlador.
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;
}