protected unsafe void SetObject(IntPtr guid, object value) { // NOT WORKING with APPDATA var prop = new PropertyPointer(); InitHeader <PropertyPointer>(ref prop.Header); var dataValue = IntPtr.Zero; prop.Data = new IntPtr(&dataValue); // Free previous application data if any Device.GetProperty(guid, new IntPtr(&prop)); GCHandle handle; if (prop.Data.ToInt64() != -1) { handle = GCHandle.FromIntPtr(prop.Data); if (handle.IsAllocated) { handle.Free(); } } // Set new object value handle = GCHandle.Alloc(value, GCHandleType.Pinned); prop.Data = handle.AddrOfPinnedObject(); Device.SetProperty(guid, new IntPtr(&prop)); }
protected unsafe void Set(IntPtr guid, InputRange value) { var prop = new PropertyRange(); InitHeader <PropertyRange>(ref prop.Header); value.CopyTo(ref prop); Device.SetProperty(guid, new IntPtr(&prop)); }
protected unsafe void Set(IntPtr guid, int value) { var prop = new PropertyInt(); InitHeader <PropertyInt>(ref prop.Header); prop.Data = value; Device.SetProperty(guid, new IntPtr(&prop)); }
protected unsafe void Set(IntPtr guid, string value) { var prop = new PropertyString { Text = value }; var propNative = new PropertyString.__Native(); prop.__MarshalTo(ref propNative); InitHeader <PropertyString.__Native>(ref propNative.Header); Device.SetProperty(guid, new IntPtr(&propNative)); }