4

我正在使用Alien for Lua来引用 Windows Kernel32.dll 中的WaitForSingleObject 函数

我对 Windows 编程很陌生,所以我的问题是关于WaitForSingleObject 文档引用的以下#define d 变量:

如果 dwMilliseconds 是INFINITE,则该函数将仅在对象发出信号时返回。

什么是无限价值?我自然会认为它是-1,但我无法在任何地方找到它的文档。

此外,在下表中,它提到了十六进制的返回值,但我对为什么它们L在最后一个数字后面有一个字符感到困惑。这可以像将其转换为 Long 一样简单吗?

图表

我问的原因是因为 Lua 使用Number 数据类型,所以我不确定是否应该通过十六进制数字(0-F)或十进制数字(0-9)检查这个返回值?

4

1 回答 1

5

我的想法是打开一个 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
于 2013-07-23T16:58:19.127 回答