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

[Aviso: UMDF 2 é a versão mais recente do UMDF e substitui UMDF 1. Todos os novos drivers UMDF devem ser gravados usando UMDF 2. Nenhum novo recurso está sendo adicionado ao UMDF 1 e há suporte limitado para UMDF 1 em versões mais recentes do Windows 10. Drivers universais do Windows devem usar UMDF 2. Para obter mais informações, consulte Introdução com UMDF.]

O método PostEvent notifica de forma assíncrona os aplicativos que estão aguardando o evento especificado de um driver.

Sintaxe

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

Parâmetros

[in] EventGuid

O GUID do evento. O GUID é determinado pelo aplicativo e pelo driver e é opaco para a estrutura.

[in] EventType

Um valor de tipo WDF_EVENT_TYPE que identifica o tipo de evento. Na versão atual do UMDF, o driver deve definir EventType como WdfEventBroadcast (1). WdfEventBroadcast indica que o evento é transmitido. Os aplicativos podem assinar eventos do tipo WdfEventBroadcast. Para receber eventos de difusão, o aplicativo deve se registrar para notificação por meio da função RegisterDeviceNotification do Microsoft Win32. Os eventos do tipo WdfEventBroadcast são expostos como eventos do tipo DBT_CUSTOMEVENT para aplicativos.

[in] pbData

Um ponteiro para um buffer que contém dados associados ao evento. NULL é um valor válido.

[in] cbDataSize

O tamanho, em bytes, dos dados para os quais pbData aponta. Zero será um valor de tamanho válido se pbData estiver definido como NULL.

O tamanho máximo dos dados de evento é ligeiramente menor que MAXUSHORT (64 KB). O limite superior preciso é (0xFFFF - FIELD_OFFSET(TARGET_DEVICE_CUSTOM_NOTIFICATION, CustomDataBuffer)).

Retornar valor

PostEvent retorna um dos seguintes valores:

Código de retorno Descrição
S_OK
Os dados do evento foram enviados com êxito para o sistema operacional.
HRESULT_FROM_WIN32(ERROR_NOT_ENOUGH_MEMORY)
O tamanho dos dados especificado pelo parâmetro cbDataSize é maior que o tamanho máximo permitido.
E_INVALIDARG
O parâmetro EventType não está definido como WdfEventBroadcast (1).
E_OUTOFMEMORY

O PostEvent não pôde alocar a memória necessária para que ela fosse concluída.

 

PostEvent também pode retornar outros valores HRESULT.

Comentários

Quando o driver chama IWDFDevice::P ostEvent para notificar o aplicativo solicitante sobre um evento, o UMDF envia o evento para o sistema operacional. O sistema operacional envia o evento para o aplicativo solicitante em uma operação assíncrona. Se o sistema operacional inicialmente não retornar nenhum erro, o driver não receberá nenhum erro (S_OK). No entanto, posteriormente, se o sistema operacional receber um erro enquanto tenta entregar o evento (possivelmente devido a uma condição de memória baixa), o sistema operacional não poderá informar o driver sobre o erro. Devido à natureza assíncrona dessa notificação de evento, a entrega do evento para o aplicativo solicitante não é garantida. Se as informações do evento forem perdidas no caminho até o aplicativo solicitante, o aplicativo deverá ser capaz de se recuperar do evento perdido.

Para obter informações sobre como criar eventos de dispositivo, consulte Usando interfaces de dispositivo em drivers UMDF.

Requisitos

Requisito Valor
Fim do suporte Indisponível no UMDF 2.0 e posterior.
Plataforma de Destino Área de Trabalho
Versão mínima do UMDF 1.5
Cabeçalho wudfddi.h (include Wudfddi.h)
DLL WUDFx.dll

Confira também

FIELD_OFFSET

IWDFDevice

TARGET_DEVICE_CUSTOM_NOTIFICATION

WdfDevicePostEvent