Я разрабатываю приложение UWP для работы с устройствами HID.Приложение работает корректно почти все время.Но это часто вылетает, когда я закрываюсь или сворачиваюсь / восстанавливаюПолучено исключение Место чтения нарушения прав доступа:
Exception thrown at 0x5FC8A31C (Windows.Devices.HumanInterfaceDevice.dll) in MyApp.exe: 0xC0000005: Access violation reading location 0x0000001E.
И это исключение всегда появляется в методе CreateOutputReport.
Как проверить возможность создания выходного отчета?Или как я могу обработать это исключение в UWP?
Спасибо за любой совет заранее.
UPD: Вот пример кода
HidDevice device = await HidDevice.FromIdAsync(id, FileAccessMode.ReadWrite);
if(device != null)
{
var outReport = device.CreateOutputReport(); // Crashes here only on collapsing/closing
byte[] buffer = new byte[(int)outReport.Data.Capacity];
outReport.Data = buffer.AsBuffer();
await device.SendOutputReportAsync(outReport);
}
UPD 2: протестировано сцарапина.Создано приложение UWP с этим кодом:
public async void StartSending()
{
var devices = await DeviceInformation.FindAllAsync(HidDevice.GetDeviceSelector(usagePage, usageId, vid, pid));
if (devices.Any())
{
var device = devices.FirstOrDefault();
HidDevice hidDevice = await HidDevice.FromIdAsync(device.Id, FileAccessMode.ReadWrite);
if (hidDevice != null)
{
while(true)
{
var outReport = hidDevice.CreateOutputReport();
byte[] buffer = new byte[(int)outReport.Data.Capacity];
// fill data
outReport.Data = buffer.AsBuffer();
await hidDevice.SendOutputReportAsync(outReport);
await Task.Delay(500);
}
}
}
}
Все прекрасно работает, пока я не сверну приложение.Приложение не удалось после восстановления.Но это появляется только в установленном приложении.Работает корректно с VS.
Видео