36 lines
1.2 KiB
C
36 lines
1.2 KiB
C
#pragma once
|
|
|
|
#include "MID/Mid_Def.h"
|
|
#include <QtCore/QByteArray>
|
|
#include <QtCore/QString>
|
|
#include <Windows.h>
|
|
|
|
/*
|
|
* 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);
|