Método IWDFDevice::P ostEvent (wudfddi.h)

[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. Para obtener más información, consulta Introducción con UMDF.

El método PostEvent notifica de forma asincrónica a las aplicaciones que están esperando el evento especificado de un controlador.

Sintaxis

HRESULT PostEvent(
  [in] REFGUID        EventGuid,
  [in] WDF_EVENT_TYPE EventType,
  [in] BYTE           *pbData,
  [in] DWORD          cbDataSize
);

Parámetros

[in] EventGuid

GUID del evento. El GUID viene determinado por la aplicación y el controlador y es opaco para el marco.

[in] EventType

Valor WDF_EVENT_TYPE con tipo que identifica el tipo de evento. En la versión actual de UMDF, el controlador debe establecer EventType en WdfEventBroadcast (1). WdfEventBroadcast indica que el evento se transmite. Las aplicaciones pueden suscribirse a eventos de tipo WdfEventBroadcast. Para recibir eventos de difusión, la aplicación debe registrarse para recibir notificaciones a través de la función RegisterDeviceNotification de Microsoft Win32. Los eventos de tipo WdfEventBroadcast se exponen como eventos de tipo DBT_CUSTOMEVENT a las aplicaciones.

[in] pbData

Puntero a un búfer que contiene datos asociados al evento. NULL es un valor válido.

[in] cbDataSize

Tamaño, en bytes, de datos a los que apunta pbData . Cero es un valor de tamaño válido si pbData está establecido en NULL.

El tamaño máximo de los datos del evento es ligeramente menor que MAXUSHORT (64 KB). El límite superior preciso es (0xFFFF : FIELD_OFFSET(TARGET_DEVICE_CUSTOM_NOTIFICATION, CustomDataBuffer)).

Valor devuelto

PostEvent devuelve uno de los siguientes valores:

Código devuelto Descripción
S_OK
Los datos del evento se enviaron correctamente al sistema operativo.
HRESULT_FROM_WIN32(ERROR_NOT_ENOUGH_MEMORY)
El tamaño de datos que especifica el parámetro cbDataSize es mayor que el tamaño máximo permitido.
E_INVALIDARG
El parámetro EventType no se establece en WdfEventBroadcast (1).
E_OUTOFMEMORY

PostEvent no pudo asignar memoria necesaria para que se complete.

 

PostEvent también puede devolver otros valores HRESULT.

Comentarios

Cuando el controlador llama a IWDFDevice::P ostEvent para notificar a la aplicación solicitante sobre un evento, UMDF envía el evento al sistema operativo. El sistema operativo envía el evento a la aplicación solicitante en una operación asincrónica. Si el sistema operativo inicialmente no devuelve ningún error, el controlador no recibe ningún error (S_OK). Sin embargo, más adelante, si el sistema operativo recibe un error mientras intenta entregar el evento (posiblemente debido a una condición de memoria baja), el sistema operativo no puede informar al controlador sobre el error. Debido a la naturaleza asincrónica de esta notificación de eventos, no se garantiza la entrega del evento a la aplicación solicitante. Si la información del evento se pierde en su camino hasta la aplicación solicitante, la aplicación debe poder recuperarse del evento perdido.

Para obtener información sobre cómo crear eventos de dispositivo, consulte Uso de interfaces de dispositivo en controladores UMDF.

Requisitos

Requisito Value
Finalización del soporte técnico No disponible en UMDF 2.0 y versiones posteriores.
Plataforma de destino Escritorio
Versión mínima de UMDF 1.5
Encabezado wudfddi.h (incluya Wudfddi.h)
Archivo DLL WUDFx.dll

Consulte también

FIELD_OFFSET

IWDFDevice

TARGET_DEVICE_CUSTOM_NOTIFICATION

WdfDevicePostEvent