2013-07-23 20 views
2

我使用Alien for Lua引用WaitForSingleObject function在Windows Kernel32.dll中定義的變量。Lua的外國人 - 在Win32 API WaitForSingleObject函數

我非常新的Windows編程的,所以我的問題是關於由WaitForSingleObject的文檔引用以下#define d變量:

如果dwMilliseconds是INFINITE,該功能將僅在返回對象被髮信號。

什麼是INFINITE值?我自然會認爲它是-1,但我無法在任何地方找到它。

另外,用下面的表格,它提到了十六進制的返回值,但我很困惑他們爲什麼在最後一位數字後面有一個L字符。這可能是一件簡單的事情嗎?

Chart

我之所以這樣問是因爲Lua使用一個Number data type,所以我不知道我是否應該檢查通過十六進制數字(0-F),或十進制數字這個返回值(0-9) ?

+2

最後的'L'是'long'的字面語法。參見[此鏈接](http://cpp.comsci.us/etymology/literals.html)的列表。 –

+0

非常有幫助!謝謝! – MrHappyAsthma

回答

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 
+1

'INFINTIE'使用無符號整數類型。 '4294967295'相同'-1'時解釋爲有符號整數輸入來代替。 –

+0

好注意!謝謝! – MrHappyAsthma