聲明
WINUSERAPI
DWORD
WINAPI
MsgWaitForMultipleObjects(
_In_DWORDnCount,
_In_reads_opt_(nCount)CONSTHANDLE*pHandles,
_In_BOOLfWaitAll,
_In_DWORDdwMilliseconds,
_In_DWORDdwWakeMask);
VB聲明
Private Declare Function MsgWaitForMultipleObjects Lib "user32" (ByVal nCount As Long, _
pHandles As Long, _
ByVal fWaitAll As Long, _
ByVal dwMilliseconds As Long, _
ByVal dwWakeMask As Long) As Long
說明
等候單個對象或一系列對象發出信號---標誌著規定的逾時已經過去,或特定類型的訊息已抵達執行緒的輸入佇列。如返回條件已經滿足,則立即返回
返回值
Long,如fWaitAll設為TRUE,則下述任何一個常數都標誌著成功:
WAIT_ABANDONED_0:所有對象都發出訊息,而且其中一個或多個屬於
互斥體(一但擁有它門的進程中止,就會發出信號)。
WAIT_TIMEOUT:對象保持未發信號的狀態,但規定的等待逾時時間已經超過
WAIT_OBJECT_0:所有的對象都發出信號
WAIT_TO_COMPLETION(僅適用於WaitForSingleObjectEx),由於一個I/O完成操作已準備好執行,從而造成了函式的返回。
返回WAIT_FAILED表示函式執行失敗。會設定GetLastError
如fWaitAll設為FALSE,那返回結果與前面說的相似,只是可能還會返回相對於WAIT_ABANDONED_0或WAIT_OBJECT_0的一個正偏移量,指出哪個對象是被拋棄還是發出信號。
如果是由於dwWakeMask指定的,符合特殊標準的一條訊息的到達而造成了函式的返回,則返回WAIT_OBJECT_0 + nCount
參數表
參數 類型及說明
nCount Long,指定列表中的句柄數量
pHandles Long,指定對象句柄組合中的第一個元素
fWaitAll Long,如果為TRUE,表示除非對象同時發出信號,否則就等待下去。如果為FALSE,表示任何對象發出信號即可。
dwMilliseconds Long,指定要等待的毫秒數。
dwWakeMask Long,帶有QS_??前綴的一個或多個常數,用於標識特定的訊息類型。
註解
如果函式是由於對象發出信號而返回,這個函式還會得到一些額外的效果:
信號機:遞增信號機計數
自動重設事件:將事件發信狀態設為FALSE
自動重設可等待計時器:將計時器狀態設為FALSE