首页 > 解决方案 > 使用 WinUsb_ControlTransfer 时的访问冲突读取位置

问题描述

我找不到关于 winusb 如何工作的任何好的示例或文档。我正在尝试与设备交互,但调用我的发送数据函数会导致访问冲突。

void WUSB_SendData(WINUSB_INTERFACE_HANDLE hndl, uint16_t rType, uint16_t req, uint16_t val, uint16_t ind, byte* data, uint16_t dLen) {
    WINUSB_SETUP_PACKET wsp;
    ZeroMemory(&wsp, sizeof(WINUSB_SETUP_PACKET));
    wsp.RequestType = (rType | 0x00);
    wsp.Request = req;
    wsp.Value = val;
    wsp.Index = ind;
    wsp.Length = dLen;
    ULONG sentData = 0;
    WinUsb_ControlTransfer(hndl, wsp, (PUCHAR)data, dLen, &sentData, 0);
}

这被称为使用

WUSB_SendData(this->dd.DeviceHandle, 0x41, 0x54, 0, 0, (byte*)("\x01"), 1);

我尝试将要传输的数据存储在一个没有改变任何东西的数组中。我尝试将其设置为不同的数据类型,我尝试更改长度的数据类型,但没有任何效果。我也尝试过使用来自 winusb 的 winusb。Lib和从通过LoadLibraryA直接访问winusb.dll。

确切的错误是Exception thrown at 0x00007FF871462CE4 (winusb.dll) in winseek.exe: 0xC0000005: Access violation reading location 0x0000000000000590.

标签: c++winusb

解决方案


推荐阅读