Registrar-se em eventos
O exemplo a seguir usa o método IWiaDevMgr::RegisterEventCallbackCLSID do Windows Image Acquisition (WIA) 1.0 para se registrar para notificação quando qualquer dispositivo WIA (Aquisição de Imagens do Windows) estiver conectado ao sistema. Os aplicativos também podem usar WIA 1.0 IWiaDevMgr::RegisterEventCallbackInterface e WIA 1.0 IWiaDevMgr::RegisterEventCallbackProgram para se registrar em eventos. Com o Windows Vista e posterior, você pode usar os métodos IWiaDevMgr2::RegisterEventCallbackCLSID, IWiaDevMgr2::RegisterEventCallbackInterface ou IWiaDevMgr2::RegisterEventCallbackInterface ou IWiaDevMgr2::RegisterEventCallbackProgram para registrar eventos.
Supõe-se que o exemplo seja obtido de um aplicativo registrado como um objeto de servidor fora do processo do COM (Component Object Model).
A chamada para IWiaDevMgr::RegisterEventCallbackCLSID (ou IWiaDevMgr2::RegisterEventCallbackCLSID) é a seguinte:
pWiaDevMgr->RegisterEventCallbackCLSID( WIA_REGISTER_EVENT_CALLBACK,
NULL,
WIA_EVENT_DEVICE_CONNECTED,
pCLSID,
bstrName,
bstrDescription,
bstrIcon
);
No código anterior, pWiaDevMgr é um ponteiro válido para a interface IWiaDevMgr (ou IWiaDevMgr2), WIA_REGISTER_EVENT_CALLBACK é uma constante que especifica que essa chamada deve se registrar para o evento em vez de cancelar o registro do evento, WIA_EVENT_DEVICE_CONNECTED é uma constante que especifica que o aplicativo está se registrando para ser notificado sempre que um dispositivo está conectado ao computador do usuário, pCLSID é um ponteiro para o CLSID registrado do aplicativo, bstrName é o nome do aplicativo, bstrDescription é uma descrição de texto do aplicativo e bstrIcon é o nome de um arquivo de imagem a ser usado para o ícone do aplicativo que está se registrando para o evento.
Em seguida, o aplicativo deve implementar o método IWiaEventCallback::ImageEventCallback , que é chamado sempre que ocorre um evento para o qual o aplicativo está registrado.
Um aplicativo pode usar o método IWiaItem::EnumRegisterEventInfo (ou IWiaItem2::EnumRegisterEventInfo) para enumerar as informações sobre eventos para os quais está registrado.