Função RegisterDeviceNotificationA (winuser.h)
Registra o dispositivo ou o tipo de dispositivo para o qual uma janela receberá notificações.
Nota
Você pode usar CM_Register_Notification em vez de RegisterDeviceNotification se o código for direcionado ao Windows 8 ou versões mais recentes do Windows. A vantagem do CM_Register_Notification é que ele não requer um identificador de janela para funcionar.
Sintaxe
HDEVNOTIFY RegisterDeviceNotificationA(
[in] HANDLE hRecipient,
[in] LPVOID NotificationFilter,
[in] DWORD Flags
);
Parâmetros
[in] hRecipient
Um identificador para a janela ou serviço que receberá eventos de dispositivo para os dispositivos especificados no parâmetro
Os serviços podem especificar um identificador de janela ou um identificador de status de serviço.
[in] NotificationFilter
Um ponteiro para um bloco de dados que especifica o tipo de dispositivo para o qual as notificações devem ser enviadas. Esse bloco sempre começa com a estrutura DEV_BROADCAST_HDR. Os dados a seguir desse cabeçalho dependem do valor do membro dbch_devicetype, que pode ser DBT_DEVTYP_DEVICEINTERFACE ou DBT_DEVTYP_HANDLE. Para obter mais informações, consulte Comentários.
[in] Flags
Esse parâmetro pode ser um dos valores a seguir.
Além disso, você pode especificar o valor a seguir.
Valor de retorno
Se a função for bem-sucedida, o valor retornado será um identificador de notificação do dispositivo.
Se a função falhar, o valor retornado será NULL. Para obter informações de erro estendidas, chame GetLastError.
Observações
Os aplicativos enviam notificações de evento usando a função
Os serviços podem usar a função RegisterDeviceNotification para se registrar para receber notificações do dispositivo. Se um serviço especificar um identificador de janela no parâmetro hRecipient, as notificações serão enviadas para o procedimento de janela. Se hRecipient for um identificador de status de serviço, SERVICE_CONTROL_DEVICEEVENT notificações serão enviadas para o manipulador de controle de serviço. Para obter mais informações sobre o manipulador de controle de serviço, consulte HandlerEx.
Certifique-se de manipular eventos de dispositivo Plug and Play o mais rápido possível. Caso contrário, o sistema poderá ficar sem resposta. Se o manipulador de eventos for executar uma operação que possa bloquear a execução (como E/S), é melhor iniciar outro thread para executar a operação de forma assíncrona.
Os identificadores de notificação do dispositivo retornados por RegisterDeviceNotification devem ser fechados chamando a função UnregisterDeviceNotification quando elas não forem mais necessárias.
Os eventos DBT_DEVICEARRIVAL e DBT_DEVICEREMOVECOMPLETE são transmitidos automaticamente para todas as janelas de nível superior para dispositivos de porta. Portanto, não é necessário chamar RegisterDeviceNotification para portas e a função falhará se o membro dbch_devicetype for DBT_DEVTYP_PORT. As notificações de volume também são transmitidas para janelas de nível superior, portanto, a função falhará se dbch_devicetype for DBT_DEVTYP_VOLUME. Os dispositivos definidos pelo OEM não são usados diretamente pelo sistema, portanto, a função falhará se dbch_devicetype estiver DBT_DEVTYP_OEM.
Exemplos
Para obter um exemplo, consulte Registrando parade notificação do dispositivo.
Nota
O cabeçalho winuser.h define RegisterDeviceNotification como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows XP |
servidor com suporte mínimo | Windows Server 2003 |
da Plataforma de Destino |
Windows |
cabeçalho | winuser.h (inclua Windows.h) |
biblioteca | User32.lib |
de DLL |
User32.dll |
conjunto de API | ext-ms-win-ntuser-misc-l1-1-0 (introduzido no Windows 8) |
Consulte também
Funções de gerenciamento de dispositivo
de notificações do dispositivo