IVdsIscsiInitiatorAdapter
COM公式ドキュメント
ローカルシステム上の iSCSI イニシエーターアダプターを照会し、操作するためのメソッドを提供します。
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
イニシエーターアダプターのプロパティを返します。
| pInitiatorAdapterProp | VDS_ISCSI_INITIATOR_ADAPTER_PROP* | out | 呼び出し元が割り当てた VDS_ISCSI_INITIATOR_ADAPTER_PROP 構造体のアドレスです。VDS は pwszName メンバー文字列のメモリを割り当てます。呼び出し元は、CoTaskMemFree 関数を使用してこの文字列を解放する必要があります。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値や、VDS 固有の戻り値を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返すこともあります。エラーは VDS 自体、または使用中の基盤となる VDS プロバイダーから発生することがあります。返される可能性のある値には次のものがあります。
| リターンコード/値 | 説明 |
|---|---|
| プロパティが正常に返されました。 | |
|
一部のプロパティは正常に取得されましたが、すべてではありません。デバイスの取り外しなど、すべてのプロパティを取得できない理由は数多くあることに注意してください。 |
イニシエーターアダプターの iSCSI イニシエーターポータルを列挙するオブジェクトを返します。
| ppEnum | IEnumVdsObject** | out | イニシエーターポータルをイニシエーターポータルオブジェクトとして列挙するために使用できる IEnumVdsObject インターフェイスポインターのアドレスです。詳細については、「列挙オブジェクトの操作」を参照してください。呼び出し元は、不要になったインターフェイスおよび各イニシエーターポータルオブジェクトを、IUnknown::Release メソッドを呼び出して解放する必要があります。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値や、VDS 固有の戻り値を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返すこともあります。エラーは VDS 自体、または使用中の基盤となる VDS プロバイダーから発生することがあります。返される可能性のある値には次のものがあります。
| リターンコード | 説明 |
|---|---|
| イニシエーターポータルの列挙が正常に返されました。イニシエーターアダプターにポータルがない場合、列挙は空になります。 |
iSCSI ターゲットへの手動ログインを実行します。
| loginType | VDS_ISCSI_LOGIN_TYPE | in | 実行するログインの種類で、VDS_ISCSI_LOGIN_TYPE によって列挙されます。 |
| targetId | GUID | in | ログイン先のターゲットの VDS_OBJECT_ID です。GUID_NULL は、イニシエーターがポータルを選択することを示します。 |
| targetPortalId | GUID | in | ログイン操作を実行するターゲットポータルの VDS_OBJECT_ID です。GUID_NULL は、イニシエーターがポータルを選択することを示します。 |
| initiatorPortalId | GUID | in | ログイン操作を実行するイニシエーターポータルの VDS_OBJECT_ID です。 |
| ulLoginFlags | DWORD | in | ログインオプションを指定する、VDS_ISCSI_LOGIN_FLAG によって列挙されるフラグです。 |
| bHeaderDigest | BOOL | in | TRUE の場合、イニシエーターはターゲットポータルへのログイン時にヘッダーダイジェストを有効にする必要があります。 |
| bDataDigest | BOOL | in | TRUE の場合、イニシエーターはターゲットポータルへのログイン時にデータダイジェストを有効にする必要があります。 |
| authType | VDS_ISCSI_AUTH_TYPE | in | ターゲットへのログインに必要な認証の種類で、VDS_ISCSI_AUTH_TYPE によって列挙されます。 |
| ppAsync | IVdsAsync** | out | IVdsAsync インターフェイスポインターのアドレスです。VDS は戻り時にこのインターフェイスを初期化します。呼び出し元はこのインターフェイスを解放する必要があります。このインターフェイスを使用して、操作のキャンセル、完了の待機、または状態の照会を行います。このインターフェイスで IVdsAsync::Wait が呼び出され、成功を示す HRESULT 値が返された場合、VDS_ASYNC_OUTPUT 構造体で返される各インターフェイスポインターに対して IUnknown::Release メソッドを呼び出して解放する必要があります。ただし、Wait が失敗を示す HRESULT 値を返した場合、または Wait の pHrResult パラメーターが失敗を示す HRESULT 値を受け取った場合、VDS_ASYNC_OUTPUT 構造体内のインターフェイスポインターは NULL であり、解放する必要はありません。成功または失敗を示す HRESULT 値は、Winerror.h で定義されている SUCCEEDED マクロおよび FAILED マクロを使用してテストできます。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値や、VDS 固有の戻り値を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返すこともあります。エラーは VDS 自体、または使用中の基盤となる VDS プロバイダーから発生することがあります。返される可能性のある値には次のものがあります。
| リターンコード/値 | 説明 |
|---|---|
| ログインが正常に完了しました。 | |
|
別の操作が進行中です。この操作は、前の操作が完了するまで続行できません。 |
指定したターゲットへのすべての iSCSI セッションで、iSCSI ターゲットからの手動ログアウトを実行します。
| targetId | GUID | in | ログアウト対象のターゲットの VDS_OBJECT_ID です。 |
| ppAsync | IVdsAsync** | out | IVdsAsync インターフェイスポインターのアドレスです。VDS は戻り時にこのインターフェイスを初期化します。呼び出し元はこのインターフェイスを解放する必要があります。このインターフェイスを使用して、操作のキャンセル、完了の待機、または状態の照会を行います。このインターフェイスで IVdsAsync::Wait が呼び出され、成功を示す HRESULT 値が返された場合、VDS_ASYNC_OUTPUT 構造体で返される各インターフェイスポインターに対して IUnknown::Release メソッドを呼び出して解放する必要があります。ただし、Wait が失敗を示す HRESULT 値を返した場合、または Wait の pHrResult パラメーターが失敗を示す HRESULT 値を受け取った場合、VDS_ASYNC_OUTPUT 構造体内のインターフェイスポインターは NULL であり、解放する必要はありません。成功または失敗を示す HRESULT 値は、Winerror.h で定義されている SUCCEEDED マクロおよび FAILED マクロを使用してテストできます。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値や、VDS 固有の戻り値を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返すこともあります。エラーは VDS 自体、または使用中の基盤となる VDS プロバイダーから発生することがあります。返される可能性のある値には次のものがあります。
| リターンコード/値 | 説明 |
|---|---|
| ポータルグループが正常に削除されました。 | |
|
ログアウトに失敗しました。 |
|
VDS は、指定したターゲットに一致するセッションを見つけられませんでした。 |
|
少なくとも 1 つのセッションが正常にログアウトしませんでした。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IVdsIscsiInitiatorAdapter "{B07FEDD4-1682-4440-9189-A39B55194DC5}" #usecom global IVdsIscsiInitiatorAdapter IID_IVdsIscsiInitiatorAdapter "{}" #comfunc global IVdsIscsiInitiatorAdapter_GetProperties 3 var #comfunc global IVdsIscsiInitiatorAdapter_QueryInitiatorPortals 4 sptr #comfunc global IVdsIscsiInitiatorAdapter_LoginToTarget 5 int,int,int,int,int,int,int,int,sptr #comfunc global IVdsIscsiInitiatorAdapter_LogoutFromTarget 6 int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IVdsIscsiInitiatorAdapter "{B07FEDD4-1682-4440-9189-A39B55194DC5}" #usecom global IVdsIscsiInitiatorAdapter IID_IVdsIscsiInitiatorAdapter "{}" #comfunc global IVdsIscsiInitiatorAdapter_GetProperties 3 sptr #comfunc global IVdsIscsiInitiatorAdapter_QueryInitiatorPortals 4 sptr #comfunc global IVdsIscsiInitiatorAdapter_LoginToTarget 5 int,int,int,int,int,int,int,int,sptr #comfunc global IVdsIscsiInitiatorAdapter_LogoutFromTarget 6 int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。