次の方法で共有


LUA 同期と非同期 Verb の完了

論理ユニット アプリケーション (LUA) 動詞は、同期的または非同期的に実行を完了できます。

同期動詞補完

LUA が発行されるとすぐに動詞のすべての処理を完了できる場合、動詞は同期的に完了します。 この場合、プライマリ リターン コードは LUA_IN_PROGRESS 以外の値に設定され、 lua_flag2.async ビットは 0 に設定されます。

lua_flag2.async ビットの値は、LUA_IN_PROGRESSと等しくないプライマリ リターン コードではなく、テストする必要があります。 (これらの返されるパラメーターの詳細については、個々の動詞の説明を参照してください)。

非同期動詞補完

一部の LUA 動詞 (たとえば、 RUI_PURGE) は、ローカル処理後にすばやく完了します。 ただし、ほとんどの動詞は、ローカル ノードまたはホスト アプリケーションとの間でメッセージを送受信する必要があるため、完了するまでに時間がかかります。

LUA が動詞を完了する前にリモート LU またはローカル ノードからの情報を待機する必要がある場合、動詞は非同期的に完了します。

この場合、 lua_flag2.async ビットは 1 に設定されます。 通常、プライマリ リターン コードも LUA_IN_PROGRESS に設定されますが、この値は依存できません。 lua_flag2.async ビットの値をテストする必要があります。 アプリケーションで他の処理を実行したり、動詞が完了したことを LUA から通知するまで待ったりできるようになりました。 LUA は、プライマリ リターン コードを最終的な値に設定し、 lua_flag2.async を 1 に設定したままにすることで、この通知を発行します。

動詞が完了すると、LUA は環境に応じて次の処理を行います。

  • Windows では、2 種類の通知が可能です。 LUA アプリケーションは、次のいずれかを実行します。

    WaitForSingleObject または WaitForMultipleObject を発行します。

    または

    "WinRUI/WinSLI" 通知メッセージを WinRUI/WinSLI メッセージのウィンドウ ハンドルに投稿します。

    Windows で非同期通知を受信するには、 WaitForSingleObject または WaitForMultipleObject を 使用するイベント メソッドが推奨されます。

  • Windows 環境では、"WinRUI/WinSLI" 通知メッセージを WinRUIWinSLI メッセージのウィンドウ ハンドルに投稿することで、非同期要求の/完了を通知します。 ウィンドウ ハンドルが、 WinRUI エントリ ポイントと WinSLI エントリ ポイントに渡される最初のパラメーターとして追加されました。