/// <summary> /// Register a callback device change event function to be called when a device change event (e.g. change of name, device added) occurs /// </summary> /// <param name="deviceEventFunc">Callback function to be called</param> /// <param name="obj">Context object that will be echoed back when function is called. Only the object when the first function is registered will be used. Set to null if not used.</param> /// <returns>Callback event id</returns> public unsafe int tdRegisterDeviceChangeEvent(DeviceChangeEventCallbackFunction deviceChangeEventFunc, Object obj) { int returnValue = 0; if (deviceChangeEventList.Count == 0) { //first added, register with dll too //only the context object of the first event will be registered UnmanagedImport.DeviceChangeEventFunctionDelegate deviceChangeEventFunctionDelegate = new UnmanagedImport.DeviceChangeEventFunctionDelegate(deviceChangeEventFunction); registeredDeviceChangeEventFunctionId = UnmanagedImport.tdRegisterDeviceChangeEvent(deviceChangeEventFunctionDelegate, (void *)null); GC.Collect(); callbackFunctionReferenceList.Add(registeredDeviceChangeEventFunctionId, deviceChangeEventFunctionDelegate); } ++lastEventID; returnValue = lastEventID; DeviceChangeEventFunctionContext deviceChangeEventFuncContext = new DeviceChangeEventFunctionContext(); deviceChangeEventFuncContext.changeEventCallbackFunc = deviceChangeEventFunc; deviceChangeEventFuncContext.context = obj; deviceChangeEventFuncContext.callbackId = returnValue; deviceChangeEventList.Add(returnValue, deviceChangeEventFuncContext); return(returnValue); }
/// <summary> /// Register a callback device change event function to be called when a device change event (e.g. change of name, device added) occurs /// </summary> /// <param name="deviceEventFunc">Callback function to be called</param> /// <param name="obj">Context object that will be echoed back when function is called. Only the object when the first function is registered will be used. Set to null if not used.</param> /// <returns>Callback event id</returns> public unsafe int tdRegisterDeviceChangeEvent(DeviceChangeEventCallbackFunction deviceChangeEventFunc, Object obj) { int returnValue = 0; if (deviceChangeEventList.Count == 0) { //first added, register with dll too //only the context object of the first event will be registered UnmanagedImport.DeviceChangeEventFunctionDelegate deviceChangeEventFunctionDelegate = new UnmanagedImport.DeviceChangeEventFunctionDelegate(deviceChangeEventFunction); registeredDeviceChangeEventFunctionId = UnmanagedImport.tdRegisterDeviceChangeEvent(deviceChangeEventFunctionDelegate, (void*)null); GC.Collect(); callbackFunctionReferenceList.Add(registeredDeviceChangeEventFunctionId, deviceChangeEventFunctionDelegate); } ++lastEventID; returnValue = lastEventID; DeviceChangeEventFunctionContext deviceChangeEventFuncContext = new DeviceChangeEventFunctionContext(); deviceChangeEventFuncContext.changeEventCallbackFunc = deviceChangeEventFunc; deviceChangeEventFuncContext.context = obj; deviceChangeEventFuncContext.callbackId = returnValue; deviceChangeEventList.Add(returnValue, deviceChangeEventFuncContext); return returnValue; }