Skip to content

Commit cacd879

Browse files
authored
Update TimerResolutionModifier.cpp
1 parent 9511e18 commit cacd879

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

TimerResolutionModifier.cpp

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,16 @@
22
#include <Windows.h>
33
#include <string>
44

5-
// 不再需要 timeapi.h 和 Winmm.lib
65
#pragma comment(lib, "User32.lib")
76

7+
// =======================================================================
8+
// ↓↓↓ 新增的宏定义 ↓↓↓
9+
// =======================================================================
10+
// 手动定义 NT_SUCCESS 宏,以避免包含完整的 WDK 头文件
11+
// NTSTATUS 的成功代码都是非负数。
12+
#define NT_SUCCESS(Status) (((NTSTATUS)(Status)) >= 0)
13+
// =======================================================================
14+
815
// 声明未公开的 Native API 函数
916
extern "C" NTSYSAPI NTSTATUS NTAPI NtSetTimerResolution(ULONG DesiredResolution, BOOLEAN SetResolution, PULONG CurrentResolution);
1017

@@ -17,7 +24,7 @@ static HANDLE g_hThread = NULL;
1724
DWORD WINAPI MonitorThread(LPVOID lpParam)
1825
{
1926
const DWORD currentProcessId = GetCurrentProcessId();
20-
ULONG currentResolution; // 用于接收NtSetTimerResolution的返回值
27+
ULONG currentResolution;
2128

2229
while (g_runThread)
2330
{
@@ -35,14 +42,12 @@ DWORD WINAPI MonitorThread(LPVOID lpParam)
3542

3643
if (isForeground) {
3744
if (!g_isTimerHigh) {
38-
// 请求 0.5ms 的精度 (5000 * 100ns = 0.5ms)
3945
if (NT_SUCCESS(NtSetTimerResolution(5000, TRUE, ¤tResolution))) {
4046
g_isTimerHigh = true;
4147
}
4248
}
4349
} else {
4450
if (g_isTimerHigh) {
45-
// 释放之前设置的精度
4651
if (NT_SUCCESS(NtSetTimerResolution(5000, FALSE, ¤tResolution))) {
4752
g_isTimerHigh = false;
4853
}
@@ -51,7 +56,6 @@ DWORD WINAPI MonitorThread(LPVOID lpParam)
5156
Sleep(250);
5257
}
5358

54-
// 线程退出前,确保恢复计时器精度
5559
if (g_isTimerHigh)
5660
{
5761
NtSetTimerResolution(5000, FALSE, ¤tResolution);
@@ -63,7 +67,7 @@ DWORD WINAPI MonitorThread(LPVOID lpParam)
6367
// 导出函数
6468
extern "C" __declspec(dllexport) void PlaceholderExport() {}
6569

66-
// DLL入口点 (黑名单逻辑保持不变)
70+
// DLL入口点
6771
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
6872
{
6973
if (ul_reason_for_call == DLL_PROCESS_ATTACH)

0 commit comments

Comments
 (0)