機械翻訳について

Java Debug Wire Protocol Transport Interface (jdwpTransport)

トランスポートは、一連の関数としてダイナミック・ライブラリ(DLLまたは共用ライブラリと呼ばれることもある)に実装されます。 ライブラリは、起動時にJDWPエージェント(またはほかのエージェント)によって呼び出されるonload関数をエクスポートします。

JVMTIと同様に、jdwpTransport関数には、環境ポインタと呼ばれるインタフェース・ポインタを介してアクセスします。 環境ポインタは環境へのポインタであり、型はjdwpTransportEnv*です。 環境ポインタは、onload関数からJDWPエージェント(またはほかのエージェント)に返されます。

トランスポートは、1つの環境または複数の環境をサポートする場合があります。 つまり、トランスポートは同時に1つのエージェントだけで使用されることも、複数のエージェントで使用されることもあります。 トランスポートが複数の環境をサポートする場合は、onload関数を呼び出すたびに新しい環境ポインタが返されます。 トランスポートが1つの環境のみをサポートする場合、onload関数の2回目以降の呼出しはエラーを返します。

トランスポートはスレッドセーフです。また、jdwpTransport関数は複数の並列スレッドで使用できます。 たとえば、あるスレッドがパケットを待機するjdwpTransport ReadPacket関数でブロックされ、別のスレッドがWritePacket関数を呼び出してパケットを書き込むことができます。

ほとんどの場合、jdwpTransport関数は戻りステータスを示すjdwpTransportError値を返します。 関数によっては、呼出し側の関数で指定されたポインタにより、これ以外の値を返します。 戻り値の値がjdwpTransport関数によって割り当てられる場合、この関数は、エージェントが指定するメモリー割当てルーチンを使用します。 メモリー割当てルーチンは、onload関数を介して、起動時にトランスポートに対して指定されます。

エラー(つまり、jdwpTransport関数の1つがJDWPTRANSPORT_ERROR_NONE以外の値を返します)の場合、その後、エラーを表す文字列は、jdwpTransport関数GetLastErrorへのコールによって取得できます。 エラーは、スレッドごとに記録されます。 GetLastError関数は、現在のスレッドで発生した最後のエラーのみを表す文字列を返します。

トランスポートの実装の開発

トランスポート・ライブラリの開発には、各種規則とC/C++の定義を呼び出すC言語をサポートする任意のネイティブ言語を使用できます。

jdwpTransportインタフェースの使用に必要な関数、データ・タイプ、および定数定義は、インクルード・ファイルjdwpTransport.hで定義されています。これらの定義を使用するには、インクルード・パスにJava SEインクルード・ディレクトリを追加します:

#include "jdwpTransport.h"

トランスポートの起動

トランスポート・ライブラリは、次のプロトタイプを使用してonload関数をエクスポートする必要があります:

JNIEXPORT jint JNICALL
jdwpTransport_OnLoad(JavaVM *jvm,
                     jdwpTransportCallback *callback,
                     jint version,
                     jdwpTransportEnv** env);

この関数は、ライブラリのロード時にJDWPなどのエージェントによって呼び出されます。

jvm引数は、JNIのGetJavaVM関数を呼び出すことでエージェントによって取得される「JNI起動インタフェース」です。

callback引数は、トランスポート実装によって割り当てられた戻り値にメモリーを割り当てるためにトランスポートが使用する必要があるメモリー管理ルーチンの関数表へのポインタです:

typedef struct jdwpTransportCallback {
    void* (*alloc)(jint numBytes);
    void (*free)(void *buffer);
} jdwpTransportCallback;

callback引数の存続期間はonload関数であるため、トランスポートはjdwpTransport_OnLoad関数のファンクション表のコピーを取得する必要があります。

関数表には2つのエントリがあります。 alloc関数は、メモリー領域を割り当てます。 この関数には、割り当てるバイト数を指定するための1つの引数があります。 割り当てられたメモリーの先頭へのポインタを返します。メモリー・リクエストを受け付けられない場合はNULLを返します。 要求されたバイト数が0の場合は、NULLが返されます。 free関数は、alloc関数を使用して以前に割り当てられたメモリー領域の割当てを解除します。

エージェントが提供するメモリー管理関数はスレッド・セーフであり、これらの関数への呼出しを同期するのにトランスポートの実装は必要ありません。 メモリー管理関数の実装では、jdwpTransport関数を呼び出さないことが保証されています。

versionは、エージェントが予期するトランスポート・インタフェースのバージョンです。 これは、JDWPTRANSPORT_VERSION_1_0として指定する必要があります。

envは、関数によって返される環境ポインタへのポインタです。

トランスポートが正常に初期化されると、jdwpTransport_OnLoad関数はJNI_OKを返します。 初期化に失敗すると、次のエラーのいずれかが返されます:

JNI_ENOMEM
JNI_EVERSION
JNI_EEXIST

初期化を完了するための十分なメモリーがない場合、JNI_ENOMEMが返されます。

version引数のバージョンがJDWPTRANSPORT_VERSION_1_0でない場合は、JNI_EVERSIONが返されます。

JNI_EEXISTは、トランスポートが単一の環境のみをサポートし、onload関数への最初のコールによって環境ポインタが以前に返された場合に返されます。

関数

jdwpTransport関数は、次のようなカテゴリに分類されます。

接続管理

接続管理関数は、デバッガとの接続を確立および切断するときに使用されます。 接続は、デバッガへのおよびデバッガからのJDWPパケットの確実な流れを提供します。 接続に書き込まれるパケットは、書き込まれたとおりの順序でデバッガによって読み取られます。 同様に、デバッガから接続に書き込まれたパケットは、書き込まれたとおりの順序で読み取られます。

接続は、能動的に、または受動的に確立されます。 「アクティブに」接続を確立すると、jdwpTransportのAttach関数がコールされ、デバッガに接続が開始されます。 「パッシブに」接続を確立すると、jdwpTransportのStartListening関数を使用してトランスポートを「リスニング・モード」に配置し、デバッガからの接続をリスニングします。 リスニング・モードになると、Accept関数を使用して接続を受け入れます。 接続の確立方法に関係なく、Close関数を使用して接続をクローズし、IsOpenを使用してデバッガに接続がオープンしているかどうかをテストします。

Attach

jdwpTransportError
Attach(jdwpTransportEnv* env, const char* address,
       jlong attachTimeout, jlong handshakeTimeout)

デバッガに接続します。 デバッガへの接続は、2つのステップで行われます。 最初に、指定されたaddressへの接続が確立されます。 接続が確立されると、デバッガへの接続が実際に確立されたことを確認するためにハンドシェークが実行されます。 ハンドシェークでは、Java Debug Wire Protocol仕様で指定されているASCII文字列JDWP-Handshakeの交換が行われます。

address引数は、デバッガのアドレスを表す文字列へのポインタです。 正確な形式は、トランスポートに固有です(TCP/IPベースのトランスポートの場合は、アドレスにデバッガのホスト名とポート番号が含まれることがある。 シリアル・ポートを介した接続をサポートするトランスポートの場合は、シリアル・ポートのデバイス名になることがある)。

attachTimeout引数は、アタッチ時に使用するタイムアウトを指定します。 トランスポートが接続タイムアウト (GetCapabilitiesを参照してください)をサポートし、attachTimeoutが正の場合は、デバッガに接続するときに使用するタイムアウトをミリ秒 (多少)で指定します。 トランスポートが接続タイムアウトをサポートしていない場合、またはattachTimeoutが0として指定されている場合は、接続時にタイムアウトは使用されません。

handshakeTimeout引数は、デバッガとのハンドシェイク時に使用するタイムアウトを指定します。 トランスポートがハンドシェイク・タイムアウト (GetCapabilitiesを参照してください)をサポートし、handshakeTimeoutが正の場合は、デバッガとのハンドシェイク時に使用するタイムアウトをミリ秒 (多少)で指定します。 ハンドシェーク・タイムアウトの正確な使用法は、トランスポートに固有です。たとえば、ある実装では、デバッガからのJDWP-Handshakeメッセージを待機する間の文字間タイムアウトとしてタイムアウトが使用される場合があります。 別の実装では、タイムアウトを使用してハンドシェークの交換のために許可される合計時間を示します。 一般に、ハンドシェーク・タイムアウトの目的は、トランスポートが有効なデバッガ以外に接続する場合のエラー処理を可能にすることです。 トランスポートがハンドシェイク・タイムアウトをサポートしていない場合、またはhandshakeTimeoutがゼロとして指定されている場合は、ハンドシェイク時にタイムアウトは使用されません。

この関数は、汎用エラー、または次のエラーのいずれかを返します。

JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENT
JDWPTRANSPORT_ERROR_ILLEGAL_STATE
JDWPTRANSPORT_ERROR_IO_ERROR
JDWPTRANSPORT_ERROR_TIMEOUT

addressが無効であるか、timeoutが負の場合、JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENTが返されます。

JDWPTRANSPORT_ERROR_ILLEGAL_STATEは、トランスポートが現在「リスニング・モード」 (StartListeningを参照してください)にある場合、またはデバッガ(IsOpenを参照してください)へのオープン接続がすでにある場合に返されます。

JDWPTRANSPORT_ERROR_IO_ERRORは、デバッガに接続している(アタッチ・タイムアウト以外)エラーが発生した場合に返されます。 初期ハンドシェーク中のエラー(ハンドシェーク・タイムアウトを含む)は、I/Oエラーとみなされます。 I/Oエラーは、トランスポートに固有です。 GetLastErrorを使用すると、エラーの文字列表現を取得できます。

JDWPTRANSPORT_ERROR_TIMEOUTは、トランスポートがアタッチ・タイムアウトをサポートする場合、およびattachTimeout値が正の場合、およびデバッガへの接続をそのattachTimeout期間内に確立できない場合、返されます。

StartListening

jdwpTransportError
StartListening(jdwpTransportEnv* env, const char* address, char** actualAddress);

トランスポートを待機モードにして、デバッガからの接続を待機します。

address引数は、トランスポートがリスニングするローカル・アドレスを表す文字列へのポインタです。 正確な形式は、トランスポートに固有です(TCP/IPベースのトランスポートの場合は、アドレスにローカルTCPポート番号が含まれることがある。 シリアル・ポートを介した接続をサポートするトランスポートの場合は、シリアル・ポートのデバイス名になることがある)。 address引数は、NULLまたは空の文字列(最初の文字は\0です)として指定できます。 その場合、トランスポートは、トランスポートに固有のデフォルトのアドレスで待機します。

actualAddressNULLでない場合、StartListening関数によって返される文字列のアドレスに設定されます。 返される文字列には、トランスポートが待機するアドレスの文字列表現が含まれます。 これは、address引数で指定されたアドレスと異なる場合と異なる場合があります。 この文字列は、jdwpTransport_OnLoad関数がコールされたときにトランスポートに提供された割当てコールバックを使用して割り当てられます。 呼出し側は、返された文字列を解放します。

この関数は、汎用エラー、または次のエラーのいずれかを返します。

JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENT
JDWPTRANSPORT_ERROR_ILLEGAL_STATE
JDWPTRANSPORT_ERROR_IO_ERROR

addressが無効な場合、JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENTが返されます。

JDWPTRANSPORT_ERROR_ILLEGAL_STATEは、デバッガ(IsOpenを参照してください)へのオープン接続がすでに存在する場合、またはトランスポートがすでにリスニング・モードの場合に返されます。

トランスポートをリスニング・モードにする際にエラーが発生すると、JDWPTRANSPORT_ERROR_IO_ERRORが返されます。 エラーの性質はトランスポートに固有です。 GetLastErrorを使って、エラーの文字列表現を取得できます。

StopListening

jdwpTransportError
StopListening(jdwpTransportEnv* env)

トランスポートを待機モードから解放して、デバッガからの接続を待機しないようにします。

トランスポートが待機モードにある場合は、このモードから解放されます。 デバッガへの開いている接続が存在する場合(IsOpenを参照)、その接続はこの関数によって影響を受けません。 つまり、StopListeningはデバッガへの接続を閉じません。 トランスポートが待機モードに入っていない場合、この関数は何も実行せず、エラーは返されません。

この関数は、汎用エラー、または次のエラーのいずれかを返します。

JDWPTRANSPORT_ERROR_IO_ERROR

トランスポートのリスニング・モード解除でエラーが発生した場合、JDWPTRANSPORT_ERROR_IO_ERRORが返されます。 エラーの性質はトランスポートに固有です。 GetLastErrorを使って、エラーの文字列表現を取得できます。

Accept

jdwpTransportError
Accept(jdwpTransportEnv* env, jlong acceptTimeout, jlong handshakeTimeout)

デバッガからの接続を受け入れます。 デバッガからの接続の受け入れは、2つのステップで行われます。 最初に、デバッガによって接続が確立されます。 接続が確立されると、デバッガによって接続が実際に確立されたことを確認するためにハンドシェークが実行されます。 ハンドシェークでは、Java Debug Wire Protocol仕様で指定されているASCII文字列JDWP-Handshakeの交換が行われます。

acceptTimeout引数は、デバッガの接続を待機している間に使用するタイムアウトを指定します。 トランスポートが受け入れタイムアウト (GetCapabilitiesを参照してください)をサポートし、acceptTimeoutが正の場合は、デバッガからの接続の待機時に使用するタイムアウトをミリ秒 (多少)で指定します。 トランスポートが受け入れタイムアウトをサポートしない場合、またはtimeoutが0として指定されている場合は、接続を待機して無期限にブロックします。

handshakeTimeout引数は、デバッガとのハンドシェイク時に使用するタイムアウトを指定します。 トランスポートがハンドシェイク・タイムアウト (GetCapabilitiesを参照してください)をサポートし、handshakeTimeoutが正の場合は、デバッガとのハンドシェイク時に使用するタイムアウトをミリ秒 (多少)で指定します。 ハンドシェーク・タイムアウトの正確な使用法は、トランスポートに固有です。たとえば、ある実装では、デバッガからのJDWP-Handshakeメッセージを待機する間の文字間タイムアウトとしてタイムアウトが使用される場合があります。 別の実装では、タイムアウトを使用してハンドシェークの交換のために許可される合計時間を示します。 一般に、ハンドシェーク・タイムアウトの目的は、デバッガ以外がデバッグ対象への接続を確立する場合のエラー処理を可能にすることです。 トランスポートがハンドシェイク・タイムアウトをサポートしていない場合、またはhandshakeTimeoutがゼロとして指定されている場合は、ハンドシェイク時にタイムアウトは使用されません。

この関数は、汎用エラー、または次のエラーのいずれかを返します。

JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENT
JDWPTRANSPORT_ERROR_ILLEGAL_STATE
JDWPTRANSPORT_ERROR_IO_ERROR
JDWPTRANSPORT_ERROR_TIMEOUT

attachTimeoutまたはhandshakeTimeoutが負の場合、JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENTが返されます。

JDWPTRANSPORT_ERROR_ILLEGAL_STATEは、デバッガ(IsOpenを参照してください)へのオープン接続がすでに存在する場合、またはトランスポートがリスニング・モード(StartListeningを参照してください)でない場合に返されます。

デバッガからの接続の受入れ中にエラー(受け入れタイムアウト以外)が発生した場合は、JDWPTRANSPORT_ERROR_IO_ERRORが返されます。 初期ハンドシェーク中のエラー(ハンドシェーク・タイムアウトを含む)は、I/Oエラーとみなされます。 エラーの性質はトランスポートに固有です。 GetLastErrorを使って、エラーの文字列表現を取得できます。

トランスポートが受け入れタイムアウトをサポートしている場合、およびacceptTimeout値が正の場合、およびデバッガへの接続をそのタイムアウト期間内に確立できない場合、JDWPTRANSPORT_ERROR_TIMEOUTが返されます。

ノート: デバッガからの接続を待機しているAcceptでブロックされているスレッドは、StopListeningを呼び出す別のスレッドによって中断できます。 その場合、Acceptをコールしたスレッドは、I/Oエラーが発生したことを示すJDWPTRANSPORT_ERROR_IO_ERRORを返します。 Acceptでブロックされたスレッドが接続を受け入れ、デバッガとのハンドシェイク処理中である場合、StopListeningは接続を中断しません。

IsOpen

jboolean
isOpen(jdwpTransportEnv* env)

デバッガへの開いている接続が存在するかどうかを指定します。

デバッガにオープン接続がある場合のみ、JNI_TRUEを返します。 それ以外の場合は、JNI_FALSEを返します。

Close

jdwpTransportError
Close(jdwpTransportEnv* env)

デバッガへの開いている接続を閉じます。

デバッガへの開いている接続が存在しない場合(IsOpenを参照)、この関数は何も実行せず、エラーは返されません。

I/O関数(ReadPacketおよびWritePacket)でブロックされているスレッドがある場合、これらのI/O関数はクローズによって中断され、I/Oエラーが発生したことを示すJDWPTRANSPORT_ERROR_IO_ERRORが返されます。

この関数は、汎用エラー、または次のエラーのいずれかを返します。

JDWPTRANSPORT_ERROR_IO_ERROR

接続のクローズ時にエラーが発生した場合は、JDWPTRANSPORT_ERROR_IO_ERRORが返されます。 エラーの性質はトランスポートに固有です。 GetLastErrorを使って、エラーの文字列表現を取得できます。

I/O関数

I/O関数は、JDWPパケットのデバッガからの読み取りおよびデバッガへの書込みに使用されます。

ReadPacket

typedef struct {
    jint len;
    jint id;
    jbyte flags;
    jbyte cmdSet;
    jbyte cmd;
    jbyte *data;
} jdwpCmdPacket;

typedef struct {
    jint len;
    jint id;
    jbyte flags;
    jshort errorCode;
    jbyte *data;
} jdwpReplyPacket;

typedef struct jdwpPacket {
    union {
        jdwpCmdPacket cmd;
        jdwpReplyPacket reply;
    } type;
} jdwpPacket;

jdwpTransportError
ReadPacket(jdwpTransportEnv* env, jdwpPacket* packet)

デバッガに対してオープン接続からJDWPパケットを読み取ります。

この関数は、開いている接続に対してブロック読み取りを実行します。 すべてのJDWPパケットが返されるまで、またはストリーム指向プロトコル・ベースのトランスポートの場合に、ストリームの終わりが検出されるまで無制限にブロックします。

packet引数は、この関数によって移入されるjdwpPacket構造のアドレスです。 packet.type.cmd.lenまたはpacket.type.reply.lenフィールド(パケットがコマンドか応答パケットかによって異なります)には、パケットの長さが移入されます。 ストリームの終わりが検出された場合、lengthフィールドは0に設定され、パケット内の他のすべてのフィールドは未定義になります。 ストリームの終わりが、すべてではない一部のバイトを読み取った後に検出された場合、パケットはI/Oエラーと見なされ、JDWPTRANSPORT_ERROR_IO_ERRORが返されます。 その場合、長さのフィールドは設定されません。 パケット全体が読み取られると、パケットのすべてのフィールドには、ホスト順で値が設定されます。 これは、JDWPパケットを転送するときに必要なビッグ・エンディアンの順序と異なる場合と同じ場合があります。

packet.type.cmd.dataまたはpacket.type.reply.dataフィールド(パケットがコマンドか応答パケットかによって異なります)には、NULLまたはこの関数によって割り当てられたパケット・データへのポインタが移入されます。 パケット・データは、jdwpTransport_OnLoad関数がコールされたときにトランスポートに提供された割当てコールバックを使用して割り当てられます。 呼出し側は、パケット・データを解放します。 パケット・データ(ヘッダーが存在する場合はヘッダーの後のデータ)のレイアウトは、受信したときのバイト順で呼出し側に返されます。

ReadPacket関数は、パケット (最初の4バイトで示されているように)の長さが>= 11バイトであることを確認する以外は、返されたパケットに対して整合性検査を行いません。 lengthフィールドが11バイト未満の場合は、JDWPTRANSPORT_ERROR_IO_ERRORが返されます。

この関数は、汎用エラー、または次のエラーのいずれかを返します。

JDWPTRANSPORT_ERROR_IO_ERROR
JDWPTRANSPORT_ERROR_ILLEGAL_STATE
JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENT

JDWPTRANSPORT_ERROR_IO_ERRORは、読取り時にI/Oエラーが発生した場合、「閉じる」関数をコールする別のスレッドによって接続が非同期的にクローズされた場合、または間違った形式のパケット(lengthフィールドが11バイト未満)が受信された場合に返されます。 I/Oエラーは、トランスポートに固有です。 GetLastErrorを使って、エラーの文字列表現を取得できます。

デバッガ (IsOpenを参照してください)へのオープン接続がない場合、JDWPTRANSPORT_ERROR_ILLEGAL_STATEが返されます。

packetNULLの場合、JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENTが返されます

WritePacket

jdwpTransportError
WritePacket(jdwpTransportEnv* env, const jdwpPacket* packet)

オープン接続にJDWPパケットを書き込みます。

packet引数は、jdwpPacket構造体へのポインタです。 パケット・ヘッダーのすべてのフィールドは、ホスト順で格納される必要があります。 パケット・データ・フィールド(packet.type.cmd.dataまたはpacket.type.reply.data)は、NULL、またはヘッダーの直後に続くパケット・データを含むロケーションへのポインタである必要があります。 パケット・データは、ネットワーク順(ビッグ・エンディアン)で転送の準備ができている必要があります。

この関数は、汎用エラー、または次のエラーのいずれかを返します。

JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENT
JDWPTRANSPORT_ERROR_IO_ERROR
JDWPTRANSPORT_ERROR_ILLEGAL_STATE

packetNULLの場合、またはパケット長フィールド(packet.type.cmd.lenまたはpacket.type.reply.len)が11未満の場合、または11より大きいがパケット・データ・フィールド(packet.type.cmd.dataまたはpacket.type.reply.data)がNULLの場合、JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENT

JDWPTRANSPORT_ERROR_IO_ERRORは、書込み時にI/Oエラーが発生した場合、または「閉じる」関数をコールする別のスレッドによって接続が非同期にクローズされた場合に返されます。 I/Oエラーは、トランスポートに固有です。 GetLastErrorを使って、エラーの文字列表現を取得できます。

デバッガ (IsOpenを参照してください)へのオープン接続がない場合、JDWPTRANSPORT_ERROR_ILLEGAL_STATEが返されます。

その他の関数

GetLastError

jdwpTransportError
GetLastError(jdwpTransportEnv* env, char** msg);

最後のエラーの文字列表現を返します。

エラーが発生した場合、そのエラーはスレッドごとに記録されます。 後続のGetLastErrorをコールすると、最後のI/Oエラーの文字列表現が返されます。

msg引数は、この関数によって返されるnullで終わる文字列へのポインタです。 この文字列は、jdwpTransport_OnLoad関数がコールされたときにトランスポートに提供された割当てコールバックを使用して割り当てられます。 呼出し側は、返された文字列を解放します。

この関数は、汎用エラー、または次のエラーのいずれかを返します。

JDWPTRANSPORT_ERROR_MSG_NOT_AVAILABLE

JDWPTRANSPORT_ERROR_MSG_NOT_AVAILABLEは、このスレッドでI/Oエラーが発生しなかった場合、または最後のエラーの文字列表現が使用可能でない場合に返されます。

GetCapabilities

typedef struct {
    unsigned int can_timeout_attach     :1;
    unsigned int can_timeout_accept     :1;
    unsigned int can_timeout_handshake  :1;
    unsigned int reserved3              :1;
    unsigned int reserved4              :1;
    unsigned int reserved5              :1;
    unsigned int reserved6              :1;
    unsigned int reserved7              :1;
    unsigned int reserved8              :1;
    unsigned int reserved9              :1;
    unsigned int reserved10             :1;
    unsigned int reserved11             :1;
    unsigned int reserved12             :1;
    unsigned int reserved13             :1;
    unsigned int reserved14             :1;
    unsigned int reserved15             :1;
} JDWPTransportCapabilities;

jdwpTransportError
GetCapabilities(jdwpTransportEnv* env, JDWPTransportCapabilities* capabilitiesPtr)

このトランスポートでサポートされているオプションのjdwpTransport機能をcapabilitiesPtr経由で返します。 capabilities構造体には、フラグ名に示されている機能がサポートされているかどうかを示す、いくつかのboolean型のフラグが含まれています。 現在のフラグのセットは、次のとおりです。

boolean型のフラグ Meaning
can_timeout_attach トランスポートでタイム・アウトを使用する接続がサポートされるかどうかを示す
can_timeout_accept トランスポートで受け入れタイム・アウトがサポートされるかどうかを示す
can_timeout_handshake 接続の確立時にデバッガと初期ハンドシェークを実行するときにトランスポートでタイム・アウトがサポートされるかどうかを示す

この関数はエラーを返しません。

汎用エラー

エラー Meaning
JDWPTRANSPORT_ERROR_NONE エラーは発生しなかった。 関数の実行が正常に終了したときに返されるエラー・コード。
JDWPTRANSPORT_ERROR_OUT_OF_MEMORY 関数でメモリーの割当てが必要になったが、これ以上割り当てられるメモリーがなかった。
JDWPTRANSPORT_ERROR_INTERNAL 予期しない内部エラーが発生した。