mirror of
https://github.com/yuanyuanxiang/SimpleRemoter.git
synced 2026-01-22 07:14:15 +08:00
style: Change files encoding format to UTF8-BOM
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
// KeyboardManager.h: interface for the CKeyboardManager class.
|
||||
// KeyboardManager.h: interface for the CKeyboardManager class.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -16,19 +16,19 @@
|
||||
|
||||
#define BUFFER_SIZE 10*1024*1024
|
||||
|
||||
// ѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// 循环缓存
|
||||
class CircularBuffer
|
||||
{
|
||||
private:
|
||||
char* m_buffer; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
int m_size; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
||||
int m_write; // дָ<EFBFBD><EFBFBD>
|
||||
int m_read; // <EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
|
||||
CRITICAL_SECTION m_cs; // <EFBFBD>߳<EFBFBD>ͬ<EFBFBD><EFBFBD>
|
||||
char m_key; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> XOR <EFBFBD>ӽ<EFBFBD><EFBFBD>ܵ<EFBFBD><EFBFBD><EFBFBD>Կ
|
||||
char* m_buffer; // 缓冲区
|
||||
int m_size; // 缓冲区大小
|
||||
int m_write; // 写指针
|
||||
int m_read; // 读指针
|
||||
CRITICAL_SECTION m_cs; // 线程同步
|
||||
char m_key; // 用于 XOR 加解密的密钥
|
||||
|
||||
public:
|
||||
// <EFBFBD><EFBFBD><EFBFBD>캯<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// 构造函数:从文件加载数据
|
||||
CircularBuffer(const std::string& filename, int size = BUFFER_SIZE, char key = '`')
|
||||
: m_size(size), m_write(0), m_read(0), m_key(key)
|
||||
{
|
||||
@@ -37,19 +37,19 @@ public:
|
||||
LoadDataFromFile(filename);
|
||||
}
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
|
||||
// 析构函数:清理资源
|
||||
~CircularBuffer()
|
||||
{
|
||||
DeleteCriticalSection(&m_cs);
|
||||
delete[] m_buffer;
|
||||
}
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// 清空缓存
|
||||
void Clear()
|
||||
{
|
||||
EnterCriticalSection(&m_cs);
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD>дָ<EFBFBD><EFBFBD>
|
||||
// 重置读写指针
|
||||
m_write = 0;
|
||||
m_read = 0;
|
||||
memset(m_buffer, 0, m_size);
|
||||
@@ -57,28 +57,28 @@ public:
|
||||
LeaveCriticalSection(&m_cs);
|
||||
}
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD>ܲ<EFBFBD><DCB2><EFBFBD><EFBFBD><EFBFBD>XOR<EFBFBD><EFBFBD>
|
||||
// 加密/解密操作(XOR)
|
||||
void XORData(char* data, int length)
|
||||
{
|
||||
for (int i = 0; i < length; i++) {
|
||||
data[i] ^= m_key; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> XOR <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
data[i] ^= m_key; // 用密钥进行 XOR 操作
|
||||
}
|
||||
}
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// 从文件加载数据到缓冲区
|
||||
bool LoadDataFromFile(const std::string& filename)
|
||||
{
|
||||
EnterCriticalSection(&m_cs);
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||
// 打开文件
|
||||
HANDLE hFile = CreateFileA(
|
||||
filename.c_str(), // <EFBFBD>ļ<EFBFBD>·<EFBFBD><EFBFBD>
|
||||
GENERIC_READ, // ֻ<EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD>
|
||||
0, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
NULL, // Ĭ<EFBFBD>ϰ<EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
OPEN_EXISTING, // <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
FILE_ATTRIBUTE_NORMAL, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
NULL // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫģ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||
filename.c_str(), // 文件路径
|
||||
GENERIC_READ, // 只读权限
|
||||
0, // 不共享
|
||||
NULL, // 默认安全属性
|
||||
OPEN_EXISTING, // 文件必须存在
|
||||
FILE_ATTRIBUTE_NORMAL, // 常规文件属性
|
||||
NULL // 不需要模板文件
|
||||
);
|
||||
|
||||
if (hFile == INVALID_HANDLE_VALUE) {
|
||||
@@ -87,24 +87,24 @@ public:
|
||||
return false;
|
||||
}
|
||||
|
||||
// <EFBFBD><EFBFBD>ȡ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// 读取文件数据
|
||||
DWORD bytesRead = 0;
|
||||
while (m_write < m_size) {
|
||||
if (!ReadFile(hFile, m_buffer + m_write, m_size - m_write, &bytesRead, NULL) || bytesRead == 0) {
|
||||
break;
|
||||
}
|
||||
XORData(m_buffer + m_write, bytesRead); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
XORData(m_buffer + m_write, bytesRead); // 解密数据
|
||||
m_write = (m_write + bytesRead) % m_size;
|
||||
}
|
||||
|
||||
// <EFBFBD>ر<EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// 关闭文件句柄
|
||||
SAFE_CLOSE_HANDLE(hFile);
|
||||
|
||||
LeaveCriticalSection(&m_cs);
|
||||
return true;
|
||||
}
|
||||
|
||||
// д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>룩
|
||||
// 写入数据(如果缓冲区满了,从头部覆盖写入)
|
||||
int Write(const char* data, int length)
|
||||
{
|
||||
EnterCriticalSection(&m_cs);
|
||||
@@ -113,17 +113,17 @@ public:
|
||||
m_buffer[m_write] = data[i];
|
||||
m_write = (m_write + 1) % m_size;
|
||||
|
||||
// <EFBFBD><EFBFBD>дָ<EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD>ָ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ǰ<EFBFBD>ƶ<EFBFBD>ָ<EFBFBD><EFBFBD>ʵ<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>
|
||||
// 当写指针追上读指针时,前移读指针实现覆盖写入
|
||||
if (m_write == m_read) {
|
||||
m_read = (m_read + 1) % m_size;
|
||||
}
|
||||
}
|
||||
|
||||
LeaveCriticalSection(&m_cs);
|
||||
return length; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><EFBFBD><EFBFBD>
|
||||
return length; // 返回实际写入的字节数
|
||||
}
|
||||
|
||||
// <EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>λ<EFBFBD>ÿ<EFBFBD>ʼ<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// 从指定位置开始读取数据
|
||||
char* Read(int &pos, int &bytesRead)
|
||||
{
|
||||
EnterCriticalSection(&m_cs);
|
||||
@@ -138,7 +138,7 @@ public:
|
||||
int size = (m_write >= m_read) ? (m_write - m_read) : (m_size - (m_read - m_write));
|
||||
char* outBuffer = size ? new char[size] : NULL;
|
||||
for (int i = 0; i < size; i++) {
|
||||
if (m_read == m_write) { // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>
|
||||
if (m_read == m_write) { // 缓冲区为空
|
||||
break;
|
||||
}
|
||||
outBuffer[i] = m_buffer[m_read];
|
||||
@@ -148,15 +148,15 @@ public:
|
||||
pos = m_write;
|
||||
|
||||
LeaveCriticalSection(&m_cs);
|
||||
return outBuffer; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ʶ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><EFBFBD><EFBFBD>
|
||||
return outBuffer; // 返回实际读取的字节数
|
||||
}
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD>
|
||||
// 将缓存中所有数据写入文件(加密)
|
||||
bool WriteAvailableDataToFile(const std::string& filename)
|
||||
{
|
||||
EnterCriticalSection(&m_cs);
|
||||
|
||||
// <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĴ<EFBFBD>С
|
||||
// 获取所有数据的大小
|
||||
m_read = m_write + 1;
|
||||
while (m_read < m_size && m_buffer[m_read] == 0) m_read++;
|
||||
if (m_read == m_size) m_read = 0;
|
||||
@@ -164,26 +164,26 @@ public:
|
||||
|
||||
if (totalSize == 0) {
|
||||
LeaveCriticalSection(&m_cs);
|
||||
return true; // û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>д<EFBFBD><EFBFBD>
|
||||
return true; // 没有数据可写入
|
||||
}
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>Խ<EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>
|
||||
// 打开文件以进行写入
|
||||
HANDLE hFile = CreateFileA(
|
||||
filename.c_str(), // <EFBFBD>ļ<EFBFBD>·<EFBFBD><EFBFBD>
|
||||
GENERIC_WRITE, // дȨ<EFBFBD><EFBFBD>
|
||||
0, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
NULL, // Ĭ<EFBFBD>ϰ<EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
CREATE_ALWAYS, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
FILE_ATTRIBUTE_NORMAL, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
NULL // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫģ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||
filename.c_str(), // 文件路径
|
||||
GENERIC_WRITE, // 写权限
|
||||
0, // 不共享
|
||||
NULL, // 默认安全属性
|
||||
CREATE_ALWAYS, // 如果文件存在则覆盖
|
||||
FILE_ATTRIBUTE_NORMAL, // 常规文件属性
|
||||
NULL // 不需要模板文件
|
||||
);
|
||||
|
||||
if (hFile == INVALID_HANDLE_VALUE) {
|
||||
LeaveCriticalSection(&m_cs);
|
||||
return false; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ʧ<EFBFBD><EFBFBD>
|
||||
return false; // 打开文件失败
|
||||
}
|
||||
|
||||
// д<EFBFBD>뻺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// 写入缓冲区中的所有数据
|
||||
int bytesWritten = 0;
|
||||
DWORD bytesToWrite = totalSize;
|
||||
const int size = 64*1024;
|
||||
@@ -191,22 +191,22 @@ public:
|
||||
while (bytesWritten < totalSize) {
|
||||
DWORD bufferSize = min(bytesToWrite, size);
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD>仺<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// 填充缓冲区
|
||||
for (int i = 0; i < bufferSize && m_read != m_write; ) {
|
||||
buffer[i++] = m_buffer[m_read];
|
||||
m_read = (m_read + 1) % m_size;
|
||||
}
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// 加密数据
|
||||
XORData(buffer, bufferSize);
|
||||
|
||||
// д<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||
// 写入文件
|
||||
DWORD bytesActuallyWritten = 0;
|
||||
if (!WriteFile(hFile, buffer, bufferSize, &bytesActuallyWritten, NULL)) {
|
||||
SAFE_CLOSE_HANDLE(hFile);
|
||||
LeaveCriticalSection(&m_cs);
|
||||
delete[] buffer;
|
||||
return false; // д<EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>
|
||||
return false; // 写入失败
|
||||
}
|
||||
|
||||
bytesWritten += bytesActuallyWritten;
|
||||
@@ -214,7 +214,7 @@ public:
|
||||
}
|
||||
delete[] buffer;
|
||||
|
||||
// <EFBFBD>ر<EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// 关闭文件句柄
|
||||
SAFE_CLOSE_HANDLE(hFile);
|
||||
LeaveCriticalSection(&m_cs);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user