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 参数在调用 RUIWinRUI 返回RUI_INIT后立即有效。

hStatusHandle
指定用于向应用程序发出由 dwSid) 指定的会话 (状态已更改的句柄。 可以是窗口句柄、事件句柄或 NULL;必须相应地设置 dwNotifyType

如果 hStatusHandle 是窗口句柄,则状态将通过窗口消息发送到应用程序。 消息是使用字符串“WinRUI”从 RegisterWindowMessage 获取的。 参数 wParam 包含会话状态。 (有关详细信息,请参阅 Return Codes.) 根据 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_INIT上lua_correlator字段的值。

WLUA_NTFY_MSG_SID

hStatusHandle 参数包含窗口句柄,返回的窗口消息的 lParam 应包含 LUA 会话标识符。

bClearPrevious
如果为 TRUE,则不再为 dwSid 标识的会话发送状态消息。 如果 dwSid 为零,则不再为任何会话发送状态消息。 如果 bClearPrevious 为 TRUE,则忽略 hStatusHandledwNotifyType

返回值

WLUASYSNOTREADY
SNABASE 未运行。

WLUANTFYINVALID
dwNotifyType 参数无效。

WLUAINVALIDHANDLE
hStatusHandle 参数不包含有效的句柄。

WLUASTARTUPNOTCALLED
尚未调用 WinRUIStartup

WLUALINKINACTIVE
指向主机的链接尚未处于活动状态。

WLUALINKACTIVATING
正在激活指向主机的链接。

WLUAPUINACTIVE
指向主机的链接处于活动状态,但尚未收到 ACTPU。

WLUAPUACTIVE
已收到 ACTPU。

WLUAPUREACTIVATED
已重新激活 PU) (物理单元。

WLUALUINACTIVE
指向主机的链接处于活动状态,并且已收到 ACTPU,但尚未收到 ACTLU。

WLUALUACTIVE
LU 处于活动状态。

WLUALUREACTIVATED
LU 已重新激活。

WLUAUNKNOWN
会话处于未知状态。 (这是一个内部错误。)

WLUAGETLU
会话正在等待来自节点 的 Open (SSCP) 响应。

WLUASIDINVALID
指定的 SID) (安全 ID 与 RUI 已知的任何 ID 都不匹配。

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