Condividi tramite


Metodo IWDFDevice::P ostEvent (wudfddi.h)

[Avviso: UMDF 2 è la versione più recente di UMDF e sostituisce UMDF 1. Tutti i nuovi driver UMDF devono essere scritti usando UMDF 2. Nessuna nuova funzionalità viene aggiunta a UMDF 1 ed è disponibile un supporto limitato per UMDF 1 nelle versioni più recenti di Windows 10. I driver di Windows universali devono usare UMDF 2. Per altre informazioni, vedere Introduzione con UMDF.]

Il metodo PostEvent notifica in modo asincrono alle applicazioni in attesa dell'evento specificato da un driver.

Sintassi

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

Parametri

[in] EventGuid

GUID per l'evento. Il GUID è determinato dall'applicazione e dal driver ed è opaco al framework.

[in] EventType

Valore WDF_EVENT_TYPE tipizzato che identifica il tipo di evento. Nella versione corrente di UMDF, il driver deve impostare EventType su WdfEventBroadcast (1). WdfEventBroadcast indica che l'evento viene trasmesso. Le applicazioni possono sottoscrivere eventi di tipo WdfEventBroadcast. Per ricevere eventi di trasmissione, l'applicazione deve registrarsi per la notifica tramite la funzione Microsoft Win32 RegisterDeviceNotification . Gli eventi di tipo WdfEventBroadcast vengono esposti come eventi di tipo DBT_CUSTOMEVENT alle applicazioni.

[in] pbData

Puntatore a un buffer che contiene dati associati all'evento. NULL è un valore valido.

[in] cbDataSize

Dimensioni, in byte, di dati a cui pbData punta. Zero è un valore di dimensione valido se pbData è impostato su NULL.

Le dimensioni massime dei dati dell'evento sono leggermente inferiori a MAXUSHORT (64 KB). Il limite superiore preciso è ( 0xFFFF - FIELD_OFFSET(TARGET_DEVICE_CUSTOM_NOTIFICATION, CustomDataBuffer)).

Valore restituito

PostEvent restituisce uno dei valori seguenti:

Codice restituito Descrizione
S_OK
I dati dell'evento sono stati inviati correttamente al sistema operativo.
HRESULT_FROM_WIN32(ERROR_NOT_ENOUGH_MEMORY)
Le dimensioni dei dati specificate dal parametro cbDataSize sono maggiori delle dimensioni massime consentite.
E_INVALIDARG
Il parametro EventType non è impostato su WdfEventBroadcast (1).
E_OUTOFMEMORY

PostEvent non è riuscito a allocare memoria necessaria per il completamento.

 

PostEvent potrebbe anche restituire altri valori HRESULT.

Commenti

Quando il driver chiama IWDFDevice::P ostEvent per notificare all'applicazione richiesta di un evento, UMDF invia l'evento al sistema operativo. Il sistema operativo invia l'evento all'applicazione di richiesta in un'operazione asincrona. Se il sistema operativo non restituisce inizialmente alcun errore, il driver non riceve alcun errore (S_OK). Tuttavia, in seguito, se il sistema operativo riceve un errore mentre tenta di recapitare l'evento (probabilmente a causa di una condizione di memoria ridotta), il sistema operativo non riesce a informare il driver sull'errore. A causa della natura asincrona di questa notifica evento, il recapito dell'evento all'applicazione di richiesta non è garantito. Se le informazioni sugli eventi si perdono fino all'applicazione richiesta, l'applicazione deve essere in grado di recuperare dall'evento perso.

Per informazioni sulla creazione di eventi del dispositivo, vedere Uso di interfacce dispositivo nei driver UMDF.

Requisiti

Requisito Valore
Fine del supporto Non disponibile in UMDF 2.0 e versioni successive.
Piattaforma di destinazione Desktop
Versione UMDF minima 1.5
Intestazione wudfddi.h (include Wudfddi.h)
DLL WUDFx.dll

Vedi anche

FIELD_OFFSET

IWDFDevice

TARGET_DEVICE_CUSTOM_NOTIFICATION

WdfDevicePostEvent