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_INITに対するRUI または 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 の内容と、 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 が 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);