#pragma once #include "MID/Mid_Def.h" #include #include #include /* * DRI Consumer 层:抽象 HID Consumer 端点,封装 Win32 句柄、缓存与状态。 * */ struct Dri_Consumer_Struct_Port { /* 设备读写所需的句柄与异步上下文 */ HANDLE HandleRead = INVALID_HANDLE_VALUE; HANDLE HandleEvent = nullptr; OVERLAPPED OverlappedRead = {}; /* 快速判断是否已经建立连接以及当前是否正挂起读 */ bool IsOpened = false; bool IsReadPending = false; /* USB 输入报文长度 & 环形缓存 */ quint16 InputLength = 0; QByteArray ReadBuffer; }; /* 主动释放 Consumer 端口,确保句柄/Overlapped 都被 reset。 */ void Dri_Consumer_Func_Close(Dri_Consumer_Struct_Port* p_Port); /* 打开设备:按照 VID/PID 查询接口并创建 Overlapped 句柄。 */ bool Dri_Consumer_Func_Open(Dri_Consumer_Struct_Port* p_Port, const Mid_Struct_DeviceConfig& DeviceConfig, QString* p_TextStatus); /* 读取最新的 Consumer 原始包,失败时返回状态描述。 */ bool Dri_Consumer_Func_Read(Dri_Consumer_Struct_Port* p_Port, Mid_Struct_RawPacket* p_Packet, QString* p_TextStatus);