使用 DataWrite::D etachBuffer 发生错误(WinRT C++)

Use DataWrite::DetachBuffer An error occurred(WinRT C++)

本文关键字:WinRT C++ 错误 DataWrite etachBuffer 使用      更新时间:2023-10-16

auto featureReport = hidDevice->CreateFeatureReport(6(; auto dataWriter = ref new DataWriter((;

Array<UINT8>^buff = ref new Array<UINT8>(6);
buff[0] = (uint8)featureReport->Id;
buff[1] = 0xe;//update mode
buff[2] = 0;
buff[3] = 0;
buff[4] = 0;
buff[5] = 0;
dataWriter->WriteBytes(buff);
featureReport->Data = dataWriter->DetachBuffer();
create_task(hidDevice->SendFeatureReportAsync(featureReport))
    .then([this](task<uint32> bytesWrittenTask)
{
    auto x = bytesWrittenTask.get();    // If exception occured, let an exception flow down the task chain so it can be caught
    //MessageDialog^ msg = ref new MessageDialog(x.ToString());
});

这段代码是访问hid驱动程序成功后需要向hid设备发送命令,但这里的错误功能Report-> Data = dataWriter-> DetachBuffer ((;错误消息:HRESULT:0x80070057参数错误

您可能遇到了无效的缓冲区长度。在尝试写入缓冲区之前,请尝试获取缓冲区长度。

(pseudo code)
FeatureReport report = hidDevice->GetFeatureReport(reportId)
Array<UINT8>^buff = ref new Array<UINT8>(report.Data.Length);