43 lines
1.5 KiB
C
43 lines
1.5 KiB
C
|
|
#pragma once
|
|||
|
|
|
|||
|
|
#include "MID/Mid_Def.h"
|
|||
|
|
#include <QtCore/QByteArray>
|
|||
|
|
#include <QtCore/QString>
|
|||
|
|
#include <Windows.h>
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* DRI Vendor 层:读写固件的 Vendor/NKRO HID 接口,支撑逻辑层功能诊断。
|
|||
|
|
*
|
|||
|
|
*/
|
|||
|
|
struct Dri_Vendor_Struct_Port
|
|||
|
|
{
|
|||
|
|
/* 读写句柄:Vendor 写、NKRO 写与通用读各占一个 */
|
|||
|
|
HANDLE HandleRead = INVALID_HANDLE_VALUE;
|
|||
|
|
HANDLE HandleWriteVendor = INVALID_HANDLE_VALUE;
|
|||
|
|
HANDLE HandleWriteNkro = INVALID_HANDLE_VALUE;
|
|||
|
|
HANDLE HandleEvent = nullptr;
|
|||
|
|
OVERLAPPED OverlappedRead = {};
|
|||
|
|
/* 运行状态 + 报文长度缓存,便于 UI/LOGIC 层快速判断 */
|
|||
|
|
bool IsOpened = false;
|
|||
|
|
bool IsReadPending = false;
|
|||
|
|
quint16 InputLength = 0;
|
|||
|
|
quint16 OutputLength = 0;
|
|||
|
|
quint16 NkroWriteOutputLength = 0;
|
|||
|
|
QByteArray ReadBuffer;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
/* 关闭全部句柄,安全退出时务必调用以便复用设备。 */
|
|||
|
|
void Dri_Vendor_Func_Close(Dri_Vendor_Struct_Port* p_Port);
|
|||
|
|
/* 根据 VID/PID 打开对应 HID 接口,并创建必需句柄。 */
|
|||
|
|
bool Dri_Vendor_Func_Open(Dri_Vendor_Struct_Port* p_Port,
|
|||
|
|
const Mid_Struct_DeviceConfig& DeviceConfig,
|
|||
|
|
QString* p_TextStatus);
|
|||
|
|
/* 读取 Vendor 报文:一次返回一个 Mid_Struct_RawPacket。 */
|
|||
|
|
bool Dri_Vendor_Func_Read(Dri_Vendor_Struct_Port* p_Port,
|
|||
|
|
Mid_Struct_RawPacket* p_Packet,
|
|||
|
|
QString* p_TextStatus);
|
|||
|
|
/* 写入 Vendor/NKRO 报文,ByteArray 按固件定义组包。 */
|
|||
|
|
bool Dri_Vendor_Func_Write(Dri_Vendor_Struct_Port* p_Port,
|
|||
|
|
const QByteArray& ByteArray,
|
|||
|
|
QString* p_TextStatus);
|