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 |
---|---|
|
Os dados do evento foram enviados com êxito para o sistema operacional. |
|
O tamanho dos dados especificado pelo parâmetro cbDataSize é maior que o tamanho máximo permitido. |
|
O parâmetro EventType não está definido como WdfEventBroadcast (1). |
|
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 |