This section describes the steps you need to carry in order to receive monitored events in your code.
class CMyListener : public CComObjectRoot<CMyListener>, public INativeListener
{
public:
// override all pure virtual methods in the INativeListener
STDMETHOD(OnConnection)(FILETIME *,BOOL,LPCTSTR);
STDMETHOD(OnGetDescriptorFromDevice)(FILETIME *fTime,void* Data,ULONG Size,BYTE Index,BYTE DescriptorType,USHORT LanguageId);
// ...
};
...
CComObject<CMyListener> pMyListenerObject;
CComObject<CMyListener>::CreateInstance(&pMyListenerObject);
CComPtr<INativeListener> pMyListener;
pMyListenerObject->QueryInterface(&pMyListener);
pMonitor->AddNativeListener(pMyListener);
monitor.OnConnection += new hhdusbmcLib._IMonitoringEvents_OnConnectionEventHandler(monitor_OnConnection); monitor.OnPacketUp+=new hhdusbmcLib._IMonitoringEvents_OnPacketUpEventHandler(monitor_OnPacketUp); monitor.OnPacketDown+=new hhdusbmcLib._IMonitoringEvents_OnPacketDownEventHandler(monitor_OnPacketDown); ...
pMonitor->Connect(CComVariant(pDevice),/*headers-only*/ CComVariant(VARIANT_FALSE));
hhdusbmcLib.Device device = monitor.Devices[nIndex]; monitor.Connect(device,/*headers-only*/ false);
CComPtr<IDeviceCollection> pDeviceCollection; HRESULT hr = m_pUM->get_Devices(&pDeviceCollection); if(FAILED(hr)) return hr; CComPtr<IDevice> pDevice; // first item is always NextConnected pDeviceCollection->get_Item(CComVariant(0),&pDevice); pMonitor->Connect(pDevice,/*headers-only*/ CComVariant(VARIANT_FALSE));
// first device is always NextConnected device hhdusbmcLib.Device device = monitor.Devices[0]; monitor.Connect(device,/*headers-only*/ false);