==================================================
デバイスのオープン／クローズ
==================================================

ライブラリの初期化
==================================

PUCLIBの各種関数を使用するためには、事前に初期化が必要になります。

.. code-block:: cpp

    PUCRESULT result;
    
    result = PUC_Initialize();
    if (PUC_CHK_FAILED(result))
    {
        return 0;
    }

.. note::
   - 初期化はプロセス内で1度だけ実行します。複数回実行する必要はありません。
   - 終了処理を明示的に実行する必要はありません。 プロセス終了時に自動で終了処理を実行します。
   - デバイスとの接続を必要としない関数（デコード処理等）でも初期化は必要になります。



デバイスの検索
==================================

デバイスをオープンするまえに、事前に検索をしてください。

.. code-block:: cpp

    result = PUC_DetectDevice(&detectInfo);
    if (PUC_CHK_FAILED(result))
    {
        return 0;
    }
    if (detectInfo.nDeviceCount == 0)
    {
        return 0;
    }



デバイスのオープン
==================================

デバイスが見つかったら、そのデバイス番号を指定してオープンします。

成功時はデバイスハンドルが返却されます。

デバイスハンドルは、以降の関数を使用する際に必要となります。

.. code-block:: cpp

    PUC_HANDLE hDevice = NULL;

    result = PUC_OpenDevice(detectInfo.nDeviceNoList[0], &hDevice);
    if (PUC_CHK_FAILED(result))
    {
        return;
    }



デバイスのクローズ
==================================

オープンしたデバイスは必ずクローズする必要があります。

.. code-block:: cpp

    result = PUC_CloseDevice(hDevice);
    if (PUC_CHK_FAILED(result))
    {
        return;
    }

