DAQmx 19.1以降
タスクの状態を表す内部タスク属性(lvgeneratedAttributes.cpp経由)が新しく追加されました。
EXTERNC LVStatusCode kNILVAIExport kNICCall getTaskI32(
GenericRefObjSession taskID,
nNIDMXA::tAttributeID attributeID,
int32 * paramValue,
LStrHandle * extendedErrorInfoHdlPtr)
属性IDはkAttributeIDTaskInternalTaskStateで、これは0x319Aです。状態属性にはnidmxa/enums.hより、以下の値があります。
enum tInternalTaskState
{
kInternalTaskStateNotVerified = 0,
kInternalTaskStateVerified = 1,
kInternalTaskStateReserved = 2,
kInternalTaskStateCommitted = 3,
kInternalTaskStateRunning = 4,
};
LabVIEWのCLN(ライブラリ関数呼び出しノード)から呼び出す場合は、以下のように設定できます。
- LabVIEWを起動し、ファイル>>新規VIを選択して新しいVIを作成します。
- ウィンドウ >> ブロックダイアグラムを表示を選択して、ブロックダイアグラを開きます。

- ブロックダイアグラム上で右クリックし、表示される関数パレットから、接続>>ライブラリ&実行可能ファイル>>ライブラリ呼び出しノードを選択します。 選択したライブラリ関数呼び出しノード関数をブロックダイアグラムにドロップします。

- ライブラリ関数呼び出しノードをダブルクリックして、その構成ウィンドウを開きます。

- 関数 タブで、 ライブラリ 名またはパスとして「 nilvaiu.* 」と入力します。
- 関数名ドロップダウン ボックスからgetTaskI32関数を選択します。
- スレッドボックスで任意のスレッドで実行を選択し、 呼び出し規約ボックスでCを選択します。

- パラメータタブに切り替えます。
この関数は整数 (対応するタスク状態の値) を返すため、戻り値のタイプを符号付き32ビット整数( Int32)に設定します。
- 左側のパラメータリストから戻り値タイプを選択します
- 現在のパラメータセクションで、 タイプドロップダウン ボックスから数値を選択します。
- データタイプはデフォルトの符号付き 32 ビット整数 (Int32) のままにしてます。
この関数はパラメータとして 3 つの整数と 1 つの文字列を受け取るため、これらを入力として追加します。
- 新しいパラメータを追加するには、プラス記号+記号をクリックします。これにより、パスとして値を持っている符号付き 32 ビット整数 (Int32)がデフォルトで追加されます。
注: 必要に応じてパラメータの名前を変更できますが、DLL の呼び出し方法には影響しません。
今回構成する 3 つの整数パラメータをtaskID、attributeIDやvalueとして名前を付けます。
それぞれのデータタイプを符号なしポインターサイズ整数(uintptr)、符号なし 32 ビット整数(uint32)、
および符号付き 32 ビット整数(Int32) に設定します。
- それぞれの整数パラメータを上記のように名前とデータタイプを編集します。 (プラス+ボタンをクリックして、新規パラメータを追加します。)

]
- プラス +ボタンをクリックして最後のパラメータを追加し、 extendedErrorinfoという名前を付けます。タイプとして文字列を選択し、文字列形式として文字列ハンドルを選択します。
- 必要な入力と出力を作成し、配線します。
- attributeIDの値として 310A を使用してライブラリ呼び出しノードのその端子に配線します。文字 A を挿入できるようにするには、作成した定数制御器をクリックしてプロパティ ウィンドウを開きます。その表示形式を16 進数に変更します。

- ブロックダイアグラム上の関数パレット >>文字列パレットから空文字列定数をドロップし、 extendedErrorinfo入力に配線します。
- タスク入力制御器とタスク出力表示器を作成し、タスク入力制御器を taskIDに配線します。
- 関数パレット>>ストラクチャーパレットからケースストラクチャーを選択しブロックダイアグラムに配置します。
- ケースストラクチャーのデフォルトケース内にDAQmxエラー情報の書き込み関数をブロックダイアグラム上に配置し、そのステータスコード、拡張エラー情報やエラー入力端子それぞれライブラリ呼び出しノードの戻り値出力、extendedErrorinfo出力端子および、エラー出力端子を配線します。
注: DAQmxエラー情報の書き込み関数はDAQmxのMiscellaneous.llb ライブラリにあります。それは以下の場所から確認できます。
(Windows 10) C:\Program Files (x86)\National Instruments\<LabVIEW バージョン>\vi.lib\DAQmx\miscellaneous.llb
(Windows 11)
C:\Program Files\NI\LVAddons\nidaqmx\1\vi.lib\DAQmx 
- ケースストラクチャーを右クリックし、ポップアップウィンドウから、前にケースを追加を選択します。その名前を0とし、以下のようにエラーワイヤーそのままエラー出力端子に配線します。

DAQmx以前
DAQmx LV APIには、タスクの状態を取得するために呼び出すことができる公開エントリポイント(lvtask.cpp経由)があります。
EXTERNC LVStatusCode kNILVAIExport kNICCall DAQGetTaskState(
GenericRefObjSession taskID,
int32* state)
状態出力パラメータには、nidmxa/enums.h より以下の値が含まれます:
enum tInternalTaskState
{
kInternalTaskStateNotVerified = 0,
kInternalTaskStateVerified = 1,
kInternalTaskStateReserved = 2,
kInternalTaskStateCommitted = 3,
kInternalTaskStateRunning = 4,
};
CLNから呼び出す場合は、設定は次のようになります。
上記と同様の手順に従いますが、DAQmx 19.1より前のバージョンでは、「 nilvaiu.*」ライブラリーのDAQGetTaskStateを使用します。

この関数は2つの整数を入力として受け取り、1つの整数(対応するタスク状態値)を返します。
