Files
MicrosoftIris/UIX/Microsoft/Iris/OS/BytesResource.cs
T

35 lines
867 B
C#

using Microsoft.Iris.Data;
using System.Runtime.InteropServices;
namespace Microsoft.Iris.OS;
public class BytesResource : Resource
{
private byte[] _bytes;
private string _identifier;
private GCHandle _handle;
public BytesResource(string uri, byte[] bytes, string identifier, bool forceSynchronous)
: base(uri, forceSynchronous)
{
_bytes = bytes;
_identifier = identifier;
}
public override string Identifier => _identifier;
protected override void StartAcquisition(bool forceSynchronous)
{
_handle = GCHandle.Alloc(_bytes, GCHandleType.Pinned);
NotifyAcquisitionComplete(_handle.AddrOfPinnedObject(), (uint)_bytes.Length, true, null);
}
protected override void CancelAcquisition()
{
if (!_handle.IsAllocated)
return;
_handle.Free();
}
}