共用方式為


WinRUIGetLastInitStatus

WinRUIGetLastInitStatus函式可讓應用程式判斷RUI_INIT的狀態,讓應用程式可以評估RUI_INIT是否應該逾時。此延伸模組可用來起始狀態報表、終止狀態報表,或尋找目前的狀態。 如需詳細資訊,請參閱<備註>小節。

語法

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

參數

dwSid
指定將決定狀態之會話的 RUI 會話識別碼。 如果 dwSid 為零, 則會使用 hStatusHandle 報告所有會話的狀態。 請注意,RUI_INIT動詞控制區塊中的lua_sid參數, (VCB) 只要呼叫RUI_INITRUIWinRUI就會生效。

hStatusHandle
指定用來向應用程式發出訊號的控制碼,指出 dwSid 所指定會話的狀態 () 已變更。 可以是視窗控制碼、事件控制碼或 Null; dwNotifyType 必須據以設定:

如果 hStatusHandle 是視窗控制碼,狀態會透過視窗訊息傳送至應用程式。 訊息會使用字串 「WinRUI」 從 RegisterWindowMessage 取得。 參數 wParam包含會話狀態。 (如需詳細資訊,請參閱傳回碼.) 視dwNotifyType的值而定,lParam包含會話的 RUI 會話識別碼,或RUI_INIT動詞動詞命令中的lua_correlator值。

如果 hStatusHandle 是事件控制碼,當 dwSid 所指定的會話狀態變更時,事件會進入已發出訊號的狀態。 然後,應用程式必須進一步呼叫 WinRUIGetLastInitStatus 以找出新的狀態。 請注意,事件不應該與用於發出任何 RUI 動詞完成訊號的事件相同。

如果 hStatusHandle 為 Null,則會在傳回碼中傳回 dwSid 所指定的會話狀態。 在此情況下,除非bClearPrevious為 TRUE,否則 dwSid不得為零。 如果 hStatusHandle 為 Null, 則會忽略 dwNotifyType

dwNotifyType
指定所需的指示類型。 這會決定視窗訊息 lParam 的內容,以及 WinRUIGetLastInitStatus 如何解譯 hStatusHandle。 允許的值包括:

WLUA_NTFY_EVENT

hStatusHandle參數包含事件控制碼。

WLUA_NTFY_MSG_CORRELATOR

hStatusHandle參數包含視窗控制碼,而傳回視窗訊息的lParam應該包含RUI_INITlua_correlator域的值。

WLUA_NTFY_MSG_SID

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

bClearPrevious
如果為 TRUE,就不會再針對 dwSid所識別的會話傳送狀態訊息。 如果 dwSid 為零,則不會再針對任何會話傳送狀態訊息。 如果 bClearPrevious 為 TRUE, 則會忽略 hStatusHandledwNotifyType

傳回值

WLUASYSNOTREADY
SNABASE 未執行。

WLUANTFYINVALID
dwNotifyType參數無效。

WLUAINVALIDHANDLE
hStatusHandle參數不包含有效的控制碼。

WLUASTARTUPNOTCALLED
尚未呼叫WinRUIStartup

WLUALINKINACTIVE
主機的連結尚未使用中。

WLUALINKACTI加值稅ING
正在啟動主機的連結。

WLUAPUINACTIVE
主機的連結為使用中,但尚未收到 ACTPU。

WLUAPUACTIVE
已收到 ACTPU。

WLUAPUREACTI加值稅ED
已重新啟用實體單位 (PU) 。

WLUALUINACTIVE
主機的連結為使用中,且已收到 ACTPU,但未收到 ACTLU。

WLUALUACTIVE
LU 為作用中。

WLUALUREACTI加值稅ED
LU 已重新開機。

WLUAUNKNOWN
會話處於未知的狀態。 (這是內部錯誤。)

WLUAGETLU
會話正在等候 節點的 Open (SSCP) 回應。

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

WLUASIDZERO
hStatusHandle參數為Null,bClearPrevious為 FALSE,但dwSid為零。

WLUAGLOBALHANDLER
dwSid參數為零,所有會話的訊息都會收到通知。 (這是一般傳回碼,而不是 error.)

備註

此延伸模組旨在與視窗控制碼或事件控制碼搭配使用,以啟用狀態變更的非同步通知。 它也可以單獨用來尋找會話的目前狀態。

使用視窗控制碼

有兩種方式可以搭配視窗控制碼使用此延伸模組:

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