我试图调用NtDelayExecution,但似乎不知道如何将int转换为_LARGE_INTEGER ( NtDelayExecution函数请求的格式)。(http://www.codewarrior.cn/ntdoc/winnt/ex/NtDelayExecution.htm)
我目前的代码是:
LARGE_INTEGER DelayTimeConverted = HIBERNATION_TIME;
((NtDelayExecPrototype)(NtDelayExecutionPtr))(FALSE, DelayTimeConverted);其中HIBERNATION_TIME被定义为:#define HIBERATNATION_TIME 123 (占位符值)。
当我试图编译时,我会得到一个类似于no suitable constructor exists to convert int to _LARGE_INTEGER的错误--任何帮助都是非常感谢的。
编辑:我的平台是Windows 10,我已经尝试过更改_LARGE_INTEGER现在是unsigned int的函数,但是延迟并没有发生。
EDIT2:这是我的全部功能:
void NtDelayExecution ( ) {
typedef void(WINAPI* NtDelayExecPrototype)(BOOLEAN, PLARGE_INTEGER);//PLARGE_INTEGER);
FARPROC NtDelayExecutionPtr = 0x0;
HMODULE NtDLLModule = GetModuleHandleA("ntdll.dll");
// Error checking omitted.
LARGE_INTEGER DelayTimeConverted;
DelayTimeConverted.QuadPart = HIBERNATION_TIME;
((NtDelayExecPrototype)(NtDelayExecutionPtr))(FALSE, &DelayTimeConverted);
}发布于 2021-02-24 18:31:20
整型是一个union,包含两个32位整数LowPart (DWORD)和HighPart (LONG),它们位于64位整数QuadPart (LONGLONG)之上:
typedef union _LARGE_INTEGER {
struct {
DWORD LowPart;
LONG HighPart;
} DUMMYSTRUCTNAME;
struct {
DWORD LowPart;
LONG HighPart;
} u;
LONGLONG QuadPart;
} LARGE_INTEGER;在这种情况下,您可以将int分配给QuadPart成员:
LARGE_INTEGER DelayTimeConverted;
DelayTimeConverted.QuadPart = HIBERNATION_TIME;
((NtDelayExecPrototype)(NtDelayExecutionPtr))(FALSE, &DelayTimeConverted);还请注意&,因为NtDelayExecution()按指针获取LARGE_INTEGER (这是PLARGE_INTEGER中的P所代表的)。
UPDATE:也就是说,您所显示的函数是调用GetModuleHandle(),但是之后在哪里调用GetProcAddress()来初始化NtDelayExecutionPtr呢?你应该这样做:
NTSTATUS NtDelayExecution()
{
typedef NTSTATUS (WINAPI* NtDelayExecPrototype)(BOOLEAN, PLARGE_INTEGER);
HMODULE NtDLLModule = GetModuleHandle(TEXT("ntdll.dll"));
NtDelayExecPrototype NtDelayExecutionPtr = GetProcAddress(NtDLLModule, "NtDelayExecution");
if (NtDelayExecutionPtr == NULL)
return STATUS_NOT_IMPLEMENTED;
LARGE_INTEGER DelayTimeConverted;
DelayTimeConverted.QuadPart = HIBERNATION_TIME;
return NtDelayExecutionPtr(FALSE, &DelayTimeConverted);
}https://stackoverflow.com/questions/66356313
复制相似问题