Compartilhar via


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

[Aviso: UMDF 2 é a versão mais recente do UMDF e substitui o UMDF 1. Todos os novos drivers UMDF devem ser gravados usando UMDF 2. Nenhum recurso novo está sendo adicionado ao UMDF 1 e há suporte limitado para UMDF 1 em versões mais recentes do Windows 10. Os drivers universais do Windows devem usar o UMDF 2. Para obter mais informações, consulte Introdução aoda 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 WDF_EVENT_TYPEdigitado 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 WdfEventBroadcast-type. Para receber eventos de transmissão, o aplicativo deve se registrar para notificação por meio da função RegisterDeviceNotification do Microsoft Win32. eventos do tipoWdfEventBroadcast são expostos como eventos de 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, de dados que pbData aponta para. 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)).

Valor de retorno

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

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

 

postEvent também pode retornar outros valores HRESULT.

Observações

Quando o driver chama IWDFDevice::P ostEvent para notificar o aplicativo solicitante sobre um evento, a 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.
da Plataforma de Destino Área de trabalho
versão mínima do UMDF 1.5
cabeçalho wudfddi.h (inclua Wudfddi.h)
de DLL WUDFx.dll

Consulte também

FIELD_OFFSET

IWDFDevice

TARGET_DEVICE_CUSTOM_NOTIFICATION

WdfDevicePostEvent