# 配信要求API

配信要求または再配信要求を発行するAPIです。

## 構文

    INT  __stdcall  utlsend( LPCSTR lpszFileID , LPCSTR lpszHostName ,
                    BOOL bResend , SHORT nPriority , BOOL bSync , INT nWait ,
                    LPCSTR lpszFileName , LPCSTR lpszGroup , BOOL bNp );

## パラメーター説明

LPCSTR lpszFileID（IN）

  配信要求をするファイルIDを指定

  50バイト以内の文字列で指定します。省略する場合は“NULL”を指定します。

LPCSTR lpszHostName（IN）

  配信時の動的配信先ホスト名、または再配信要求時のホスト名を指定

  68バイト以内の文字列で指定します。

  このパラメーターを使用するためには、システム動作環境設定ファイルの動的パラメータ指定（dynparam）を「動的変更可能」に設定する必要があります。

  動的パラメータ指定の詳細は、以下を参照してください。

  HULFT10 for Windows アドミニストレーション マニュアル : 集配信

BOOL bResend（IN）

  再配信フラグを指定

  TRUE

    : 再配信要求を指定

  FALSE

    : 配信要求を指定

SHORT nPriority（IN）

  転送優先度を指定

  “1”～“256”の範囲で指定します。省略する場合は“0”を指定してください。

BOOL bSync（IN）

  同期転送フラグを指定

  再配信要求（bResend=TRUE）の場合は、同期転送指定はできません。

  TRUE

    : 同期転送する

  FALSE

    : 同期転送しない

INT nWait（IN）

  同期転送時の処理結果受信待ち時間を指定（秒）

  同期転送時に処理結果を受け取るために同期をとる時間を、“10”～“259200”の範囲で指定します。この時間に至ると、たとえ配信中であっても処理を戻します。その場合、転送結果は戻りませんので注意してください。

  同期転送指定の場合（bSync=TRUE）のみ有効となります。同期転送しない場合（bSync=FALSE）は“0”を指定します。

  同期転送指定時に“0”を指定した場合、システム動作環境設定ファイルのソケットリードタイムアウトで設定された値を使用します。

LPCSTR lpszFileName（IN）

  配信したいファイル名を指定

  200バイト以内の絶対パスで指定します。省略する場合は“NULL”を指定します。

  配信時は、省略すると、配信管理情報に登録されている配信ファイル名が設定されます。このパラメーターを使用するためには、システム動作環境設定ファイルの動的パラメータ指定（dynparam）を「動的変更可能」に設定する必要があります。動的パラメータ指定の詳細は、以下を参照してください。

  HULFT10 for Windows アドミニストレーション マニュアル : 集配信

  再配信時は、すでに再配信待ち状態にあるファイル名を指定してください。再配信ファイルを動的に指定するパラメーターではありません。省略すると、パラメーターに指定されたホスト名またはファイルIDに一致したすべての転送の再配信が行われます。

LPCSTR lpszGroup（IN）

  配信したい転送グループIDを指定

  50バイト以内の文字列で指定します。省略する場合は“NULL”を指定します。省略時は配信管理情報に登録されている、転送グループIDが設定されます。このパラメーターを使用するためには、システム動作環境設定ファイルの動的パラメータ指定（dynparam）を「動的変更可能」に設定する必要があります。動的パラメータ指定の詳細は、以下を参照してください。

  HULFT10 for Windows アドミニストレーション マニュアル : 集配信

BOOL bNp（IN）

  チェックポイントフラグを指定

  配信要求（bResend=FALSE）の場合は、必ず“FALSE”を指定してください。

  TRUE

    : ファイルの先頭から再配信要求を行う

  FALSE

    : チェックポイント再配信要求を行う

## 戻り値

正常時は「0」です。エラー時のステータスはutlsend.exeのエラーコードと同様です。

詳細は、以下を参照してください。

HULFT10 for Windows エラーコード・メッセージ : 配信要求コマンド（utlsend.exe）

## 使用例

### Visual C++から使用する場合

    #include <windows.h>
    #include <stdio.h>

    typedef INT (__stdcall *LPUTLSEND)(
        LPCSTR lpszFileID, LPCSTR lpszHostName, BOOL bResend,
        SHORT nPriority, BOOL bSync, INT nWait, LPCSTR lpszFileName,
        LPCSTR lpszGroup, BOOL bNp);

    int main(int argc, char *argv[])
    {
        CHAR szFileID[50+1];
        CHAR szHostName[68+1];
        SHORT nPriority;
        BOOL bResend;
        BOOL bSync;
        INT nWait;
        CHAR szFileName[200+1];
        CHAR szGroup[50+1];
        BOOL bNp;
        HMODULE hHulDll;
        HMODULE hApiDll;
        LPUTLSEND lpUtlsend;
        INT nStatus;

        strcpy_s(szFileID, sizeof(szFileID), "TEST0001");
        strcpy_s(szHostName, sizeof(szHostName), "");
        bResend = FALSE;
        nPriority = 50;
        bSync = TRUE;
        nWait = 300;
        strcpy_s(szFileName, sizeof(szFileName), "");
        strcpy_s(szGroup, sizeof(szGroup), "");
        bNp = FALSE;

        hApiDll = LoadLibraryEx("C:\\HULFT Family\\hulft10\\bin\\hulapi.dll", NULL,
        LOAD_WITH_ALTERED_SEARCH_PATH);
        if (hApiDll == NULL)
        {
            printf("Unable to load hulapi.dll."
                "(Error code = %lu)\n", GetLastError());
            FreeLibrary(hHulDll);
            return 2;
        }
        lpUtlsend = (LPUTLSEND)GetProcAddress(hApiDll, "utlsend");
        if (lpUtlsend == NULL)
        {
            printf("Unable to retrieves the address of HULFT API."
                "(Error code=%lu)\n", GetLastError());
            FreeLibrary(hApiDll);
            FreeLibrary(hHulDll);
            return 3;
        }
        nStatus = lpUtlsend(szFileID, szHostName, bResend, nPriority, bSync, nWait,
                          szFileName, szGroup, bNp);
        if (nStatus == 0)
        {
            printf("Terminated normally.\n");
        }
        else
        {
            printf("Error occurred when calling HULFT API."
                "(Returned value=%d)\n", nStatus);
        }
        FreeLibrary(hApiDll);
        FreeLibrary(hHulDll);
        return 0;
    }