WinRUIGetLastInitStatus

WinRUIGetLastInitStatus 函式讓應用程式能判斷RUI_INIT狀態,從而評估該RUI_INIT是否應該逾時。此擴充功能可用於啟動狀態回報、終止狀態回報,或查詢當前狀態。 詳情請參閱備註區。

語法

  
          int WINAPI WinRUIGetLastInitStatus(   
DWORD dwSid,             
 HANDLE hStatusHandle,    
DWORD dwNotifyType,      
BOOL bClearPrevious    );  

參數

dwSid
指定將判定狀態的會話的 RUI 會話識別碼。 若 dwSid 為零,則使用 hStatusHandle 回報所有會話的狀態。 請注意,RUI_INIT動詞控制區塊(VCB)中的lua_sid參數,只要RUI_INIT回傳呼叫 RUI 或 WinRUI 即可生效。

hStatusHandle
指定一個用來通知應用程式會話狀態(由 dwSid 指定)變更的句柄。 可以是視窗句柄、事件句柄或 NULL; dwNotifyType 必須相應地設定:

若 hStatusHandle 是視窗句柄,則狀態會透過視窗訊息傳送給應用程式。 訊息是從 RegisterWindowMessage 透過字串「WinRUI」取得的。 參數 wParam 包含會話狀態。 (更多資訊請參見退貨代碼。)根據 dwNotifyType 的值,lParam 會包含會話的 RUI 會話識別碼,或是 RUI_INIT 動詞中的 lua_correlator 值。

如果 hStatusHandle 是事件句柄,當 dwSid 指定的會話狀態改變時,事件會被置於訊號狀態。 申請者必須再撥打 WinRUIGetLastInitStatus 以查詢新狀態。 請注意,事件不應與任何 RUI 動詞完成的訊號相同。

若 hStatusHandle 為 NULL,則 dwSid 指定的會話狀態會以回傳碼。 此時, dwSid 不應該為零,除非 bClearPrior 為真。 若 hStatusHandle 為 NULL,則忽略 dwNotifyType 。

dwNotifyType
規定所需的適應症類型。 這決定了視窗訊息 lParam 的內容,以及 WinRUIGetLastInitStatus 如何解讀 hStatusHandle。 允許的值為:

WLUA_NTFY_EVENT

hStatusHandle 參數包含一個事件句柄。

WLUA_NTFY_MSG_CORRELATOR

hStatusHandle 參數包含一個視窗 handle,而回傳視窗訊息的 lParam 應包含RUI_INIT 上 lua_correlator 欄位的值。

WLUA_NTFY_MSG_SID

hStatusHandle 參數包含視窗 handle,而回傳視窗訊息的 lParam 應包含 LUA 會話識別碼。

bClearPrior
若為 TRUE,則不再傳送由 dwSid 識別的會話狀態訊息。 如果 dwSid 為零,任何會話的狀態訊息都不會再傳送。 若 bClearPrior 為真,則忽略 hStatusHandle 與 dwNotifyType 。

傳回值

WLUASYSNOTREADY
SNABASE 沒有運行。

WLUANTFYINVALID
dwNotifyType 參數無效。

WLUAINVALIDHANDLE
hStatusHandle 參數不包含有效的句柄。

WLUASTARTUPNOTCALLED
WinRUIStartup 尚未被召喚。

WLUALINKIN不活躍
主機的連結尚未啟用。

WLUALINK啟動中
與主機的連結正在啟動。

WLUAPU非活躍狀態
與主機的連結已啟用,但尚未收到 ACTPU 訊號。

WLUAPUACTIVE
已收到ACTPU通知。

WLUAPURE啟動
實體單元(PU)已重新啟動。

WLUALUINACTIVE
與主機的連結是啟用的,且已收到 ACTPU 通知,但尚未收到 ACTLU。

WLUALUACTIVE
LU活躍。

WLUALURE啟動
LU已經重新啟動。

WLUAUN 未知
該會議狀態不明。 (這是內部錯誤。)

WLUAGTLU(盧阿特魯)
會話正在等待節點發出 的 Open(SSCP) 回應。

WLUASIDINVALID
所指定的安全識別碼(SID)與 RUI 所知的任何識別碼不符。

WLUASIDZERO
hStatusHandle 參數為 NULL,bClearPrior 為 FALSE,但 dwSid 為零。

WLUAGLOBALhandler
dwSid 參數為零,所有會話的訊息都會收到通知。 (這是正常的回傳碼,不是錯誤。)

備註

此擴充設計設計用於視窗處理或事件處理處理,以實現狀態變更的非同步通知。 它也可以單獨使用來查詢會話的當前狀態。

配有窗把

使用此擴充功能搭配視窗柄有兩種方式:

WinRUIGetLastInitStatus(Sid,Handle,WLUA_NTFY_MSG_CORRELATOR,FALSE);  

—或—

WinRUIGetLastInitStatus(Sid,Handle,WLUA_NTFY_MSG_SID,FALSE);  

在此實作中,狀態變更會透過發送到指定視窗柄的視窗訊息來回報。 若指定WLUA_NTFY_MSG_CORRELATOR,視窗訊息中的 lParam 欄位包含該會話的 lua_correlator 欄位。 若指定WLUA_NTFY_MSG_SID,視窗訊息中的 lParam 欄位會包含該會話的 LUA 會話識別碼。

當擴充功能被用於視窗句柄時,請使用以下方法取消狀態回報:

WinRUIGetLastInitStatus(Sid,NULL,0,TRUE);  

在此實作中,請注意如果 Sid 非零,狀態只會報告該會話的狀態。 如果 Sid 為零,則所有會話的狀態都會被回報。

使用事件帳號

若要使用此擴充功能搭配事件句柄,實作方式如下:

WinRUIGetLastInitStatus(Sid,Handle,WLUA_NOTIFY_EVENT,FALSE);  

當狀態發生變化時,所給出的句柄事件會被通知。 由於事件發出訊號時不會回傳任何資訊,必須再撥一次電話以確認狀態。

Status = WinRUIGetLastInitStatus(Sid,NULL,0,0,FALSE);  

請注意,在此情況下必須指定一個 Sid 。

當擴展與事件句柄一起使用時,請使用以下方法取消狀態報告:

WinRUIGetLastInitStatus(Sid,NULL,0,TRUE);  

查詢目前狀態

使用此擴充功能查詢會話的當前狀態,無需使用事件或視窗句柄。 相反地,請使用以下方法:

Status = WinRUIGetLastInitStatus(Sid,NULL,0,0,FALSE);  

另請參閱

RUI
RUI_INIT
WinRUI
WinRUIStartup