次の方法で共有


WinRUIGetLastInitStatus

WinRUIGetLastInitStatus 関数を使用すると、アプリケーションでRUI_INITの状態を判断できるため、アプリケーションはRUI_INITをタイムアウトにするかどうかを評価できます。この拡張機能は、状態レポートの開始、状態レポートの終了、または現在の状態の検索に使用できます。 詳細については、「解説」を参照してください。

構文

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

パラメーター

dwSid
状態が決定されるセッションの RUI セッション ID を指定します。 dwSid が 0 の場合、hStatusHandle を使用してすべてのセッションの状態を報告します。 RUI_INIT動詞制御ブロック (VCB) の lua_sid パラメーターは、RUI_INITRUI または WinRUI の呼び出しが返されるとすぐに有効であることに注意してください。

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 を 0 にすることはできません。 hStatusHandle が NULL の場合、dwNotifyType は無視されます。

dwNotifyType
必要な表示の種類を指定します。 これにより、ウィンドウ メッセージの lParam の内容と、 WinRUIGetLastInitStatushStatusHandle を解釈する方法が決まります。 使用できる値は、以下のとおりです。

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 が 0 の場合、ステータス メッセージはセッションに対して送信されなくなります。 bClearPrevious が TRUE の場合、hStatusHandle および dwNotifyType は無視されます。

戻り値

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
指定されたセキュリティ ID (SID) は、RUI で認識されている ID と一致しません。

WLUASIDZERO
hStatusHandle パラメーターは NULL で、bClearPrevious は FALSE ですが、dwSid は 0 です。

WLUAGLOBALHANDLER
dwSid パラメーターは 0 で、すべてのセッションからのメッセージに通知されます。 (これは通常のリターン コードであり、エラーではありません)。

注釈

この拡張機能は、状態変更の非同期通知を有効にするために、ウィンドウ ハンドルまたはイベント ハンドルと共に使用することを目的としています。 また、単独で使用して、セッションの現在の状態を見つけることもできます。

ウィンドウ ハンドルを使用する

ウィンドウ ハンドルでこの拡張機能を使用するには、次の 2 つの方法があります。

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 が 0 以外の場合、状態はそのセッションに対してのみ報告されることに注意してください。 Sid が 0 の場合、すべてのセッションの状態が報告されます。

イベント ハンドルを使用する

この拡張機能をイベント ハンドルと共に使用するには、次のように実装します。

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