我正在使用Alien for Lua来引用Windows Kernel32.dll中的WaitForSingleObject function。
我是Windows编程的新手,所以我的问题是关于WaitForSingleObject文档引用的以下#define d变量:
如果dwMilliseconds为 INFINITE ,则只有在发出对象信号时才会返回该函数。
什么是 INFINITE 值?我自然会认为它是-1
,但我无法在任何地方找到它。
另外,使用下表,它提到了十六进制的返回值,但我很困惑为什么它们在最后一个数字后面有一个L
字符。这可能就像将它投射到Long一样简单吗?
我问的原因是因为Lua使用Number data type,所以我不确定是否应该通过十六进制数字(0-F)或十进制数字(0-9)检查此返回值?< / p>
答案 0 :(得分:2)
这个想法让我想到了打开一个C ++应用程序并打印出这些值,所以我做到了这一点:
#include <windows.h>
#include <process.h>
#include <iostream>
int main()
{
std::cout << INFINITE;
std::cout << WAIT_OBJECT_0;
std::cout << WAIT_ABANDONED;
std::cout << WAIT_TIMEOUT;
std::cout << WAIT_FAILED;
system("pause");
return 0;
}
根据我的发现,最终的Lua结果是:
local INFINITE = 4294967295
local WAIT_OBJECT_0 = 0
local WAIT_ABANDONED = 128
local WAIT_TIMEOUT = 258
local WAIT_FAILED = 4294967295